public IActionResult GetPromotionDrinkItem(PromotionDrinkItemView promotionDrinkViewModel)
        {
            var drink     = _drinkRepository.GetDrinkById(promotionDrinkViewModel.DrinkId);
            var drinkSize = drink.DrinkSizes.FirstOrDefault(s => s.Id == promotionDrinkViewModel.DrinkSizeId) ?? drink.PrimarySize;

            if (drinkSize == null)
            {
                throw new ApplicationException("DrinkSize is invalid!");
            }

            Dictionary <int, Topping> toppingDictionary = promotionDrinkViewModel.PromotionDrinkToppings?.Select(t => new KeyValuePair <int, Topping>(t.ToppingId, _toppingRepository.GetToppingById(t.ToppingId))).ToDictionary(k => k.Key, k => k.Value);

            promotionDrinkViewModel.CategoryId = drink.CategoryId;
            promotionDrinkViewModel.DrinkName  = drink.Name;
            promotionDrinkViewModel.Price      = drinkSize.Price;
            promotionDrinkViewModel.PromotionDrinkToppings?.ForEach(t =>
            {
                t.ToppingName  = toppingDictionary?[t.ToppingId]?.Name;
                t.ToppingPrice = toppingDictionary?[t.ToppingId]?.Price;
            });
            promotionDrinkViewModel.FullPrice = drinkSize.Price + (promotionDrinkViewModel.PromotionDrinkToppings?.Sum(t => t.Quantity * t.ToppingPrice) ?? 0);
            promotionDrinkViewModel.DrinkSize = drinkSize.Name;
            promotionDrinkViewModel.Amount    = promotionDrinkViewModel.FullPrice * promotionDrinkViewModel.Quantity;

            return(ViewComponent("PromotionDrinkNewItem", new { promotionDrinkViewModel }));
        }
Ejemplo n.º 2
0
        public IViewComponentResult Invoke(int ppDrinkId, int index)
        {
            var promotionDrink = _privatePromotionRepository.GetPrivatePromotionDrinkById(ppDrinkId);
            var drinkSize      = _drinkRepository.GetSizeByDrinkId(promotionDrink.DrinkId);
            Dictionary <int, Topping> toppingDictionary = promotionDrink.PrivatePromotionDrinkToppings?.Select(t => new KeyValuePair <int, Topping>(t.ToppingId, _toppingRepository.GetToppingById(t.ToppingId))).ToDictionary(k => k.Key, k => k.Value);
            var promotionDrinkViewModel = new PromotionDrinkItemView
            {
                DrinkSize              = promotionDrink.DrinkSizeName,
                DrinkSizeId            = promotionDrink.DrinkSizeId,
                DrinkName              = promotionDrink.Drink.Name,
                Index                  = index,
                Id                     = promotionDrink.Id,
                PromotionId            = promotionDrink.PrivatePromotionId,
                DrinkId                = promotionDrink.DrinkId,
                Quantity               = promotionDrink.Quantity,
                CategoryId             = promotionDrink.Drink.CategoryId,
                Price                  = drinkSize.Price,
                PromotionDrinkToppings = promotionDrink.PrivatePromotionDrinkToppings?.Select(t => new PromotionDrinkToppingView {
                    Id = t.Id,
                    PromotionDrinkId = t.PrivatePromotionDrinkId,
                    Quantity         = t.Quantity,
                    ToppingId        = t.ToppingId
                }).ToList()
            };

            promotionDrinkViewModel.PromotionDrinkToppings?.ForEach(t =>
            {
                t.ToppingName  = toppingDictionary?[t.ToppingId]?.Name;
                t.ToppingPrice = toppingDictionary?[t.ToppingId]?.Price;
            });
            promotionDrinkViewModel.FullPrice = drinkSize.Price + (promotionDrinkViewModel.PromotionDrinkToppings?.Sum(t => t.Quantity * t.ToppingPrice) ?? 0);
            promotionDrinkViewModel.Amount    = promotionDrinkViewModel.FullPrice * promotionDrinkViewModel.Quantity;

            return(View(promotionDrinkViewModel));
        }
Ejemplo n.º 3
0
        public IViewComponentResult Invoke(PromotionDrinkItemView promotionDrinkViewModel)
        {
            var drink     = _drinkRepository.GetDrinkById(promotionDrinkViewModel.DrinkId);
            var drinkSize = drink.DrinkSizes.FirstOrDefault(s => s.Id == promotionDrinkViewModel.DrinkSizeId) ?? drink.PrimarySize;

            if (drinkSize == null)
            {
                throw new ApplicationException("DrinkSize is invalid!");
            }

            promotionDrinkViewModel.PromotionDrinkToppings = promotionDrinkViewModel.PromotionDrinkToppings?.ToList();
            Dictionary <int, Topping> toppingDictionary = promotionDrinkViewModel.PromotionDrinkToppings?.Select(t => new KeyValuePair <int, Topping>(t.ToppingId, _toppingRepository.GetToppingById(t.ToppingId))).ToDictionary(k => k.Key, k => k.Value);

            promotionDrinkViewModel.CategoryId = drink.CategoryId;
            promotionDrinkViewModel.DrinkName  = drink.Name;
            promotionDrinkViewModel.Price      = drinkSize.Price;
            promotionDrinkViewModel.FullPrice  = drinkSize.Price + (promotionDrinkViewModel.PromotionDrinkToppings?.Sum(t => t.Quantity * toppingDictionary?[t.ToppingId].Price) ?? 0);
            promotionDrinkViewModel.DrinkSize  = drinkSize.Name;
            promotionDrinkViewModel.Amount     = (drinkSize.Price + (promotionDrinkViewModel.PromotionDrinkToppings?.Sum(t => t.Quantity * toppingDictionary?[t.ToppingId].Price) ?? 0)) * promotionDrinkViewModel.Quantity;

            return(View(promotionDrinkViewModel));
        }