using Task = System.Threading.Tasks.Task; namespace Brizco.Repository.Services; public class DbInitializerService( ApplicationContext context, RoleManager roleManager, UserManager userManager, IOptionsSnapshot adminUserSeedOptions, ILogger logger) : IDbInitializerService { public void Initialize() { try { context.Database.Migrate(); logger.LogInformation("Migration SUCCESS !!!!"); } catch (Exception e) { logger.LogError(e, e.Message); } } public async Task SeedDate(bool force = false) { try { await SeedRoles(); var seedAdmin = adminUserSeedOptions.Value.UserSetting; var user = await userManager.FindByNameAsync(seedAdmin.Username); if (user == null) { var adminUser = new ApplicationUser { UserName = seedAdmin.Username, Email = seedAdmin.Email, EmailConfirmed = true, LockoutEnabled = true, FirstName = seedAdmin.FirstName, LastName = seedAdmin.LastName, Gender = Gender.Male, PhoneNumberConfirmed = true, PhoneNumber = seedAdmin.Phone, BirthDate = DateTime.Now.AddYears(-23) }; var adminUserResult = await userManager.CreateAsync(adminUser, seedAdmin.Password); if (adminUserResult.Succeeded) await userManager.AddToRoleAsync(adminUser, seedAdmin.RoleName); } } catch (Exception e) { Console.WriteLine(e); throw; } } public async Task SeedRoles() { var seedAdmin = adminUserSeedOptions.Value.UserSetting; var managerRole = await roleManager.FindByNameAsync(seedAdmin.RoleName); if (managerRole == null) { managerRole = new ApplicationRole { Name = seedAdmin.RoleName, EnglishName = seedAdmin.RoleName, Description = "root admin role" }; var adminRoleResult = await roleManager.CreateAsync(managerRole); foreach (var claim in ApplicationClaims.AllClaims) await roleManager.AddClaimAsync(managerRole, claim); } } public async Task Refactor() { //var roles = await _roleManager.Roles.ToListAsync(); //foreach (var role in roles) //{ // if (role.EnglishName == ApplicationRoles.Manager) // { // var claims = await _roleManager.GetClaimsAsync(role); // foreach (var claim in claims) // await _roleManager.RemoveClaimAsync(role,claim); // foreach (var claim in ApplicationClaims.ManagerClaims) // await _roleManager.AddClaimAsync(role, claim); // } // if (role.EnglishName == ApplicationRoles.ViewerOwner) // { // var claims = await _roleManager.GetClaimsAsync(role); // foreach (var claim in claims) // await _roleManager.RemoveClaimAsync(role, claim); // foreach (var claim in ApplicationClaims.ViewerOwnerClaims) // await _roleManager.AddClaimAsync(role, claim); // } // if (role.EnglishName == ApplicationRoles.SuperVisor) // { // var claims = await _roleManager.GetClaimsAsync(role); // foreach (var claim in claims) // await _roleManager.RemoveClaimAsync(role, claim); // foreach (var claim in ApplicationClaims.SuperVisorClaims) // await _roleManager.AddClaimAsync(role, claim); // } // if (role.EnglishName == ApplicationRoles.Staff) // { // var claims = await _roleManager.GetClaimsAsync(role); // foreach (var claim in claims) // await _roleManager.RemoveClaimAsync(role, claim); // foreach (var claim in ApplicationClaims.StaffClaims) // await _roleManager.AddClaimAsync(role, claim); // } //} } }