public async Task <(IEnumerable <OrderDTO> OrdersForResponse, int FilteredOrdersCount)> GetOrdersAsync(int?skip = null, int?take = null, bool?ascending = null, DateTime?orderDateFrom = null, DateTime?orderDateTo = null, DateTime?deliveryDateFrom = null, DateTime?deliveryDateTo = null, bool?isApproved = null, bool?isDelivered = null) { var query = orderRepository.GetAll(); if (ascending != null) { query = (bool)ascending ? query.OrderBy(o => o.Id) : query.OrderByDescending(o => o.Id); } if (orderDateFrom != null) { query = query.Where(o => o.OrderDate >= orderDateFrom); } if (orderDateTo != null) { query = query.Where(o => o.OrderDate <= orderDateTo); } if (deliveryDateFrom != null) { query = query.Where(o => o.DeliveryDate >= deliveryDateFrom); } if (deliveryDateTo != null) { query = query.Where(o => o.DeliveryDate <= deliveryDateTo); } if (isApproved != null) { query = query.Where(o => o.IsApproved == isApproved); } if (isDelivered != null) { query = query.Where(o => o.IsDelivered == isDelivered); } var filteredOrdersCount = query.Count(); if (skip != null) { query = query.Skip(skip.Value); } if (take != null) { query = query.Take(take.Value); } var orders = await query.ToListAsync(); return(StoreMapper.FromOrdersToOrdersDTO(orders), filteredOrdersCount); }
public async Task <OrderDTO> GetOrderAsync(int idOrder) { var order = await orderRepository.GetAsync(idOrder); return(StoreMapper.FromOrderToOrderDTO(order)); }