public async Task <IActionResult> CreateTenant([FromServices] IConfiguration configuration, [FromBody] CreateTenantRequest request) { if (request is null) { return(BadRequest(new FailedTenantResponse { Status = false, Errors = new[] { "Request should have a valid data." } })); } //Checking all props have values if (PropertyHelper.IsAnyPropIsNull(request)) { return(BadRequest( new FailedTenantResponse { Status = false, Errors = new[] { $"Tenant properties can not be null." } } )); } if (!ModelState.IsValid) { return(BadRequest(new FailedTenantResponse { Status = false, Errors = ModelState.Values.SelectMany(x => x.Errors.Select(xx => xx.ErrorMessage)) })); } var createTenantResult = await _tenantService.CreateTenantAsync(request.CreateTenantRequestToCreateTenantDto()); if (!createTenantResult.Status) { if (createTenantResult.ServerError) { return(StatusCode(500)); } return(BadRequest(new FailedTenantResponse { Status = createTenantResult.Status, Errors = createTenantResult.Errors })); } string itemUrl = $"{configuration["ApplicationHostAddress"]}/{ApiRoutes.TenantRoute.TenantV1}/{createTenantResult.Tenant.Id}"; return(Created( new Uri(itemUrl), new SuccessTenantCreationResponse { Id = createTenantResult.Tenant.Id, Name = createTenantResult.Tenant.Name, Surname = createTenantResult.Tenant.Surname, PersonalCode = createTenantResult.Tenant.PersonalCode, DateOfBirth = createTenantResult.Tenant.DateOfBirth, PhoneNumber = createTenantResult.Tenant.PhoneNumber, Email = createTenantResult.Tenant.Email, Flat = createTenantResult.Tenant.Flat })); }