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
            }));
        }
Exemplo n.º 2
0
 public IResult <string> ReceiveInventory(IReceiveInventoryParameters parameters)
 {
     try
     {
         return(_inventoryServiceProvider.ReceiveInventory(parameters));
     }
     catch (Exception ex)
     {
         _exceptionLogger.LogException(ex);
         return(new FailureResult <string>(null, ex.Message));
     }
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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));
        }