예제 #1
0
        public async Task <ContactDetailResponseModel> UpdateContactAsync(long id, UpdateContactRequestModel requestModel)
        {
            var contact = await GetContactWithPhoneNumbers(id);

            contact = mapper.Map(requestModel, contact);

            var existingContact = await contactRepository.GetFirstAsync(
                x => x.Name == requestModel.Name &&
                x.Address == requestModel.Address &&
                x.Id != id);

            if (existingContact != null)
            {
                var errorMessage = "Contact with given name and address already exist";
                var exception    = new BusinessException(errorMessage);
                exception.AddError(nameof(UpdateContactRequestModel.Name), errorMessage);
                exception.AddError(nameof(UpdateContactRequestModel.Address), errorMessage);
                throw exception;
            }

            await UpdatePhoneNumbers(contact, requestModel);

            await contactRepository.SaveAsync();

            return(mapper.Map <ContactDetailResponseModel>(contact));
        }
        public IActionResult UpdateContact(int contactId, [FromBody] UpdateContactRequestModel model)
        {
            if (contactId <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(contactId));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var contact = _mapper.Map <Contact>(model);

            contact.Id = contactId;
            _contactsService.UpdateContact(contact);

            return(Ok());
        }
예제 #3
0
 private async Task UpdatePhoneNumbers(Contact contact, UpdateContactRequestModel requestModel)
 {
     DeleteSurplusPhoneNumbers(contact, requestModel.PhoneNumbers);
     await AddOrUpdatePhoneNumbers(contact, requestModel.PhoneNumbers);
 }
예제 #4
0
        public async Task <ActionResult <ContactDetailResponseModel> > UpdateContact([FromRoute] long id, [FromBody] UpdateContactRequestModel updateRequest)
        {
            var businessRequest  = mapper.Map <BusinessRequests.UpdateContactRequestModel>(updateRequest);
            var businessResponse = await service.UpdateContactAsync(id, businessRequest);

            return(Ok(mapper.Map <ContactDetailResponseModel>(businessResponse)));
        }