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));
        }
Exemple #4
0
        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]);
         }
     }
 }