public async Task <IActionResult> PutAddress(int id, AddressPutDTO addressPutDTO)
        {
            if (addressPutDTO == null)
            {
                throw new ArgumentNullException(nameof(addressPutDTO));
            }

            if (id != addressPutDTO.Id)
            {
                return(BadRequest());
            }

            var addressResult = await _addressRepository.PutAddress(id, addressPutDTO).ConfigureAwait(false);

            if (addressResult == null)
            {
                return(NotFound());
            }

            return(NoContent());
        }
        public async Task <AddressPutDTO> PutAddress(int id, AddressPutDTO addressPutDTO)
        {
            // DTO objects don't exist in the context class and won't be recognized by EF so the code below will not work!!!
            //_context.Entry(address).State = EntityState.Modified;

            if (addressPutDTO == null)
            {
                throw new ArgumentNullException(nameof(addressPutDTO));
            }

            try
            {
                Address address = await _context.Addresses.FirstOrDefaultAsync(a => a.Id == id).ConfigureAwait(false);

                address.Street     = addressPutDTO.Street;
                address.Number     = addressPutDTO.Number;
                address.Extension  = addressPutDTO.Extension;
                address.PostalCode = addressPutDTO.PostalCode;
                address.City       = addressPutDTO.City;

                await _context.SaveChangesAsync().ConfigureAwait(false);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AddressExists(id))
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }

            return(addressPutDTO);
        }