示例#1
0
        public async Task <IActionResult> CancelOrder(string id)
        {
            Guid orderId = Guid.Parse(id);

            Order cancelledOrder = await _orderRepository.GetById(orderId);

            cancelledOrder.IsCancelled = true;
            _orderRepository.Update(cancelledOrder);

            var orders = await _orderRepository.GetAll();

            var dishesRepo = await _dishRepository.GetAll();

            var orderDishRepo = await _orderDishRepository.GetAll();

            List <PastOrderModel> pastOrders = new List <PastOrderModel>();

            foreach (Order order in orders)
            {
                var deliveries = await _deliveryRepository.Find(dr => dr.Order.Id == order.Id);

                var Dishes = order.OrderItems.Select(od =>
                                                     new OrderDishModel()
                {
                    Name     = od.Dish.Name,
                    Quantity = od.Quantity
                });

                pastOrders.Add(new PastOrderModel()
                {
                    Id          = order.Id,
                    OrderTime   = order.OrderTime,
                    TotalPrice  = order.TotalPrice.ToString(),
                    Dishes      = Dishes.ToList(),
                    isDelivered = deliveries.FirstOrDefault().IsDelivered,
                    isCancelled = order.IsCancelled
                });
            }

            return(Ok(new { orders = pastOrders }));
        }