Пример #1
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));
        }