public HttpResponseMessage PutInvoiceShippingAddress(InvoiceShippingUpdateData data) { var response = Request.CreateResponse(HttpStatusCode.OK); try { var invoice = _invoiceService.GetByKey(data.InvoiceKey); var shippingLineItems = invoice.ShippingLineItems().ToArray(); if (shippingLineItems.Any()) { foreach (var lineItem in shippingLineItems) { lineItem.ExtendedData.AddAddress(data.Address.ToAddress(), Constants.ExtendedDataKeys.ShippingDestinationAddress); } } else { // Problem. There is no shipping line item when there should be! Needs more investigating as this does very, very occasionally happen MultiLogHelper.Warn <InvoiceApiController>(string.Format("No shipping address line item when trying to save shipping address for {0}", invoice.PrefixedInvoiceNumber())); } _invoiceService.Save(invoice); } catch (Exception ex) { MultiLogHelper.Error <InvoiceApiController>("Failed to save shipping address", ex); response = Request.CreateResponse(HttpStatusCode.NotFound, string.Format("{0}", ex.Message)); } return(response); }
public HttpResponseMessage PutInvoiceShippingAddress(InvoiceShippingUpdateData data) { var response = Request.CreateResponse(HttpStatusCode.OK); try { var invoice = _invoiceService.GetByKey(data.InvoiceKey); var shippingLineItems = invoice.ShippingLineItems().ToArray(); foreach (var lineItem in shippingLineItems) { lineItem.ExtendedData.AddAddress(data.Address.ToAddress(), Constants.ExtendedDataKeys.ShippingDestinationAddress); } _invoiceService.Save(invoice); } catch (Exception ex) { response = Request.CreateResponse(HttpStatusCode.NotFound, string.Format("{0}", ex.Message)); } return(response); }