Как сделать заказ в ASP. NET MVC? - PullRequest
0 голосов
/ 20 марта 2020

У меня очень сложный код. Я разрабатываю веб-приложение для многих ресторанов, где люди могут делать заказы онлайн. У меня есть две таблицы и модели для Order, который содержит информацию о User, и OrderDetails, который имеет MenuItems. Я создал ShoppingCartController с действием ProcessOrder

public ActionResult ProcessOrder(FormCollection frc)
{
        List<Cart> lstCart = (List<Cart>)Session[strCart];

        Order order = new Order()
        {
            Name = frc["Name"],
            UserId = User.Identity.GetUserId(),
            OrderTime = DateTimeOffset.UtcNow,
            PaymentType = "Cash",
            Status = "Processing"
        };

        db.Orders.Add(order);
        db.SaveChanges();

        foreach (Cart cart in lstCart)
        {
            OrderDetail orderDetail = new OrderDetail()
            {
                OrderId = order.Id,
                MenuId = cart.Menu.Id,
                Quantity = cart.Quantity,
                Price = cart.Menu.Price,
                RestaurantId = cart.Menu.RestaurantId
            };

            db.OrderDetails.Add(orderDetail);

            db.SaveChanges();
        }

        Session.Remove(strCart);

        return View("OrderSuccess");
}

Также я создал OrderController для отображения списка заказов:

public ActionResult Index(int? restaurantId = null)
{
    var orders = db.Orders.Include(o => o.User)
                          .Include(p => p.OrderDetails)
                          .OrderByDescending(x => x.Id);
    return View(orders.ToList());
}

Здесь я только что добавил restaurantId параметр.

А теперь я хочу отображать заказы по RestaurantId. Я думал о том, чтобы взять RestaurantId из OrderDetails->Menu->RestaurantId, но я не думаю, что это работает, потому что OrderDetails каждого заказа может иметь много RestaurantId.

Должен ли я добавить RestaurantId столбец в таблицу Order? Можете ли вы предложить подход?

1 Ответ

0 голосов
/ 20 марта 2020

Детали заказа имеют как orderId, так и RestaurantId, то есть таблицу, к которой нужно запросить!

...