public IEnumerable <PickableInventoryItem> Get(InventoryOrderEnum pickingContext, string contextKey, ProductTypeEnum?productType = null, ProductTypeEnum?inventoryType = null, string lotKey = null, LotTypeEnum?lotType = null, LotHoldType?holdType = null, string ingredientType = null, string productKey = null, string packagingProductKey = null, string warehouseLocationKey = null, string treatmentKey = null, string productSubType = null, string locationGroupName = null, int pageSize = 50, int skipCount = 0) { var service = InventoryPickingServiceFactory.ResolveComponent(pickingContext); var filterParameters = InventoryPickingFilterParametersHelper.ParseFilterParameters(pickingContext, ActionContext); var inventoryOrderResult = service.GetPickableInventoryForContext(filterParameters); inventoryOrderResult.EnsureSuccessWithHttpResponseException(); var filterBySubType = !string.IsNullOrWhiteSpace(productSubType); var result = inventoryOrderResult.ResultingObject .Items .Where(i => filterBySubType == false || i.LotProduct.ProductSubType == productSubType) .OrderBy(i => i.Location.Description) .PageResults(pageSize, skipCount) .Project(i => { if (inventoryOrderResult.ResultingObject.Initializer != null) { inventoryOrderResult.ResultingObject.Initializer.Initialize(i); } }) .To <PickableInventoryItem>(); return(result); }
// DELETE api/{pickedInventoryContext}/{contextKey}/pickedInventory // DELETE api/movements/2013-01-01/pickedInventory public async Task Delete(InventoryOrderEnum pickedInventoryContext, string contextKey) { var pickedInventory = new PickedInventoryDto { PickedInventoryItems = new PickedInventoryItemDto[0] }; await Post(pickedInventoryContext, contextKey, pickedInventory); }
// POST api/{pickedInventoryContext}/{contextKey}/pickedInventory // POST api/movements/2013-01-01/pickedInventory public async Task Post(InventoryOrderEnum pickedInventoryContext, string contextKey, [FromBody] PickedInventoryDto value) { var service = InventoryPickingServiceFactory.ResolveComponent(pickedInventoryContext); var setPickedInventory = value.Map().To <SetPickedInventoryParameters>(); _identityProvider.SetUserIdentity(setPickedInventory); var result = await Task.Run(() => service.SetPickedInventory(contextKey, setPickedInventory)); result.EnsureSuccessWithHttpResponseException(HttpVerbs.Put); }
public async Task Post(InventoryOrderEnum pickingContext, string contextKey, [FromBody] IEnumerable <PickedInventoryItemDto> value) { var service = InventoryPickingServiceFactory.ResolveComponent(pickingContext); var pickedItemParameters = new SetPickedInventoryParameters { PickedInventoryItems = value.Project().To <SetPickedInventoryItemParameters>() }; _identityProvider.SetUserIdentity(pickedItemParameters); var result = await Task.Run(() => service.SetPickedInventory(contextKey, pickedItemParameters)); result.EnsureSuccessWithHttpResponseException(HttpVerbs.Put); }
public static IPickInventoryServiceComponent ResolveComponent(InventoryOrderEnum pickingContext) { switch (pickingContext) { case InventoryOrderEnum.TransWarehouseMovements: return(DependencyResolver.Current.GetService <IWarehouseOrderService>()); case InventoryOrderEnum.Treatments: return(DependencyResolver.Current.GetService <ITreatmentOrderService>()); case InventoryOrderEnum.ProductionBatch: return(DependencyResolver.Current.GetService <IProductionService>()); case InventoryOrderEnum.CustomerOrder: return(DependencyResolver.Current.GetService <ISalesService>()); default: throw new NotSupportedException(string.Format("Unsupported picking context: \"{0}\". The requested InventoryOrderEnum value is not registered as a valid factory option.", pickingContext)); } }
public async Task Delete(InventoryOrderEnum pickedInventoryContext, string contextKey) { await Post(pickedInventoryContext, contextKey, new PickedInventoryItemDto[0]); }
public static FilterInventoryForPickingContextParameters ParseFilterParameters(InventoryOrderEnum pickingContext, HttpActionContext actionContext) { var routeValues = HttpUtility.ParseQueryString(actionContext.Request.RequestUri.Query); var contextKey = actionContext.ActionArguments["contextKey"] as string; switch (pickingContext) { case InventoryOrderEnum.ProductionBatch: return(new FilterInventoryForBatchParameters { BatchKey = contextKey, IngredientKey = routeValues["ingredientType"], }.ParseCommon(actionContext)); case InventoryOrderEnum.CustomerOrder: return(new FilterInventoryForShipmentOrderParameters { OrderKey = contextKey, OrderItemKey = routeValues["orderItemKey"] }.ParseCommon(actionContext)); case InventoryOrderEnum.WarehouseMovements: return(new FilterInventoryForShipmentOrderParameters { OrderKey = actionContext.ActionArguments["contextKey"] as string, OrderItemKey = actionContext.ActionArguments["orderItemKey"] as string }.ParseCommon(actionContext)); case InventoryOrderEnum.Treatments: case InventoryOrderEnum.TransWarehouseMovements: return(new FilterInventoryForShipmentOrderParameters { OrderKey = contextKey, }.ParseCommon(actionContext)); default: throw new ArgumentOutOfRangeException("pickingContext"); } }
internal static Expression <Func <ShipmentInformation, ShipmentReturn> > SelectDetail(InventoryOrderEnum inventoryOrderEnum) { return(SelectShipmentInformation().Merge(s => new ShipmentReturn { InventoryOrderEnum = inventoryOrderEnum })); }
internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn> > > SplitSelectInventoryShipmentOrderDetail(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder) { if (inventoryUnitOfWork == null) { throw new ArgumentNullException("inventoryUnitOfWork"); } var pickOrder = InventoryPickOrderProjectors.SplitSelectDetails(); return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn> { { SplitSelectInventoryShipmentOrderDetailBase(inventoryUnitOfWork, currentDate, inventoryOrder), p => p.Translate().To <InventoryShipmentOrderDetailReturn>() }, { pickOrder, s => i => new InventoryShipmentOrderDetailReturn { PickOrder = s.Invoke(i.InventoryPickOrder), } } }); }
internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn> > > SplitSelectInventoryShipmentOrderDetailBase(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder, ISalesUnitOfWork salesUnitOfWork = null) { if (inventoryUnitOfWork == null) { throw new ArgumentNullException("inventoryUnitOfWork"); } var pickedInventory = PickedInventoryProjectors.SplitSelectDetail(inventoryUnitOfWork, currentDate, salesUnitOfWork); var shipmentInfo = ShipmentInformationProjectors.SelectDetail(inventoryOrder); return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn> { SelectShipmentOrderBase().Merge(o => new InventoryShipmentOrderDetailBaseReturn { PurchaseOrderNumber = o.PurchaseOrderNumber, DateOrderReceived = o.DateReceived, OrderRequestedBy = o.RequestedBy, OrderTakenBy = o.TakenBy }), { pickedInventory, s => i => new InventoryShipmentOrderDetailBaseReturn { PickedInventory = s.Invoke(i.PickedInventory) } }, i => new InventoryShipmentOrderDetailBaseReturn { Shipment = shipmentInfo.Invoke(i.ShipmentInformation) } }); }