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(); } }
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(); } }
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>() }; }
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"); }