public async Task <int> CalculateDishPrice(ICollection <Ingredient> ingredients, int baseDishId) { var baseDish = await _baseDishService.GetBaseDishWithIngredients(baseDishId); var basedishIngredients = baseDish.BaseDishIngredients.Select(i => i.Ingredient).ToList(); var addedIngredients = ingredients.Where(i => !basedishIngredients.Select(bdi => bdi.IngredientId).Contains(i.IngredientId)).ToList(); return(addedIngredients.Sum(ai => ai.AddExtraPrice) + baseDish.Price); }
public async Task AddDishToCart(int dishId) { var sessionCart = _session.GetString(Constants.CartSession); ICollection <OrderedDish> cart = (sessionCart != null) ? GetSessionCartList(Constants.CartSession) : new List <OrderedDish>(); cart.Add(CopyBaseDishToOrderedDish(await _baseDishService.GetBaseDishWithIngredients(dishId))); SetSessionCartList(Constants.CartSession, cart); }