public IActionResult CreateOrderForManyTables()
        {
            var viewModel = new CreateOrderForManyTablesViewModel()
            {
                Tables = tables,
                Dishes = dishes
            };

            return(View(viewModel));
        }
        public IActionResult CreateOrderForManyTables(CreateOrderForManyTablesViewModel viewModel)
        {
            if (!viewModel.Tables.Any(x => x.IsSelected))
            {
                ModelState.AddModelError(string.Empty, "Wybierz conajmniej 1 stolik");
                return(View(viewModel));
            }
            if (!viewModel.Dishes.Any(x => x.IsSelected))
            {
                ModelState.AddModelError(string.Empty, "Wybierz co najmniej jedno danie");
                return(View(viewModel));
            }
            var selectedTables = viewModel.Tables.Where(x => x.IsSelected).ToList();
            var selectedDishes = viewModel.Dishes.Where(x => x.IsSelected).ToList();

            foreach (var table in selectedTables)
            {
                var order = new Order();
                if (orders.Any())
                {
                    order.Id = orders.LastOrDefault().Id + 1;
                }
                else
                {
                    order.Id = 1;
                }
                order.TableId = table.Id;
                order.Dishes  = new List <DishOrder>();
                foreach (var dish in selectedDishes)
                {
                    var dishOrder = new DishOrder();
                    if (!dishOrders.Any(x => x.OrderId == order.Id && x.DishId == dish.Id))
                    {
                        if (dishOrders.Any())
                        {
                            dishOrder.Id = dishOrders.LastOrDefault().Id + 1;
                        }
                        else
                        {
                            dishOrder.Id = 1;
                        }
                    }
                    else
                    {
                        dishOrders.Remove(dishOrders.FirstOrDefault(x => x.OrderId == order.Id && x.DishId == dish.Id));
                        if (dishOrders.Any())
                        {
                            dishOrder.Id = dishOrders.LastOrDefault().Id + 1;
                        }
                        else
                        {
                            dishOrder.Id = 1;
                        }
                    }
                    if (dish.Amount == null || dish.Amount <= 0)
                    {
                        ModelState.AddModelError(string.Empty, "Podaj prawidłowe ilości dla wszystkich wybranych dań");
                        return(View(viewModel));
                    }
                    dishOrder.DishId  = dish.Id;
                    dishOrder.Amount  = dish.Amount.Value;
                    dishOrder.OrderId = order.Id;
                    dishOrder.Dish    = dish;
                    dishOrders.Add(dishOrder);
                    order.Dishes.Add(dishOrder);
                }
                orders.Add(order);
            }
            SessionService.SetJson(HttpContext.Session, SessionKeys.OrdersKey, orders);
            TempData["SuccessMessage"] = "Pomyślnie utworzono zamówienia";
            return(RedirectToAction("Index"));
        }