public async Task UpdateTenant(TenantDto updateInput) { var category = await _tenantCategoryManager.TenantCategories .Where(x => x.Title == updateInput.Category.Title) .Include(x => x.SubCategories) .OrderBy(x => x.Title).ToListAsync(); //var tenant = await _tenantManager.FindByIdAsync(updateInput.Id); var tenant = await _tenantManager.Tenants.Where(x => x.Id == updateInput.Id).Include(x => x.SubCategories).Take(1).FirstOrDefaultAsync(); tenant.Name = updateInput.Name; tenant.TenancyName = updateInput.TenancyName; tenant.IsActive = updateInput.IsActive; tenant.Category = category.FirstOrDefault(); //tenant.ClearSubCategories(); //SubCategories.Clear(); tenant.ClearSubCategories(); //tenant.SubCategories.Clear(); //tenant.SubCategories = new List<TenantWithSubCategory>(); //updateInput.SubCategories.Find(x => x.Title == ) foreach (var subcategory in category.FirstOrDefault().SubCategories.ToList()) { if (updateInput.SubCategories.Exists(x => x.Title == subcategory.Title)) { var twsc = new TenantWithSubCategory(tenant, subcategory); await CurrentUnitOfWork.SaveChangesAsync(); tenant.AddSubCategories(twsc); } } await CurrentUnitOfWork.SaveChangesAsync(); }
public void AddSubCategories( TenantWithSubCategory subCategory) { SubCategories.Add(subCategory); }
public override async Task <TenantDto> Create(CreateTenantDto input) { CheckCreatePermission(); var category = await _tenantCategoryManager.TenantCategories .Where(x => x.Id == input.Category.Id) .Include(x => x.SubCategories) .OrderBy(x => x.Title).ToListAsync(); input.Category = category.FirstOrDefault(); // Create tenant var tenant = ObjectMapper.Map <Tenant>(input); tenant.ConnectionString = input.ConnectionString.IsNullOrEmpty() ? null : SimpleStringCipher.Instance.Encrypt(input.ConnectionString); var defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName); if (defaultEdition != null) { tenant.EditionId = defaultEdition.Id; } await _tenantManager.CreateAsync(tenant); await CurrentUnitOfWork.SaveChangesAsync(); // To get new tenant's id. foreach (var subcategory in category.FirstOrDefault().SubCategories.ToList()) { if (input._subCategories.Exists(x => x.Title == subcategory.Title)) { var twsc = new TenantWithSubCategory(tenant, subcategory); await CurrentUnitOfWork.SaveChangesAsync(); tenant.AddSubCategories(twsc); } } await CurrentUnitOfWork.SaveChangesAsync(); // To get new tenant's id. // Create tenant database _abpZeroDbMigrator.CreateOrMigrateForTenant(tenant); // We are working entities of new tenant, so changing tenant filter using (CurrentUnitOfWork.SetTenantId(tenant.Id)) { // Create static roles for new tenant CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); await CurrentUnitOfWork.SaveChangesAsync(); // To get static role ids // Grant all permissions to admin role var adminRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.Admin); await _roleManager.GrantAllPermissionsAsync(adminRole); // Create admin user for the tenant var adminUser = User.CreateTenantAdminUser(tenant.Id, input.AdminEmailAddress); await _userManager.InitializeOptionsAsync(tenant.Id); CheckErrors(await _userManager.CreateAsync(adminUser, User.DefaultPassword)); await CurrentUnitOfWork.SaveChangesAsync(); // To get admin user's id // Assign admin user to role! CheckErrors(await _userManager.AddToRoleAsync(adminUser, adminRole.Name)); await CurrentUnitOfWork.SaveChangesAsync(); } var tenantDto = await GetTenant(new EntityDto <long>(tenant.Id)); return(tenantDto); }