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()); }
private async Task UpdatePhoneNumbers(Contact contact, UpdateContactRequestModel requestModel) { DeleteSurplusPhoneNumbers(contact, requestModel.PhoneNumbers); await AddOrUpdatePhoneNumbers(contact, requestModel.PhoneNumbers); }
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))); }