protected IResult UpdatePickedInventory(IInventoryValidator inventoryValidator, Employee employee, DateTime timeStamp, PickedInventory existingPickedInventory, List <PickedInventoryParameters> setPickedInventoryItems, ref List <ModifyInventoryParameters> pendingInventoryModifications, bool moveToDestination = false) { if (employee != null) { existingPickedInventory.EmployeeId = employee.EmployeeId; } existingPickedInventory.TimeStamp = timeStamp; var pickedInventoryModifications = PickedInventoryHelper.CreateModifyPickedInventoryItemParameters(existingPickedInventory, setPickedInventoryItems); if (inventoryValidator != null) { var validatorResult = inventoryValidator.ValidateItems(UnitOfWork.InventoryRepository, pickedInventoryModifications.Where(i => i.DeltaQuantity > 0).Select(i => i.InventoryKey)); if (!validatorResult.Success) { return(validatorResult.ConvertTo <List <PickedInventoryItem> >()); } } var modifyPickedResult = new ModifyPickedInventoryItemsCommand(UnitOfWork).Execute(existingPickedInventory, pickedInventoryModifications); if (!modifyPickedResult.Success) { return(modifyPickedResult); } pendingInventoryModifications = pendingInventoryModifications ?? new List <ModifyInventoryParameters>(); pendingInventoryModifications.AddRange(pickedInventoryModifications.Select(p => p.ToModifySourceInventoryParameters())); if (moveToDestination) { pendingInventoryModifications.AddRange(pickedInventoryModifications.Select(p => p.ToModifyDestinationInventoryParameters())); } return(modifyPickedResult); }
protected IResult UpdatePickedInventory(IInventoryValidator inventoryValidator, Employee employee, DateTime timeStamp, PickedInventory existingPickedInventory, List <PickedInventoryParameters> setPickedInventoryItems, bool moveToDestination = false) { List <ModifyInventoryParameters> inventoryModifications = null; var updateResult = UpdatePickedInventory(inventoryValidator, employee, timeStamp, existingPickedInventory, setPickedInventoryItems, ref inventoryModifications, moveToDestination); if (!updateResult.Success) { return(updateResult.ConvertTo <List <PickedInventoryItem> >()); } var modifyInventoryResult = new ModifyInventoryCommand(UnitOfWork).Execute(inventoryModifications, null); if (!modifyInventoryResult.Success) { return(modifyInventoryResult.ConvertTo <List <PickedInventoryItem> >()); } return(updateResult); }
internal IResult <PickableInventoryReturn> Execute(InventoryPredicateBuilder.PredicateBuilderFilters filters, DateTime currentDate, IInventoryValidator validator, bool includeAllowances) { var splitProjectors = InventoryProjectors.SplitSelectPickableInventorySummary(_inventoryUnitOfWork, currentDate, validator.ValidForPickingPredicates, includeAllowances); var predicateResult = InventoryPredicateBuilder.BuildPredicate(_inventoryUnitOfWork, filters, validator.InventoryFilters); if (!predicateResult.Success) { return(predicateResult.ConvertTo <PickableInventoryReturn>()); } return(new SuccessResult <PickableInventoryReturn>(new PickableInventoryReturn { Items = _inventoryUnitOfWork.InventoryRepository .Filter(predicateResult.ResultingObject) .SplitSelect(splitProjectors) })); }