Sto integrando un ERP con un rivenditore di terze parti. Al termine dell'elaborazione degli ordini provenienti dalla terza parte, inviamo 2 chiamate API:
- Imposta lo stato dell'ordine su
ReadyToShip
per il quale trasmettiamo le informazioni sulla spedizione. - Imposta lo stato dell'ordine su
Shipped
.
Non sono sicuro di quale dovrebbe essere il tipo di ritorno di questo metodo. Sto usando le eccezioni per notificare al codice chiamante che c'era un problema nell'impostazione dello stato di questi ordini. Per questo motivo, il mio metodo ExportShipments
dovrebbe semplicemente restituire void? O non dovrei restituire nulla, ma forse un bool o anche un oggetto di reso personalizzato?
Il mio codice appare come questo, che usa attualmente bool, comunque penso che l'uso del bool non stia facendo nulla qui perché non restituirà mai false (perché solleverà un'eccezione):
public bool ExportShipments(int iconicOrderId, string shippingProvider, string trackingNumber)
{
TheIconicModels.Order order = orderRepository.GetOrderById(iconicOrderId);
bool setStatusToReadyToShipResult = true, setStatusToShippedResult = true;
if ( order.Statuses.Status == OrderStatusConstants.PENDING)
{
setStatusToReadyToShipResult = orderRepository.SetStatusToReadyToShip(order, shippingProvider, trackingNumber);
}
if ( order.Statuses.Status == OrderStatusConstants.READY_TOS_SHIP)
{
setStatusToShippedResult = orderRepository.SetStatusToShipped(order);
}
return setStatusToReadyToShipResult && setStatusToShippedResult;
}
public bool SetStatusToReadyToShip(Order order, string shippingProvider, string trackingNumber)
{
var parameters = new List<AbstractParam>() {
new OrderItemsParam(order),
new ShippingProviderParam(shippingProvider),
new TrackingNumberParam(trackingNumber),
new DeliveryTypeParam("dropship")
};
TheIconicApiResult result = this.apiService.SendPostRequest("SetStatusToReadyToShip", parameters, String.Empty);
var jsonResponse = JsonConvert.DeserializeObject<RootObject>(result.ResponseBody);
return jsonResponse.SuccessResponse != null;
}
Devo sapere se l'operazione è andata a buon fine come a un livello più alto, contrassegno questa spedizione come inviata.
Idealmente, quale dovrebbe essere il mio metodo di ritorno? Sto pensando a void
e ho appena ottenuto alcune eccezioni da un livello superiore, ma apprezzerei qualche consiglio.