using Bit.Core.Services; using Bit.Infrastructure.EntityFramework.Models; using Bit.Infrastructure.EntityFramework.Repositories; using Bit.Seeder.Factories; using LinqToDB.EntityFrameworkCore; using Microsoft.AspNetCore.Identity; namespace Bit.Seeder.Recipes; public class OrganizationWithUsersRecipe(DatabaseContext db, IPasswordHasher passwordHasher) { public Guid Seed(string name, int users, string domain) { var organization = OrganizationSeeder.CreateEnterprise(name, domain, users); var user = UserSeeder.CreateUser(passwordHasher, $"admin@{domain}"); var orgUser = organization.CreateOrganizationUser(user); var additionalUsers = new List(); var additionalOrgUsers = new List(); for (var i = 0; i < users; i++) { var additionalUser = UserSeeder.CreateUser(passwordHasher, $"user{i}@{domain}"); additionalUsers.Add(additionalUser); additionalOrgUsers.Add(organization.CreateOrganizationUser(additionalUser)); } //db.Add(organization); db.Add(user); //db.Add(orgUser); db.SaveChanges(); // Use LinqToDB's BulkCopy for significant better performance //db.BulkCopy(additionalUsers); //db.BulkCopy(additionalOrgUsers); return organization.Id; } }