internal static IWarehouse ToWarehouse(this WarehouseDisplay warehouseDisplay, IWarehouse destination)
        {
            if (warehouseDisplay.Key != Guid.Empty)
            {
                destination.Key = warehouseDisplay.Key;
            }
            destination.Name        = warehouseDisplay.Name;
            destination.Address1    = warehouseDisplay.Address1;
            destination.Address2    = warehouseDisplay.Address2;
            destination.Locality    = warehouseDisplay.Locality;
            destination.Region      = warehouseDisplay.Region;
            destination.PostalCode  = warehouseDisplay.PostalCode;
            destination.CountryCode = warehouseDisplay.CountryCode;
            destination.Phone       = warehouseDisplay.Phone;
            destination.Email       = warehouseDisplay.Email;
            destination.IsDefault   = warehouseDisplay.IsDefault;

            foreach (var warehouseCatalogDisplay in warehouseDisplay.WarehouseCatalogs)
            {
                IWarehouseCatalog destinationWarehouseCatalog;

                var matchingItems = destination.WarehouseCatalogs.Where(x => x.Key == warehouseCatalogDisplay.Key);
                if (matchingItems.Any())
                {
                    var existingWarehouseCatalog = matchingItems.First();
                    if (existingWarehouseCatalog != null)
                    {
                        destinationWarehouseCatalog = existingWarehouseCatalog;

                        destinationWarehouseCatalog = warehouseCatalogDisplay.ToWarehouseCatalog(destinationWarehouseCatalog);
                    }
                }
            }

            return(destination);
        }
        public HttpResponseMessage PutWarehouse(WarehouseDisplay warehouse)
        {
            var response = Request.CreateResponse(HttpStatusCode.OK);

            try
            {
                IWarehouse merchWarehouse = _warehouseService.GetByKey(warehouse.Key);
                merchWarehouse = warehouse.ToWarehouse(merchWarehouse);

                _warehouseService.Save(merchWarehouse);
            }
            catch (Exception ex)
            {
                response = Request.CreateResponse(HttpStatusCode.NotFound, String.Format("{0}", ex.Message));
            }

            return response;
        }