public async Task <PagedResult <OrderSessionListModel> > GetOrderSessions(List <string> statusStrings, int page)
        {
            var statuses = StatusService.GetStatusesFromList <OrderSessionStatus>(statusStrings);

            await StatusService.CheckRightsForStatuses(statuses);

            return(DbContext.OrderSessions
                   .Include(os => os.Table)
                   .Include(os => os.Customer)
                   .Include(os => os.Orders)
                   .ThenInclude(o => o.Items)
                   .ThenInclude(oi => oi.MenuItem)
                   .Where(os => statuses.Contains(os.Status) || statuses.Count() == 0)
                   .OrderBy(os => os.ClosedAt ?? DateTime.MinValue).ThenBy(os => os.OpenedAt)
                   .GetPaged(page, PagingConfig.PageSize, out int totalPages)
                   .AsEnumerable()
                   .Select(os => new OrderSessionListModel()
            {
                Id = os.Id,
                TableId = os.TableId,
                TableCode = os.Table?.Code,
                CustomerId = os.CustomerId,
                CustomerName = os.Customer?.Name,
                VoucherId = os.VoucherId,
                InvoiceId = os.InvoiceId,
                Status = Enum.GetName(typeof(OrderSessionStatus), os.Status),
                OpenedAt = os.OpenedAt,
                ClosedAt = os.ClosedAt,
                FullPrice = CalculatePrice(os)
            }).ToList().GetPagedResult(page, PagingConfig.PageSize, totalPages));
        }
Ejemplo n.º 2
0
        public async Task <PagedResult <OrderListModel> > GetOrders(List <string> statusStrings, int page)
        {
            var statuses = StatusService.GetStatusesFromList <OrderStatus>(statusStrings);

            var role = await UserService.GetCurrentUserRole();

            return(DbContext.Orders
                   .Include(o => o.OrderSession)
                   .ThenInclude(os => os.Table)
                   .Include(o => o.Waiter)
                   .Include(o => o.Items)
                   .ThenInclude(oi => oi.MenuItem)
                   .AsEnumerable()
                   .Where(o => StatusService.CanViewStatus(role, o.OrderSession.Status, o.Status) && (statuses.Contains(o.Status) || statuses.Count() == 0))
                   .OrderBy(o => o.ClosedAt ?? DateTime.MinValue).ThenBy(o => o.OpenedAt)
                   .GetPaged(page, PagingConfig.PageSize, out int totalPages)
                   .Select(order => new OrderListModel
            {
                Id = order.Id,
                TableId = order.OrderSession.TableId,
                TableCode = order.OrderSession.Table?.Code,
                WaiterId = order.WaiterUserId,
                WaiterName = order.Waiter.Name,
                Status = Enum.GetName(typeof(OrderStatus), order.Status),
                OpenedAt = order.OpenedAt,
                ClosedAt = order.ClosedAt,
                Price = order.CalculatePrice()
            }).ToList().GetPagedResult(page, PagingConfig.PageSize, totalPages));
        }