public async Task <PaginatedListResult <Invoice> > Search(InvoicesRequestViewModel 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 <Invoice> SearchSort(IQueryable <Invoice> query, InvoicesRequestViewModel viewModel) { string sortName = viewModel.SortName?.ToUpper(); if (sortName == InvoicesRequestViewModel.OrderFields.Number) { query = query.OrderUsingSearchOptions(viewModel, x => x.Number); } else if (sortName == InvoicesRequestViewModel.OrderFields.Date) { query = query.OrderUsingSearchOptions(viewModel, x => x.Date); } else if (sortName == InvoicesRequestViewModel.OrderFields.SumWithoutKm) { query = query.OrderUsingSearchOptions(viewModel, x => x.NetoSum); } else if (sortName == InvoicesRequestViewModel.OrderFields.SumKm) { query = query.OrderUsingSearchOptions(viewModel, x => x.VatSum); } else if (sortName == InvoicesRequestViewModel.OrderFields.SumBruto) { query = query.OrderUsingSearchOptions(viewModel, x => x.BrutoSum); } else if (sortName == InvoicesRequestViewModel.OrderFields.Client) { query = query.OrderUsingSearchOptions(viewModel, x => x.Customer.Name); } //else if (sortName == InvoicesRequestViewModel.OrderFields.PaymentMethod) // TODO //query = query.OrderUsingSearchOptions(viewModel, x => x.PaymentMethod); else if (sortName == InvoicesRequestViewModel.OrderFields.Seller) { query = query.OrderUsingSearchOptions(viewModel, x => x.Number); } else { query = query.OrderBy(x => x.Id); } return(query); }
protected IQueryable <Invoice> SearchFilter(IQueryable <Invoice> query, InvoicesRequestViewModel viewModel) { return(query); }
public async Task <ServiceResult <PaginatedListResult <InvoicesResponseViewModel> > > Search(InvoicesRequestViewModel viewModel) { var paginatedListWithModel = await _repository.Search(viewModel); // Mapping List <InvoicesResponseViewModel> Mapping(List <Invoice> list) { return(list? .Select(model => new InvoicesResponseViewModel { Id = model.Id, Number = model.Number, Date = model.Date, SumWithoutKm = model.NetoSum, SumKm = model.VatSum, SumBruto = model.BrutoSum, Client = model.Customer?.Name, //PaymentMethod = model Seller = model.SellerName }) .ToList()); } var paginatedListWithViewModel = paginatedListWithModel.Copy(Mapping); return(ServiceResultFactory.Success(paginatedListWithViewModel)); }
public async Task <IActionResult> Search([FromQuery] InvoicesRequestViewModel viewModel) => await HandleResultAsync(() => _service.Search(viewModel));