public async Task <JsonResult> LoadFormularyList(FormularyListSearchCriteria searchCriteria) { var pageSize = 100; if (int.TryParse(_configuration["Settings:FormularyResultsPageSize"], out int configPageSize)) { pageSize = configPageSize; } var paginatedVM = new FormularyTreePaginatedModel { PageSize = pageSize }; string token = HttpContext.Session.GetString("access_token"); HttpContext.Session.Remove(SynapseSession.FormularySearchResults); FormularyFilterCriteriaAPIModel filterCriteria = ConstructFormularyListFilterModel(searchCriteria); var recordStatusDictionary = HttpContext.Session.GetObject <Dictionary <string, string> >(SynapseSession.FormularyRecStatusLkpKey); var formularies = await InvokeSearchAPI(filterCriteria, token); if (!formularies.IsCollectionValid()) { return(Json(paginatedVM)); } if (!recordStatusDictionary.IsCollectionValid()) { var recordStatusLkp = await TerminologyAPIService.GetRecordStatusLookup(token); 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 formulariesAsTreeModel = ConvertToFormularyTreeModel(formularies, recordStatusDictionary); paginatedVM.TotalRecords = formulariesAsTreeModel.Count; HttpContext.Session.SetObject(SynapseSession.FormularySearchResults, formulariesAsTreeModel); paginatedVM.Results = formulariesAsTreeModel.Skip(0).Take(pageSize).ToList(); return(Json(paginatedVM)); }
private FormularyFilterCriteriaAPIModel ConstructFormularyListFilterModel(FormularyListSearchCriteria searchCriteria) { FormularyFilterCriteriaAPIModel filter = new FormularyFilterCriteriaAPIModel(); filter.searchTerm = searchCriteria.SearchTerm ?? ""; filter.hideArchived = searchCriteria.HideArchived ?? false; filter.recStatusCds = new List <string>(); filter.formularyStatusCd = new List <string>(); filter.Flags = new List <string>(); if (searchCriteria.RecStatusCds != null) { AssignFilterByRecStatusCodes(filter, searchCriteria); } return(filter); }
public async Task <JsonResult> LoadChildrenFormularies(FormularyListSearchCriteria searchCriteria) { string token = HttpContext.Session.GetString("access_token"); var apiRequest = new GetFormularyDescendentForCodesAPIRequest() { Codes = new List <string> { searchCriteria.FormularyCode }, OnlyNonDeleted = false }; var formulariesResponse = await TerminologyAPIService.GetFormularyDescendentForCodes(apiRequest, token); var recordStatusDictionary = HttpContext.Session.GetObject <Dictionary <string, string> >(SynapseSession.FormularyRecStatusLkpKey); if (formulariesResponse.StatusCode != DataService.APIModel.StatusCode.Success) { string errors = "Error getting the Formularies data."; if (formulariesResponse.ErrorMessages.IsCollectionValid()) { errors = errors + string.Join('\n', formulariesResponse.ErrorMessages.ToArray()); } _toastNotification.AddErrorToastMessage(errors); return(Json(null)); } if (formulariesResponse == null || !formulariesResponse.Data.IsCollectionValid()) { return(Json(new List <FormularyTreeModel>())); } var formularyData = formulariesResponse.Data; if (searchCriteria.HideArchived == true) { formularyData = formularyData.Where(rec => rec.RecStatusCode != TerminologyConstants.ARCHIEVED_STATUS_CD).ToList(); } var vm = ConvertToFormularyTreeModel(formularyData, recordStatusDictionary); return(Json(vm)); }
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)); }
private void AssignFilterByRecStatusCodes(FormularyFilterCriteriaAPIModel filter, FormularyListSearchCriteria searchCriteria) { if (searchCriteria.RecStatusCds.IndexOf(',') > -1) { foreach (string status in searchCriteria.RecStatusCds.Split(',')) { if (status == "Duplicate") { filter.showOnlyDuplicate = true; } else if (status.Split('|')[0] == "Rec") { filter.recStatusCds.Add(status.Split('|')[1]); } else if (status.Split('|')[0] == "Form") { filter.formularyStatusCd.Add(status.Split('|')[1]); } else if (status.Split('|')[0] == "Flags") { filter.Flags.Add(status.Split('|')[1]); } } } else { if (searchCriteria.RecStatusCds == "Duplicate") { filter.showOnlyDuplicate = true; } else if (searchCriteria.RecStatusCds.IndexOf('|') > -1 && searchCriteria.RecStatusCds.Split('|')[0] == "Rec") { filter.recStatusCds.Add(searchCriteria.RecStatusCds.Split('|')[1]); } else if (searchCriteria.RecStatusCds.IndexOf('|') > -1 && searchCriteria.RecStatusCds.Split('|')[0] == "Form") { filter.formularyStatusCd.Add(searchCriteria.RecStatusCds.Split('|')[1]); } else if (searchCriteria.RecStatusCds.IndexOf('|') > -1 && searchCriteria.RecStatusCds.Split('|')[0] == "Flags") { filter.Flags.Add(searchCriteria.RecStatusCds.Split('|')[1]); } } }