public async Task <IActionResult> SearchFormularyByName(string q) { string token = HttpContext.Session.GetString("access_token"); var filterCriteria = new FormularyFilterCriteriaAPIModel() { searchTerm = q, hideArchived = false, showOnlyDuplicate = false }; var response = await TerminologyAPIService.SearchFormulariesAsList(filterCriteria, token); if (response.StatusCode != DataService.APIModel.StatusCode.Success) { _toastNotification.AddErrorToastMessage(string.Join('\n', response.ErrorMessages)); return(Json(null)); } var formularies = response.Data; if (!formularies.IsCollectionValid()) { return(Json(null)); } return(Json(formularies)); }
private async Task <List <FormularyListAPIModel> > InvokeSearchAPI(FormularyFilterCriteriaAPIModel filterCriteria, string token) { //If has any search criteria - hit search api if (filterCriteria.searchTerm.IsNotEmpty() || filterCriteria.formularyStatusCd.IsCollectionValid() || filterCriteria.IncludeDeleted || filterCriteria.recStatusCds.IsCollectionValid() || filterCriteria.Flags.IsCollectionValid() || filterCriteria.hideArchived) { var recStsCodes = new List <string>(); if (filterCriteria.recStatusCds.IsCollectionValid()) { recStsCodes = filterCriteria.recStatusCds; } //if (filterCriteria.hideArchived) //{ // recStsCodes.Clear(); // recStsCodes.Add("004"); //} if (recStsCodes.IsCollectionValid()) { filterCriteria.recStatusCds = recStsCodes; } var formulariesResponse = await TerminologyAPIService.SearchFormularies(filterCriteria, token); if (formulariesResponse.StatusCode != DataService.APIModel.StatusCode.Success) { string errors = "Error getting the Formularies data."; if (formulariesResponse.ErrorMessages.IsCollectionValid()) { errors += string.Join('\n', formulariesResponse.ErrorMessages.ToArray()); } _toastNotification.AddErrorToastMessage(errors); return(null); } return(formulariesResponse.Data?.data); } else { var formulariesResponse = await TerminologyAPIService.GetLatestTopLevelFormulariesBasicInfo(token); if (formulariesResponse.StatusCode != DataService.APIModel.StatusCode.Success) { string errors = "Error getting the Formularies data."; if (formulariesResponse.ErrorMessages.IsCollectionValid()) { errors += string.Join('\n', formulariesResponse.ErrorMessages.ToArray()); } _toastNotification.AddErrorToastMessage(errors); return(null); } return(formulariesResponse.Data); } }
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); }
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]); } } }
public static async Task <TerminologyAPIResponse <List <FormularyListAPIModel> > > SearchFormulariesAsList(FormularyFilterCriteriaAPIModel filterCriteria, string token) { var results = await InvokeService <List <FormularyListAPIModel> >($"{FormularyAPI_URI}/searchformulariesaslist/", token, HttpMethod.Post, filterCriteria); return(results); }