public async Task <ActionResult> UpdateVendorAsync(string id, VendorForUpdateDto vendorForUpdateDto) { var vendorEntityToUpdate = await _service.GetVendorAsync(id).ConfigureAwait(false); if (vendorEntityToUpdate == null) { var vendorToAdd = _mapper.Map <Vendor>(vendorForUpdateDto); // This is what makes this PUT idempotent vendorToAdd.Id = id; var vendorAdded = await _service.CreateVendorAsync(vendorToAdd).ConfigureAwait(false); var vendorDtoToReturn = _mapper.Map <VendorDto>(vendorAdded); return(CreatedAtRoute(nameof(GetVendorAsync), new { vendorDtoToReturn.Id }, vendorDtoToReturn)); } // Map the changes from our vendorDto to the entity vendorToUpdate _mapper.Map(vendorForUpdateDto, vendorEntityToUpdate); // Update the databse await _service.UpdateVendorAsync(id, vendorEntityToUpdate).ConfigureAwait(false); return(NoContent()); }
public IActionResult UpdateVendor(int vendorId, VendorForUpdateDto vendor) { var vendorFromRepo = _vendorRepository.GetVendor(vendorId); if (vendorFromRepo == null) { return(NotFound()); } _mapper.Map(vendor, vendorFromRepo); _vendorRepository.UpdateVendor(vendorFromRepo); _vendorRepository.Save(); return(NoContent()); }