public async Task <ProjectPagedVM> GetProjectsAsync(int page, int pageSize, string keywords) { var vm = new ProjectPagedVM { PageIndex = page - 1, PageSize = pageSize, Keywords = keywords }; var query = _context.Projects.Where(d => d.Archive == false).Include(d => d.Tasks).Include(d => d.UserProjects) .Include(d => d.ManagerNavigation).Include(d => d.Customer).AsQueryable(); if (!string.IsNullOrEmpty(keywords)) { query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords)); } vm.RowCount = await query.CountAsync(); vm.Projects = await query.OrderByDescending(d => d.Id) .Skip(vm.PageIndex * vm.PageSize).Take(vm.PageSize).ProjectTo <ProjectVM>(_mapper.ConfigurationProvider).ToListAsync(); return(vm); }
public async Task <ProjectPagedVM> GetProjectsAsync(int page, int pageSize, string keywords, string orderBy, string orderMode, bool archive, int customerId = 0) { var vm = new ProjectPagedVM { PageIndex = page - 1, PageSize = pageSize, Keywords = keywords, OrderBy = orderBy, OrderMode = orderMode, CustomerId = customerId }; var query = _db.Projects.AsNoTracking().Include(d => d.Customer) .Include(d => d.UserProjects).Include(d => d.ManagerNavigation) .Include(d => d.TaskLists).Where(d => d.Archive == archive).AsQueryable(); if (!string.IsNullOrEmpty(keywords)) { query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords)); } if (customerId > 0) { query = query.Where(d => d.CustomerId == customerId); } if (!string.IsNullOrEmpty(orderBy)) { switch (orderBy) { case "name": if (orderMode == "desc") { query = query.OrderByDescending(d => d.Name); } else { query = query.OrderBy(d => d.Name); } break; case "createdDate": if (orderMode == "desc") { query = query.OrderByDescending(d => d.CreatedDate); } else { query = query.OrderBy(d => d.CreatedDate); } break; default: query = query.OrderByDescending(d => d.CreatedDate); break; } } else { query = query.OrderByDescending(d => d.CreatedDate); } vm.RowCount = await query.CountAsync(); vm.Projects = await query.Skip(vm.PageIndex *vm.PageSize).Take(vm.PageSize).ProjectTo <ProjectVM>(_mapper.ConfigurationProvider).ToListAsync(); return(vm); }