internal static IResult <ReceiveInventoryParameters> ToParsedParameters(this IReceiveInventoryParameters parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } var productKeyResult = KeyParserHelper.ParseResult <IProductKey>(parameters.ProductKey); if (!productKeyResult.Success) { return(productKeyResult.ConvertTo <ReceiveInventoryParameters>()); } var productKey = productKeyResult.ResultingObject.ToProductKey(); PackagingProductKey packagingKey = null; if (!string.IsNullOrWhiteSpace(parameters.PackagingReceivedKey)) { var packagingKeyResult = KeyParserHelper.ParseResult <IPackagingProductKey>(parameters.PackagingReceivedKey); if (!packagingKeyResult.Success) { return(packagingKeyResult.ConvertTo <ReceiveInventoryParameters>()); } packagingKey = packagingKeyResult.ResultingObject.ToPackagingProductKey(); } CompanyKey vendorKey = null; if (!string.IsNullOrWhiteSpace(parameters.VendorKey)) { var vendorKeyResult = KeyParserHelper.ParseResult <ICompanyKey>(parameters.VendorKey); if (!vendorKeyResult.Success) { return(vendorKeyResult.ConvertTo <ReceiveInventoryParameters>()); } vendorKey = vendorKeyResult.ResultingObject.ToCompanyKey(); } var items = new List <ReceiveInventoryItemParameters>(); foreach (var item in parameters.Items) { var parsedItem = item.ToParsedParameters(); if (!parsedItem.Success) { return(parsedItem.ConvertTo <ReceiveInventoryParameters>()); } items.Add(parsedItem.ResultingObject); } return(new SuccessResult <ReceiveInventoryParameters>(new ReceiveInventoryParameters { Parameters = parameters, ProductKey = productKey, PackagingReceivedKey = packagingKey, VendorKey = vendorKey, Items = items })); }
public IResult <string> ReceiveInventory(IReceiveInventoryParameters parameters) { try { return(_inventoryServiceProvider.ReceiveInventory(parameters)); } catch (Exception ex) { _exceptionLogger.LogException(ex); return(new FailureResult <string>(null, ex.Message)); } }
internal static void AssertAsExpected(this IReceiveInventoryParameters parameters, Lot lot) { Assert.AreEqual(parameters.UserToken, lot.Employee.UserName); Assert.AreEqual(parameters.LotType, lot.LotTypeEnum); Assert.AreEqual(parameters.PurchaseOrderNumber, lot.PurchaseOrderNumber); Assert.AreEqual(parameters.ShipperNumber, lot.ShipperNumber); if (!string.IsNullOrWhiteSpace(parameters.VendorKey)) { Assert.AreEqual(parameters.VendorKey, lot.Vendor.ToCompanyKey().KeyValue); } switch (lot.LotTypeEnum.ToProductType()) { case ProductTypeEnum.Additive: Assert.AreEqual(parameters.ProductKey, new AdditiveProductKey(lot.AdditiveLot).KeyValue); Assert.IsNull(lot.ChileLot); Assert.IsNull(lot.PackagingLot); break; case ProductTypeEnum.Chile: Assert.AreEqual(parameters.ProductKey, new ChileProductKey(lot.ChileLot).KeyValue); Assert.IsNull(lot.AdditiveLot); Assert.IsNull(lot.PackagingLot); break; case ProductTypeEnum.Packaging: Assert.AreEqual(parameters.ProductKey, new PackagingProductKey(lot.PackagingLot).KeyValue); Assert.IsNull(lot.AdditiveLot); Assert.IsNull(lot.ChileLot); break; } if (string.IsNullOrWhiteSpace(parameters.PackagingReceivedKey)) { Assert.IsTrue(lot.ReceivedPackaging.Weight <= 0.0); } else { Assert.AreEqual(parameters.PackagingReceivedKey, new PackagingProductKey(lot).KeyValue); } var itemParameters = parameters.Items.ToList(); var inventory = lot.Inventory.ToList(); Assert.AreEqual(itemParameters.Count, inventory.Count); Assert.IsTrue(parameters.Items.All(p => inventory.Count(p.IsAsExpected) == 1)); }
public IResult <string> ReceiveInventory(IReceiveInventoryParameters parameters) { var parsedParametersResult = parameters.ToParsedParameters(); if (!parsedParametersResult.Success) { return(parsedParametersResult.ConvertTo <string>()); } var result = new ReceiveInventoryConductor(_inventoryUnitOfWork).ReceiveInventory(_timeStamper.CurrentTimeStamp, parsedParametersResult.ResultingObject); if (!result.Success) { return(result.ConvertTo <string>()); } _inventoryUnitOfWork.Commit(); var lotKey = result.ResultingObject.ToLotKey(); return(SyncParameters.Using(new SuccessResult <string>(lotKey), lotKey)); }