Exemple #1
0
        public void AddProduct(ProductDto dto)
        {
            using (var trans = context.Database.BeginTransaction())
            {
                if (dto == null) throw new ArgumentNullException(nameof(dto));

                dto.UserId = userManagement.GetCurrentUserId();

                var productId = Guid.NewGuid();
                Int32 productType = GetProductTypeValue(dto.Type);
                Int32 productState = GetProductStateValue(dto.State);

                context.Product.Add(new Product()
                {
                    ProductId = productId,
                    UserId = dto.UserId,
                    Name = dto.Name,
                    Manufacturer = dto.Manufacturer,
                    ProductType = productType,
                    ProductState = productState

                });

                var quantityType = GetQuantityTypeValue(dto.Macro.QuantityType);

                context.ProductsDetails.Add(new ProductDetails()
                {
                    ProductId = productId,
                    Protein = dto.Macro.Protein,
                    Fat = dto.Macro.Fat,
                    Carbohydrates = dto.Macro.Carbohydrates,
                    Calories = dto.Macro.Calories,
                    Quantity = dto.Macro.Quantity,
                    QuantityType = quantityType
                });

                context.SaveChanges();
                trans.Commit();
            }
        }
Exemple #2
0
        public void UpdateProduct(ProductDto dto)
        {
            using (var trans = context.Database.BeginTransaction())
            {
                var p = context.Product.FirstOrDefault(x => x.ProductId.Equals(dto.ProductId));
                var pd = context.ProductsDetails.FirstOrDefault(x => x.ProductId.Equals(dto.ProductId));

                p.Name = dto.Name;
                p.Manufacturer = dto.Manufacturer;
                p.ProductType = GetProductTypeValue(dto.Type);

                pd.Calories = dto.Macro.Calories;
                pd.Fat = dto.Macro.Fat;
                pd.Protein = dto.Macro.Protein;
                pd.Carbohydrates = dto.Macro.Carbohydrates;
                pd.Quantity = dto.Macro.Quantity;
                pd.QuantityType = GetQuantityTypeValue(dto.Macro.QuantityType);

                context.SaveChanges();
                trans.Commit();
            }
        }
Exemple #3
0
        public DailyFoodDto GetDailyFood(DateTime date)
        {
            var guid = userManagement.GetCurrentUserId();
            var test = context.DailyFood.Where(d => d.Date.Year == date.Year
                             && d.Date.Month == date.Month
                             && d.Date.Day == date.Day
                             && d.UserId.Equals(guid)).FirstOrDefault();

            var result = (from d in context.DailyFood
                          join dp in context.DiaryProducts on d.DayId equals dp.DayId
                          join p in context.Product on dp.ProductId equals p.ProductId
                          join pd in context.ProductsDetails on p.ProductId equals pd.ProductId
                          where d.Date.Year == date.Year
                          && d.Date.Month == date.Month
                          && d.Date.Day == date.Day
                          && d.UserId.Equals(guid)
                          select new
                          {
                              d,
                              dp,
                              p,
                              pd
                          });

            var dailyFood = result.Select(x => x.d).FirstOrDefault();

            if (dailyFood != null)
            {
                List<DailyProductDto> daily = new List<DailyProductDto>();
                var foodTypes = result.Select(x => x.dp).ToList();
                var products = result.Select(x => x.p).ToList();
                foreach (var item in result.Select(x => x.dp).ToList())
                {

                    var prod = products.First(x => x.ProductId.Equals(item.ProductId));
                    var pd = result.Select(x => x.pd);
                    var productDetails = pd.Where(x => x.ProductId.Equals(item.ProductId)).FirstOrDefault();
                    var a = new ProductDto()
                    {
                        Name = item.Product.Name,
                        Manufacturer = item.Product.Manufacturer,
                        ProductId = item.ProductId,
                        UserId = item.Product.UserId,
                        Macro = new Macro()
                        {
                            Quantity = productDetails.Quantity,
                            Calories = productDetails.Calories,
                            Carbohydrates = productDetails.Carbohydrates,
                            Fat = productDetails.Fat,
                            Protein = productDetails.Protein,
                            QuantityType = GetQuantityTypeEnum(productDetails.QuantityType)
                        },
                        Type = GetProductTypeEnum(item.Product.ProductType),
                        TypeDisplayName = GetProductTypeEnum(item.Product.ProductType).GetDisplayName(),
                        State = GetProductStateEnum(item.Product.ProductState)

                    };
                    var food = foodTypes.FirstOrDefault(x => x.ProductId.Equals(item.ProductId));
                    var ration = (decimal)food.Quantity/ productDetails.Quantity;
                    var currentQuant = food.Quantity;
                    var currentCalories = Math.Round(productDetails.Calories * ration,2);
                    var currentFat = Math.Round(productDetails.Fat * ration,2);
                    var currentProtein = Math.Round(productDetails.Protein * ration,2);
                    var currentCarbohydrates = Math.Round(productDetails.Carbohydrates * ration,2);

                    daily.Add(new DailyProductDto()
                    {
                        Product = a,
                        CurrentMacro = new Macro()
                        {
                            Quantity = currentQuant,
                            Calories = currentCalories,
                            Carbohydrates = currentCarbohydrates,
                            Fat = currentFat,
                            Protein = currentProtein,
                            QuantityType = GetQuantityTypeEnum(productDetails.QuantityType)
                        },
                        MealType = (MealType)item.MealType
                    });
                }

                return new DailyFoodDto()
                {
                    Day = date,
                    DayCalories = 0,
                    DayProteins = 0,
                    DayCarbohydrates = 0,
                    DayFat = 0,
                    DailyProduct = daily
                };
            }

            return new DailyFoodDto()
            {
                Day = date,
                DayCalories = 0,
                DayProteins = 0,
                DayCarbohydrates = 0,
                DayFat = 0,
                DailyProduct = new List<DailyProductDto>()
            };
        }
Exemple #4
0
        public IActionResult AddEditProduct(AddEditProductView dto)
        {
            try
            {
                var product = new ProductDto()
                {
                    Macro = dto.Macro,
                    Name = dto.Name,
                    Manufacturer = dto.Manufacturer,
                    Type = dto.Type,
                    TypeDisplayName = dto.Type.GetDisplayName()
                };

                if (dto.Mode == Mode.Add)
                    productManagement.AddProduct(product);
                else if (dto.Mode == Mode.Edit)
                {
                    product.ProductId = dto.ProductId;
                    productManagement.UpdateProduct(product);
                }

            }
            catch (Exception exc)
            {
                ModelState.AddModelError("AdditionalValidation", exc.Message);
                return View(dto);
            }

            return RedirectToAction("ProductList", "Diet");
        }