public async Task <IActionResult> FormularyList() { await LoadLookupData(); string token = HttpContext.Session.GetString("access_token"); var recordStatusDictionary = HttpContext.Session.GetObject <Dictionary <string, string> >(SynapseSession.FormularyRecStatusLkpKey); var formularyStatusDictionary = HttpContext.Session.GetObject <Dictionary <string, string> >(SynapseSession.FormularyStatusLkpKey); if (!formularyStatusDictionary.IsCollectionValid() || !recordStatusDictionary.IsCollectionValid()) { var recordStatusLkpTask = TerminologyAPIService.GetRecordStatusLookup(token); var formularyStatusLkpTask = TerminologyAPIService.GetFormularyStatusLookup(token); await Task.WhenAll(recordStatusLkpTask, formularyStatusLkpTask); var recordStatusLkp = await recordStatusLkpTask; if (recordStatusLkp.IsCollectionValid()) { recordStatusDictionary = recordStatusLkp.Where(rec => rec.Recordstatus == 1).ToDictionary(k => k.Cd.ToString(), v => v.Desc); HttpContext.Session.SetObject(SynapseSession.FormularyRecStatusLkpKey, recordStatusDictionary); } var formularyStatusLkp = await formularyStatusLkpTask; if (formularyStatusLkp.IsCollectionValid()) { formularyStatusDictionary = formularyStatusLkp.Where(rec => rec.Recordstatus == 1).ToDictionary(k => k.Cd.ToString(), v => v.Desc); HttpContext.Session.SetObject(SynapseSession.FormularyStatusLkpKey, formularyStatusDictionary); } } var vm = new FormularyListFilterModel(); var statusItems = new List <SelectListItem>(); if (recordStatusDictionary != null) { recordStatusDictionary.Keys.Each(K => { statusItems.Add(new SelectListItem() { Value = $"Rec|{K}", Text = recordStatusDictionary[K], Group = new SelectListGroup() { Name = "RecordStatus" } }); }); } if (formularyStatusDictionary != null) { formularyStatusDictionary.Keys.Each(K => { statusItems.Add(new SelectListItem() { Value = $"Form|{K}", Text = formularyStatusDictionary[K], Group = new SelectListGroup() { Name = "FormularyStatus" } }); }); } var possibleFlags = FormularyListSearchCriteria.GetPossibleFlags(); if (possibleFlags.IsCollectionValid()) { possibleFlags.Keys.Each(K => { statusItems.Add(new SelectListItem() { Value = $"Flags|{K}", Text = possibleFlags[K], Group = new SelectListGroup() { Name = "Flags" } }); }); } vm.FilterStatuses = statusItems.FindAll(i => i.Value == "Rec|001" || i.Value == "Rec|002" || i.Value == "Rec|003" || i.Value == "Form|001" || i.Value == "Form|002" || (i.Group != null && i.Group.Name == "Flags")); vm.SelectedFilterStatuses = new List <string>(); return(View(vm)); }