internal IResult <AdditiveProduct> UpdateAdditiveProduct(UpdateAdditiveProductParameters parameters, DateTime timeStamp)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            var additiveProduct = _productUnitOfWork.AdditiveProductRepository.FindByKey(parameters.ProductKey, p => p.Product);

            if (additiveProduct == null)
            {
                return(new InvalidResult <AdditiveProduct>(null, string.Format(UserMessages.AdditiveProductNotFound, parameters.ProductKey.KeyValue)));
            }

            var additiveType = _productUnitOfWork.AdditiveTypeRepository.FindByKey(parameters.AdditiveTypeKey);

            if (additiveType == null)
            {
                return(new InvalidResult <AdditiveProduct>(null, string.Format(UserMessages.AdditiveTypeNotFound, parameters.AdditiveTypeKey.KeyValue)));
            }

            var update = UpdateProduct(additiveProduct.Product, parameters.Parameters);

            if (!update.Success)
            {
                return(update.ConvertTo <AdditiveProduct>());
            }
            additiveProduct.AdditiveTypeId = additiveType.Id;

            return(new SuccessResult <AdditiveProduct>(additiveProduct));
        }
Пример #2
0
            public void Updates_tblProduct_record_as_expected()
            {
                //Arrange
                var additiveProduct = RVCUnitOfWork
                                      .AdditiveProductRepository
                                      .FindBy(a => true, c => c.Product);

                if (additiveProduct == null)
                {
                    Assert.Inconclusive("No suitable AdditiveProduct to test.");
                }

                var parameters = new UpdateAdditiveProductParameters
                {
                    UserToken       = TestUser.UserName,
                    ProductKey      = additiveProduct.ToAdditiveProductKey(),
                    AdditiveTypeKey = additiveProduct.ToAdditiveTypeKey(),
                    ProductName     = additiveProduct.Product.Name,
                    ProductCode     = additiveProduct.Product.ProductCode
                };

                //Act
                var result = Service.UpdateAdditiveProduct(parameters);

                result.AssertSuccess();
                var resultString = GetKeyFromConsoleString(ConsoleOutput.SynchedTblProduct);

                //Assert
                MockKillSwitch.Verify(k => k.Engage(), Times.Never());

                var prodId = int.Parse(resultString);

                using (var oldContext = new RioAccessSQLEntities())
                {
                    var tblProduct = oldContext.tblProducts.FirstOrDefault(p => p.ProdID == prodId);
                    Assert.AreEqual(parameters.ProductName, tblProduct.Product);
                    Assert.AreEqual(int.Parse(parameters.ProductCode), tblProduct.ProdID);
                    Assert.AreEqual(additiveProduct.AdditiveTypeId, tblProduct.IngrID);
                }
            }