public async Task <ActionResult <TenantDTO> > PostTenant(NewTenantRequest tenantRequest) { try { _logger.LogInformation("Creating a new tenant: {NewTenantName} for {OwnerID}, requested by {User}", tenantRequest.Name, tenantRequest.CreatorEmail, User?.Identity?.Name); TenantDTO tenant = await _tenantService.AddTenantAsync(tenantRequest, User?.GetNameIdentifierId() !); _logger.LogInformation("Created a new tenant {NewTenantName} with URL {NewTenantRoute}, and ID {NewTenantID}", tenant.Name, tenant.Route, tenant.Id); return(CreatedAtAction(nameof(GetTenant), new { tenantId = tenant.Id }, tenant)); } catch (DbUpdateException ex) { return(BadRequest((ex.InnerException ?? ex).Message)); } catch (Exception ex) { _logger.LogWarning(ex, "Problem creating tenant with ID {TenantName}", tenantRequest.Name); throw; } }
public async Task <TenantDTO> AddTenantAsync(NewTenantRequest newTenantRequest, string adminId) { Tenant tenant = newTenantRequest.ToTenant(); _context.Tenants.Add(tenant); await _context.SaveChangesAsync(); try { await _permissionService.AddUserPermissionsToTenantAsync(tenant.Id.ToString(), adminId, AppConstants.Roles.TenantAdmin); } catch (Exception ex) { _logger.LogError(ex, "Error setting permission for tenant {tenantName}", newTenantRequest.Name); _context.Tenants.Remove(tenant); await _context.SaveChangesAsync(); throw; } TenantDTO?returnValue = new TenantDTO(tenant); return(returnValue); }
public void All_Values_Are_Copied_To_Tenant(NewTenantRequest tenantRequest) { Tenant tenant = tenantRequest.ToTenant(); AssertAdditions.AllPropertiesAreEqual(tenant, tenantRequest, nameof(tenant.ConcurrencyToken), nameof(tenant.CreatedTime), nameof(tenant.Id)); }