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());
        }
Beispiel #2
0
        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());
        }