Exemple #1
0
        private ProductIngredientSummaryModel summaryIngredientOfProductByPeriod(int productId, DateTime startDate, DateTime endDate)
        {
            var product = db.Product.FirstOrDefault(x => x.productID == productId);

            if (product != null)
            {
                var recipes = db.Recipe.Where(x => x.productID == product.productID);

                int orderSummary = db.Order.Where(x => x.orderDate.Value >= startDate && x.orderDate <= endDate)
                                   .SelectMany(x => x.OderDetail).Where(x => x.productID == product.productID)
                                   .Sum(x => x.productQuantity);

                ProductIngredientSummaryModel results = new ProductIngredientSummaryModel();
                results.product = product;

                foreach (Recipe r in recipes)
                {
                    IngredientSummaryDetail detail = new IngredientSummaryDetail();

                    detail.ingredient = r.Ingredient;
                    detail.amount     = (float)(r.ingredQuantity.Value * orderSummary);

                    results.ingredientDetails.Add(detail);
                }

                return(results);
            }

            return(null);
        }
Exemple #2
0
        private IngredientSummaryModel summaryIngredientByPeriodAndMember(int memberId, DateTime startDate, DateTime endDate)
        {
            var products = db.Order.Where(x => x.orderDate >= startDate && x.orderDate <= endDate).SelectMany(x => x.OderDetail).Select(x => x.Product);
            IngredientSummaryModel result = new IngredientSummaryModel();

            foreach (Product product in products)
            {
                ProductIngredientSummaryModel models = summaryIngredientOfProductByPeriodAndMember(memberId, product.productID, startDate, endDate);
                foreach (var detail in models.ingredientDetails)
                {
                    if (result.ingredientDetails.Any(x => x.ingredient.IngreID == detail.ingredient.IngreID))
                    {
                        result.ingredientDetails.FirstOrDefault(x => x.ingredient.IngreID == detail.ingredient.IngreID).amount += detail.amount;
                    }
                    else
                    {
                        result.ingredientDetails.Add(detail);
                    }
                }
            }
            return(result);
        }