public IActionResult UpdateBusiness(Guid id, [FromBody] BusinessForUpdateDto business)
        {
            if (business == null)
            {
                return(BadRequest());
            }

            if (business.Name == business.Description)
            {
                ModelState.AddModelError(nameof(BusinessForUpdateDto), "The provided description should be different from title");
            }

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            var businessFromRepo = _owpiniRepository.GetBusiness(id);

            if (businessFromRepo == null)
            {
                var businessToAdd = Mapper.Map <Business>(business);
                businessToAdd.Id = id;

                _owpiniRepository.AddBusiness(businessToAdd);

                if (!_owpiniRepository.Save())
                {
                    throw new Exception($"Upserting business {id} failed on save");
                }

                var businessToReturn = Mapper.Map <BusinessDto>(businessToAdd);

                return(CreatedAtRoute("GetBusiness", new { id = businessToReturn.Id }, businessToReturn));
            }

            Mapper.Map(business, businessFromRepo);

            _owpiniRepository.UpdateBusiness(businessFromRepo);

            if (!_owpiniRepository.Save())
            {
                throw new Exception($"Updating business {id} failed on save");
            }

            return(NoContent());
        }
Exemple #2
0
        public async Task <IActionResult> UpdateBusiness(int id, BusinessForUpdateDto businessForUpdateDto)
        {
            var businessFromRepo = await _repo.GetBusiness(id);

            if (businessFromRepo.UserId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            {
                return(Unauthorized());
            }

            _mapper.Map(businessForUpdateDto, businessFromRepo);

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            throw new Exception($"Updating Business {id} failed to save");
        }
        public IActionResult PartiallyUpdateBusiness(Guid id,
                                                     [FromBody] JsonPatchDocument <BusinessForUpdateDto> patchDoc)
        {
            if (patchDoc == null)
            {
                return(BadRequest());
            }

            var businessFromRepo = _owpiniRepository.GetBusiness(id);

            if (businessFromRepo == null)
            {
                var businessDto = new BusinessForUpdateDto();

                patchDoc.ApplyTo(businessDto, ModelState);

                if (businessDto.Description == businessDto.Name)
                {
                    ModelState.AddModelError(nameof(BusinessForUpdateDto),
                                             "The provided description should be different from the name");
                }

                TryValidateModel(businessDto);

                if (!ModelState.IsValid)
                {
                    return(new UnprocessableEntityObjectResult(ModelState));
                }
                var businessToAdd = Mapper.Map <Business>(businessDto);
                businessToAdd.Id = id;

                _owpiniRepository.AddBusiness(businessToAdd);

                if (!_owpiniRepository.Save())
                {
                    throw new Exception($"Upserting business {id} failed on save");
                }

                var businessToReturn = Mapper.Map <BusinessDto>(businessToAdd);
                return(CreatedAtRoute("GetBusiness", new { id = businessToReturn.Id }, businessToReturn));
            }

            var businessToPatch = Mapper.Map <BusinessForUpdateDto>(businessFromRepo);

            patchDoc.ApplyTo(businessToPatch, ModelState);

            if (businessToPatch.Description == businessToPatch.Name)
            {
                ModelState.AddModelError(nameof(BusinessForUpdateDto),
                                         "The provided description should be different than the name");
            }

            TryValidateModel(businessToPatch);

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            Mapper.Map(businessToPatch, businessFromRepo);

            _owpiniRepository.UpdateBusiness(businessFromRepo);

            if (!_owpiniRepository.Save())
            {
                throw new Exception($"Patching business {id} failed on save");
            }

            return(NoContent());
        }