Exemplo n.º 1
0
    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;
        }
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
        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));
        }