public async Task <IActionResult> Put([FromBody] BuildingUpdateDto buildingUpdateDto)
        {
            //Get header token
            if (Request.Headers.TryGetValue("Authorization", out StringValues headerValues))
            {
                var token = _customEncoder.DecodeBearerAuth(headerValues.First());
                if (token != null)
                {
                    var user = await _userService.GetUserAsyncByToken(token);

                    if (user != null)
                    {
                        //Verify if the token exist and is not expire
                        if ((await _authenticationService.CheckIfTokenIsValidAsync(token) && user.IsAdmin == 1) || await _authenticationService.CheckIfTokenIsValidAsync(token, user.UserId))
                        {
                            var buildingApiDto = await _buildingService.UpdateBuildingAsync(buildingUpdateDto);

                            if (buildingApiDto == null)
                            {
                                return(StatusCode(404, "Unable to update building."));
                            }
                            return(Ok(buildingApiDto));
                        }
                        return(StatusCode(401, "Invalid token."));
                    }
                    return(StatusCode(403, "Invalid user."));
                }
                return(StatusCode(401, "Invalid authorization."));
            }
            return(StatusCode(401, "Invalid authorization."));
        }
예제 #2
0
        /// <summary>
        /// Maps the building update dto to building.
        /// </summary>
        /// <returns>The building update dto to building.</returns>
        /// <param name="buildingUpdateDto">Building update dto.</param>
        /// <param name="building">Building.</param>
        public Building MapBuildingUpdateDtoToBuilding(BuildingUpdateDto buildingUpdateDto, Building building)
        {
            if (!string.IsNullOrEmpty(buildingUpdateDto.Address))
            {
                building.Address = buildingUpdateDto.Address;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.Address2))
            {
                building.Address2 = buildingUpdateDto.Address2;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.City))
            {
                building.City = buildingUpdateDto.City;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.City2))
            {
                building.City2 = buildingUpdateDto.City2;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.PostalCode))
            {
                building.PostalCode = buildingUpdateDto.PostalCode;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.Description))
            {
                building.Description = buildingUpdateDto.Description;
            }

            if (!string.IsNullOrEmpty(buildingUpdateDto.Title))
            {
                building.Title = buildingUpdateDto.Title;
            }

            building.IsRent       = buildingUpdateDto.IsRent ?? building.IsRent;
            building.NbMaxRenters = buildingUpdateDto.NbMaxRenters ?? building.NbMaxRenters;
            building.NbPiece      = buildingUpdateDto.NbPiece ?? building.NbPiece;
            building.NbRenters    = buildingUpdateDto.NbRenters ?? building.NbRenters;
            building.NbRoom       = buildingUpdateDto.NbRoom ?? building.NbRoom;
            building.Parking      = buildingUpdateDto.Parking ?? building.Parking;
            building.Price        = buildingUpdateDto.Price ?? building.Price;
            building.Type         = buildingUpdateDto.Type ?? building.Type;
            building.Area         = buildingUpdateDto.Area ?? building.Area;

            return(building);
        }
예제 #3
0
        public IActionResult Put(Guid id, BuildingUpdateDto buildingUpdateDto)
        {
            var building = _repository.FindByIdWithAssociations(id);

            if (building == null)
            {
                return(NotFound());
            }

            _mapper.Map(buildingUpdateDto, building);
            _repository.Update(building);

            if (_repository.SaveChanges())
            {
                return(Ok(_mapper.Map <BuildingReadDto>(building)));
            }
            else
            {
                return(BadRequest());
            }
        }
예제 #4
0
 /// <summary>
 /// Updates the building async.
 /// </summary>
 /// <returns>The building async.</returns>
 /// <param name="buildingUpdateDto">Building update dto.</param>
 public async Task <BuildingApiDto> UpdateBuildingAsync(BuildingUpdateDto buildingUpdateDto)
 {
     return(await _dal.UpdateBuildingAsync(buildingUpdateDto));
 }