예제 #1
0
        /// <summary>
        /// Creates food with its recipe
        /// </summary>
        /// <param name="request">request to create food and ingredents</param>
        public void Create(CreateFoodRequest request)
        {
            //Map request to entities
            var foodEntity = request.Foods.Select(x => new FoodEntity
            {
                ID    = x.ID,
                Name  = x.Name,
                Price = x.Price
            }).ToList();

            var foodRecipeEntities = request.Ingredents.Select(x => new FoodRecipeEntity
            {
                FoodID        = x.FoodID,
                ProductID     = x.ProductID,
                ProductAmount = x.ProductAmount
            }).ToList();

            //Create new db transaction
            using (TransactionScope scope = CreateTransactionScope())
            {
                //Add food on db
                _foodRepository.Add(foodEntity);

                //Add food recipe on db
                _foodRecipeRepository.Add(foodRecipeEntities);

                //Commit transaction
                scope.Complete();
            }
        }
예제 #2
0
        public double calculateAmoutFood(Lactation currentLactation)
        {
            int    windowSize = 7;
            double sumYield   = 0;
            double avgYield   = 0;
            double amoutFood  = 0;

            List <Yield> yield = currentLactation.yields.ToList();

            for (int i = yield.Count - windowSize; i < yield.Count; i++)
            {
                sumYield += yield[i].totalYield;
            }

            avgYield = sumYield / windowSize;
            if (avgYield <= 5)
            {
                //1kg de concentrado para 3kg de leite
                amoutFood = avgYield / 3;
            }
            else
            {
                //1kg de concentrado para 2,5kg de leite produzido -> produzem acima de 5kg
                amoutFood = avgYield / 2.5;
            }

            //Salva a quantidade na base de dados
            foodRepo.Add(new Food {
                date     = DateTime.Now,
                idCow    = currentLactation.idCow,
                quantity = amoutFood
            });

            return(amoutFood);
        }
        public void AddFoodToDbSet()
        {
            var factoryMock   = new Mock <IDbFactory>();
            var contextMock   = new Mock <CustomerContext>();
            var dbSetFoodMock = new Mock <DbSet <Food> >();


            dbSetFoodMock.Setup(x => x.Add(It.IsAny <Food>())).Returns((Food f) => f);
            contextMock.Setup(x => x.Set <Food>()).Returns(dbSetFoodMock.Object);
            factoryMock.Setup(x => x.Init()).Returns(contextMock.Object);

            var expected = new Food {
                Id = 42, Fats = 13
            };

            var repository = new FoodRepository(factoryMock.Object);

            repository.Add(expected);

            contextMock.Verify(x => x.Set <Food>());
            dbSetFoodMock.Verify(x => x.Add(It.Is <Food>(y => y == expected)));
        }