public async Task <IActionResult> OrderPage(AdminPanelOrderPageViewModel model)
        {
            var order = _dbContext.Orders.Include(o => o.OrderItems).FirstOrDefault(o => o.Id == model.OrderId);

            if (order.State != model.OrderState)
            {
                order.State = model.OrderState;
                _dbContext.SaveChanges();
                var success = await _emailSender.SendEmailAsync(
                    model.Email,
                    "Смена статуса заказа",
                    string.Format("Ваш заказ номер {0} сменил статус на \"{1}\"", model.OrderId, model.OrderState));

                if (!success)
                {
                    IOrderStates toHomeOrderStatesManager = new ToHomeDeliveryOrder();
                    IOrderStates toShopOrderStatesManager = new ToShopDeliveryOrder();
                    var          orderStates = DeliveryMethods.DeliveryToHome.GetString == order.DeliveryMethod ?
                                               toHomeOrderStatesManager.GetAllStates() :
                                               toShopOrderStatesManager.GetAllStates();
                    ModelState.AddModelError("", $"Уведомление о смене статуса заказа не может быть отправлено, т.к оно заблокированно по подозрению в спаме.\n");
                    var selectList = orderStates.Select(o => new SelectListItem(o, o));
                    model.OrderStates = selectList;
                    model.OrderItems  = order.OrderItems;
                    model.Address     = order.Address;
                    model.CreateDate  = order.CreateDate;
                    model.TotalCount  = order.TotalCount;
                    model.TotalPrice  = order.TotalPrice;
                    return(View("OrderPage", model));
                }
            }
            return(RedirectToAction("Orders"));
        }
        public IActionResult OrderPage(int orderId)
        {
            var          order = _dbContext.Orders.Include(o => o.OrderItems).FirstOrDefault(o => o.Id == orderId);
            var          user  = _dbContext.Users.FirstOrDefault(u => u.Id == order.UserId);
            IOrderStates toHomeOrderStatesManager = new ToHomeDeliveryOrder();
            IOrderStates toShopOrderStatesManager = new ToShopDeliveryOrder();
            var          orderStates = DeliveryMethods.DeliveryToHome.GetString == order.DeliveryMethod ?
                                       toHomeOrderStatesManager.GetAllStates() :
                                       toShopOrderStatesManager.GetAllStates();
            var selectList = orderStates.Select(o => new SelectListItem(o, o));
            var model      = new AdminPanelOrderPageViewModel()
            {
                OrderId        = orderId,
                OrderState     = order.State,
                DeliveryMethod = order.DeliveryMethod,
                CreateDate     = order.CreateDate,
                Address        = order.Address,
                OrderItems     = order.OrderItems,
                TotalPrice     = order.TotalPrice,
                TotalCount     = order.TotalCount,
                Email          = user.Email,
                OrderStates    = selectList,
            };

            return(View(model));
        }