public async Task <PaginatedListResult <Company> > Search(CompaniesRequestViewModel viewModel) { if (viewModel == null) { throw new ArgumentNullException(nameof(viewModel)); } var query = BaseQuery(); query = SearchFilter(query, viewModel); query = SearchSort(query, viewModel); return(await query.ToPaginatedListResultAsync(viewModel)); }
protected IQueryable <Company> SearchSort(IQueryable <Company> query, CompaniesRequestViewModel viewModel) { string sortName = viewModel.SortName?.ToUpper(); if (sortName == CompaniesRequestViewModel.OrderFields.CompanyName) { query = query.OrderUsingSearchOptions(viewModel, x => x.Name); } else if (sortName == CompaniesRequestViewModel.OrderFields.ClientCode) { query = query.OrderUsingSearchOptions(viewModel, x => x.ClientCode); } else if (sortName == CompaniesRequestViewModel.OrderFields.ContactPerson) { query = query.OrderUsingSearchOptions(viewModel, x => x.ContactPerson); } else if (sortName == CompaniesRequestViewModel.OrderFields.ContactPhone) { query = query.OrderUsingSearchOptions(viewModel, x => x.ContactPhone); } else if (sortName == CompaniesRequestViewModel.OrderFields.ContactEmail) { query = query.OrderUsingSearchOptions(viewModel, x => x.ContactEmail); } else if (sortName == CompaniesRequestViewModel.OrderFields.InvoiceFrequency) { query = query.OrderUsingSearchOptions(viewModel, x => x.InvoiceFrequency); } else if (sortName == CompaniesRequestViewModel.OrderFields.InvoiceEmail) { query = query.OrderUsingSearchOptions(viewModel, x => x.InvoiceEmail); } else if (sortName == CompaniesRequestViewModel.OrderFields.LastLoginTime) { query = query.OrderUsingSearchOptions(viewModel, x => x.LastInfoUpdateDate); } else { query = query.OrderBy(x => x.Id); } return(query); }
protected IQueryable <Company> SearchFilter(IQueryable <Company> query, CompaniesRequestViewModel viewModel) { return(query); }
public async Task <IActionResult> Search([FromQuery] CompaniesRequestViewModel viewModel) => await HandleResultAsync(() => _service.Search(viewModel));
public async Task <ServiceResult <PaginatedListResult <CompaniesResponseViewModel> > > Search(CompaniesRequestViewModel viewModel) { var paginatedListWithModel = await _repository.Search(viewModel); // Mapping List <CompaniesResponseViewModel> Mapping(List <Company> list) { return(list? .Select(model => new CompaniesResponseViewModel { Id = model.Id, CompanyName = model.Name, ClientCode = model.ClientCode, ContactPerson = model.ContactPerson, ContactPhone = model.ContactPhone, ContactEmail = model.ContactEmail, InvoiceFrequency = model.InvoiceFrequency, InvoiceEmail = model.InvoiceEmail, LastLoginTime = model.LastInfoUpdateDate, // ? IsActive = model.IsActive }) .ToList()); } var paginatedListWithViewModel = paginatedListWithModel.Copy(Mapping); return(ServiceResultFactory.Success(paginatedListWithViewModel)); }