Ejemplo n.º 1
0
        public async Task <IEnumerable <Order> > GetAllAsync(int pageIndex, int itemsOnPage,
                                                             SortOption byName, bool?hasExecutionDate, bool?completed, bool?overdued, string?searchKey,
                                                             DateTime?startDateTime, DateTime?endDateTime, DateTime?checkDateTime)
        {
            var query = GetActualDataAsQueryable()
                        .AsQueryable();

            query = query.WhereSuidConditions(hasExecutionDate, completed, overdued, searchKey, startDateTime,
                                              endDateTime, checkDateTime);

            query = query.OrderBy(at => at.ExecutionDateTime).ThenBy(at => at.Id);

            query = byName switch
            {
                SortOption.True => query.OrderBy(at => at.Name),
                SortOption.Reversed => query.OrderByDescending(at => at.Name),
                _ => query
            };

            query = query.Skip(itemsOnPage * pageIndex).Take(itemsOnPage);

            var orders = await query.Select(ProjectOrder()).ToListAsync();

            return(orders.Select(Mapper.Map <Entities.Order, Order>));
        }