public IActionResult CreateTenantForProperty(Guid propertyId, [FromBody] TenantForCreationDto tenant) { if (tenant == null) { return(BadRequest()); } if (!_propertyRepository.PropertyExist(propertyId)) { return(NotFound()); } var tenantEntity = Mapper.Map <Tenant>(tenant); _propertyRepository.AddTenantToProperty(propertyId, tenantEntity); if (!_propertyRepository.Save()) { throw new Exception($"Adding tenant {tenant.FirstName} to property {propertyId} failed on save."); } var tenantToReturn = Mapper.Map <TenantDto>(tenantEntity); return(CreatedAtRoute("GetTenant", new { propertyId, id = tenantToReturn.Id }, tenantToReturn)); }
// [Authorize(Policy = "CanWriteTenant")] public async Task <ActionResult <Tenant> > CreateTenant(TenantForCreationDto tenant) { try { if (tenant == null) { _logger.LogError("Tenant object sent from client is null."); return(BadRequest("Tenant object is null")); } if (!ModelState.IsValid) { _logger.LogError("Invalid tenant object sent from client."); return(BadRequest("Invalid model object")); } var tenantEntity = _mapper.Map <Tenant>(tenant); _repository.Tenant.CreateTenant(tenantEntity); _repository.Save(); var createdTenant = _mapper.Map <TenantDto>(tenantEntity); return(CreatedAtRoute("GetTenantById", new { id = createdTenant.TenantId }, createdTenant)); } catch (Exception ex) { _logger.LogError($"Something went wrong inside CreateTenant action: {ex.Message}"); return(StatusCode(500, "Internal server error")); } }
public void CreateTenantForPropertyRerturnsBadRequestIfTenantIsNull() { // Arrange TenantForCreationDto tenant = null; var propertyId = new Guid(); var mockRepository = new Mock <IPropertyRepository>(); var sut = new TenantsController(mockRepository.Object); // Act var result = sut.CreateTenantForProperty(propertyId, tenant) as BadRequestResult; // Assert Assert.That(result, Is.TypeOf <BadRequestResult>()); Assert.That(result.StatusCode, Is.EqualTo(400)); mockRepository.Verify(r => r.PropertyExist(propertyId), Times.Never); }
public async Task <IActionResult> CreateTenant([FromBody] TenantForCreationDto tenant) { try { if (tenant == null) { _logger.LogError("Tenant received is a Null Object."); return(BadRequest("Tenant object is null. Please send full request.")); } if (!ModelState.IsValid) { _logger.LogError("Invalid Tenant object sent from client."); return(BadRequest("Tenant object is not Valid")); } bool landlordExists = await _repositoryWrapper.Landlord.CheckIfLandlordWithAspNetUserIdExist(tenant.AspNetUsersId); bool tenantExists = await _repositoryWrapper.Tenant.CheckIfTenantWithAspNetUserIdExist(tenant.AspNetUsersId); if (landlordExists || tenantExists) { return(BadRequest($"Tenant with this asp_id already exists.")); } bool aspNetUserExist = await _identityService.CheckIfAspNetUserExistByAspNetUserId(tenant.AspNetUsersId); if (!aspNetUserExist) { return(BadRequest($"Cannot create tenant. AspNetUser with given id does not exist in db.")); } bool addressExist = await _repositoryWrapper.Address.CheckIfAddressExistByAddressId(tenant.AddressId); if (!addressExist) { return(BadRequest($"Cannot create tenant. Address with given id does not exist in db.")); } // send confirmation email to landlord ApplicationUser aspNetUser = await _identityService.GetApplicationUserById(tenant.AspNetUsersId); Email email = new Email(aspNetUser.Email, "Registration in service", "\nSerdecznie witamy w naszym serwisie. " + "\nA może dopiero co wynająłeś mieszkanie u kogoś, kto jest klientem RentalAgent i przygotowuje Twój profil do aplikacji? " + "\nJeśli jednak to nie Ty właśnie się zarejestrowałeś używając tego maila, lub nic Ci na ten temat nie wiadomo, koniecznie zgłoś sprawę naszej administracji! " + "\nPozdrawiamy!"); await _emailEmmiter.SendUserRegistrationConfirmationEmail(email); var tenantEntity = _mapper.Map <Tenant>(tenant); _repositoryWrapper.Tenant.CreateTenant(tenantEntity); await _repositoryWrapper.Save(); var createTenant = _mapper.Map <TenantWithAddressDto>(tenantEntity); var address = await _repositoryWrapper.Address.GetAddressById(createTenant.AddressId); createTenant.Address = _mapper.Map <AddressDto>(address); return(CreatedAtRoute("TenantByAspNetUserId", new { id = createTenant.AspNetUsersId }, createTenant)); } catch (Exception e) { _logger.LogError($"Something went wrong inside CreateTenant(tenantForCreationDto) action: {e.ToString()}"); return(StatusCode(500, e.Message)); } }