コード例 #1
0
        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));
        }
コード例 #2
0
        // [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"));
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
            }
        }