public async Task <CustomerPagedVM> GetCustomersAsync(int page, int pageSize, string keywords) { var vm = new CustomerPagedVM { PageIndex = page - 1, PageSize = pageSize, Keywords = keywords }; var query = _context.Customers.Include(d => d.Projects).AsQueryable(); if (!string.IsNullOrEmpty(keywords)) { query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords) || d.Phone.Contains(keywords)); } vm.RowCount = await query.CountAsync(); vm.Customers = await query.OrderByDescending(d => d.CreatedDate) .Skip(vm.PageIndex * vm.PageSize).Take(vm.PageSize).ProjectTo <CustomerVM>(_mapper.ConfigurationProvider).ToListAsync(); return(vm); }
public async Task <CustomerPagedVM> GetCustomersAsync(int page, int pageSize, string keywords, string orderBy, string orderMode, int customerType = 0) { var vm = new CustomerPagedVM { PageIndex = page - 1, PageSize = pageSize, Keywords = keywords, OrderBy = orderBy, OrderMode = orderMode, CustomerType = customerType }; var query = _db.Customers.AsNoTracking().Include(d => d.Projects).AsQueryable(); if (!string.IsNullOrEmpty(keywords)) { query = query.Where(d => d.Name.Contains(keywords) || d.Description.Contains(keywords) || d.Phone.Contains(keywords)); } if (customerType > 0) { query = query.Where(d => d.CustomerType == customerType); } 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.Customers = await query.Skip(vm.PageIndex *vm.PageSize).Take(vm.PageSize).ProjectTo <CustomerVM>(_mapper.ConfigurationProvider).ToListAsync(); return(vm); }