public async Task <IPagedList <TenderDTO> > GetTendersPage(TenderQueryDTO tenderQuery, int pageNumber, int pageSize = 10) { // AsExpandable used becouse of LinqKit var tenders = Context.Tenders.AsExpandable(); tenders = FilterTenders(tenders, tenderQuery); tenders = SortTenders(tenders); return(await GetTendersPage(tenders, pageNumber, pageSize)); }
private IQueryable <Tender> FilterTenders(IQueryable <Tender> tenders, TenderQueryDTO filter) { return(tenders .FilterIdentifiers(filter.ProcurementNumber) .FilterKeywords(filter.Keyword) .FilterCPV(filter.CpvCode) .FilterGSIN(filter.ScgsCode) .FilterProcurers(filter.Procurer) .FilterRegions(filter.Region) .FilterStatuses(filter.Status) .FilterPeriod(t => t.EnquiryPeriod, filter.ClarificationPeriod) .FilterPeriod(t => t.TenderPeriod, filter.ApplicationsSubmissionPeriod) .FilterPeriod(t => t.AuctionPeriod, filter.AuctionPeriod) .FilterPeriod(t => t.AwardPeriod, filter.QualificationPeriod)); }
public async Task <ActionResult> Index(TenderQueryViewModel viewModel) { if (viewModel.PageNumber < 1) { viewModel.PageNumber = 1; } if (viewModel.PageSize < 1) { viewModel.PageSize = 10; } TenderQueryDTO filter = new TenderQueryDTO { Keyword = viewModel.Keyword, CpvCode = viewModel.CpvCode, ScgsCode = viewModel.GsinCode, ProcurementNumber = viewModel.ProcurementNumber, Procurer = viewModel.Procurer, Region = viewModel.Region, Status = viewModel.Status, ApplicationsSubmissionPeriod = viewModel.ApplicationsSubmissionPeriod?.ToDTO(), ClarificationPeriod = viewModel.ClarificationPeriod?.ToDTO(), AuctionPeriod = viewModel.AuctionPeriod?.ToDTO(), QualificationPeriod = viewModel.QualificationPeriod?.ToDTO(), }; IPagedList <TenderDTO> tendersPagedList = await TenderProvider.Value.GetTendersPage(filter, viewModel.PageNumber, viewModel.PageSize); TendersViewModel tendersViewModel = new TendersViewModel(tendersPagedList, viewModel); if (Request.IsAjaxRequest()) { return(PartialView("Searches/Tenders/TenderTable", tendersViewModel)); } else { return(View("Tenders", tendersViewModel)); } }