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)); }
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)); }