public static IQueryable <Models.Paraglider> FilterParaglidersBy(this IQueryable <Models.Paraglider> paragliders, ParaglidersFilters filterBy, string pCommissionDate = null, string pLatRevisionDate = null, int pParagliderModelId = 0) { switch (filterBy) { case ParaglidersFilters.NoFilter: return(paragliders); case ParaglidersFilters.NotActive: return(paragliders.IgnoreQueryFilters().Where(pa => pa.IsActive == false)); case ParaglidersFilters.CommissionDate: { return(paragliders = paragliders.Where(pc => pc.CommissioningDate >= DateTime.Parse(pCommissionDate))); } case ParaglidersFilters.RevisionDate: { return(paragliders = paragliders.Where(plr => plr.LastRevisionDate > DateTime.Parse(pLatRevisionDate))); } case ParaglidersFilters.ModelParaglider: { return(paragliders = paragliders.Where(pm => pm.ParagliderModel.ID == pParagliderModelId)); } default: throw new ArgumentOutOfRangeException(); } }
// GET: Paraglidings public async Task <IActionResult> Index(ParaglidersFilters filter, ParagliderSort sort, string paraglidersortInfo, string paragliderfilterInfo, ParaglidersSearch search, string ParagliderserchInfo) { IEnumerable <ParagliderDto> listParagliders = null; string textToSort = ""; string textTosearch = ""; string textTofilter = ""; // to filter if (filter == ParaglidersFilters.CommissionDate) { textTofilter = "CommissionDate"; } if (filter == ParaglidersFilters.ModelParaglider) { textTofilter = "ParagliderModelId"; } if (filter == ParaglidersFilters.RevisionDate) { textTofilter = "LastRevisionDate"; } // to search if (search == ParaglidersSearch.LastRevisionDate) { textTosearch = "DateLastRevision"; } if (search == ParaglidersSearch.Name) { textTosearch = "Name"; } // sort if (sort == ParagliderSort.CommissionDate) { textToSort = "CommissionDate"; } if (sort == ParagliderSort.ModelParaglider) { textToSort = "ParagliderModelId"; } if (sort == ParagliderSort.RevisionDate) { textToSort = "LastRevisionDate"; } using (var httpClient = new HttpClient()) { string urlfullpath = $"http://localhost:50106/api/v1/paragliders?SortBy={sort}&{textToSort}={paraglidersortInfo}&FilterBy={filter}&{textTofilter}={paragliderfilterInfo}&SearchBy={search}&{textTosearch}={ParagliderserchInfo}"; using (var response = await httpClient.GetAsync(urlfullpath)) { if (response.StatusCode == HttpStatusCode.OK) { string apiResponse = await response.Content.ReadAsStringAsync(); listParagliders = JsonConvert.DeserializeObject <List <ParagliderDto> >(apiResponse); } else { listParagliders = Enumerable.Empty <ParagliderDto>(); } } } //to make filter var paragliderFilter = Enum.GetValues(typeof(ParaglidersFilters)) .Cast <ParaglidersFilters>() .Select(p => new SelectListItem { Text = p.ToString(), Value = ((int)p).ToString() }).ToList(); ViewData["paragliderFilterItems"] = new SelectList(paragliderFilter, "Value", "Text"); // To make search var paragliderSearch = Enum.GetValues(typeof(ParaglidersSearch)) .Cast <ParaglidersSearch>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["paragliderSearchItems"] = new SelectList(paragliderSearch, "Value", "Text"); //to sort var paragliderSort = Enum.GetValues(typeof(ParagliderSort)) .Cast <ParagliderSort>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["paragliderSortItems"] = new SelectList(paragliderSort, "Value", "Text"); return(View(listParagliders)); }