public IResult UpdateInventoryTreatmentOrder(IUpdateTreatmentOrderParameters parameters) { var parsedParameters = new UpdateTreatmentOrderConductorParameters <IUpdateTreatmentOrderParameters>(parameters); if (!parsedParameters.Result.Success) { return(parsedParameters.Result.ConvertTo <InventoryShipmentOrderKey>()); } var updateResult = new UpdateTreatmentOrderConductor(_inventoryShipmentOrderUnitOfWork).Update(_timeStamper.CurrentTimeStamp, parsedParameters); if (!updateResult.Success) { return(updateResult.ConvertTo <InventoryShipmentOrderKey>()); } _inventoryShipmentOrderUnitOfWork.Commit(); var key = updateResult.ResultingObject.ToInventoryShipmentOrderKey(); return(SyncParameters.Using(new SuccessResult <string>(key), new SyncInventoryShipmentOrderParameters { InventoryShipmentOrderKey = key, New = false })); }
internal IResult <TreatmentOrder> Update <TParams>(DateTime timeStamp, UpdateTreatmentOrderConductorParameters <TParams> parameters) where TParams : IUpdateTreatmentOrderParameters { var treatmentOrder = UnitOfWork.TreatmentOrderRepository.FindByKey(parameters.TreatmentOrderKey, o => o.InventoryShipmentOrder.DestinationFacility.Locations, o => o.InventoryShipmentOrder.SourceFacility.Locations, o => o.InventoryShipmentOrder.ShipmentInformation, o => o.InventoryShipmentOrder.PickedInventory.Items.Select(i => i.CurrentLocation), o => o.InventoryShipmentOrder.PickedInventory.Items.Select(i => i.FromLocation), o => o.InventoryShipmentOrder.InventoryPickOrder.Items.Select(i => i.Customer)); if (treatmentOrder == null) { return(new InvalidResult <TreatmentOrder>(null, string.Format(UserMessages.TreatmentOrderNotFound, parameters.TreatmentOrderKey))); } var updateResult = Update(treatmentOrder, timeStamp, parameters); if (updateResult.Success) { var itemCodesResult = SetPickedItemCodes(treatmentOrder.InventoryShipmentOrder, parameters.SetPickedInventoryItemCodes); if (!itemCodesResult.Success) { return(itemCodesResult.ConvertTo <TreatmentOrder>()); } } return(updateResult); }