using AutoMapper; using Bit.Core.Entities; using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Seeder.Recipes; using Bit.Seeder.Services; using Bit.SeederUtility.Configuration; using CommandDotNet; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection; namespace Bit.SeederUtility.Commands; [Command("organization", Description = "Seed an organization and organization users")] public class OrganizationCommand { [DefaultCommand] public void Execute( [Option('n', "Name", Description = "Name of organization")] string name, [Option('u', "users", Description = "Number of users to generate")] int users, [Option('d', "domain", Description = "Email domain for users")] string domain ) { var services = new ServiceCollection(); ServiceCollectionExtension.ConfigureServices(services); var serviceProvider = services.BuildServiceProvider(); using var scope = serviceProvider.CreateScope(); var scopedServices = scope.ServiceProvider; var db = scopedServices.GetRequiredService(); var mapper = scopedServices.GetRequiredService(); var passwordHasher = scopedServices.GetRequiredService>(); var manglerService = scopedServices.GetRequiredService(); var recipe = new OrganizationWithUsersRecipe(db, mapper, passwordHasher, manglerService); recipe.Seed(name: name, domain: domain, users: users); } }