Пример #1
0
        public async Task <IActionResult> Excel(OutSearch search, int page = 1)
        {
            try
            {
                OutWhereBuilder outWhereBuilder = new OutWhereBuilder(search);

                string searchParams = search != default ? search.ToString() : default;

                List <OutPreviewViewModel> outs = await GetPage(search, outWhereBuilder, searchParams, page);

                if (outs == default)
                {
                    return(BadRequest());
                }

                return(await base.FormatModel <OutPreviewViewModel>(outs, MedicDataLocalization.Outs, FormattableFactory));
            }
            catch (Exception ex)
            {
                Task <int> _ = MedicLoggerService.SaveAsync(new Log()
                {
                    Message = ex.Message,
                    InnerExceptionMessage = ex?.InnerException?.Message ?? null,
                    Source     = ex.Source,
                    StackTrace = ex.StackTrace,
                    Date       = DateTime.Now
                });

                throw;
            }
        }
Пример #2
0
        private async Task <List <OutPreviewViewModel> > GetPage(OutSearch search, OutWhereBuilder outWhereBuilder, string searchParams, int page)
        {
            int pageLength = (int)search.Length;
            int startIndex = base.GetStartIndex(pageLength, page);

            string outsKey = $"{nameof(OutPreviewViewModel)} - {startIndex} - {searchParams}";

            if (!base.MedicCache.TryGetValue(outsKey, out List <OutPreviewViewModel> outs))
            {
                OutHelperBuilder outHelperBuilder = new OutHelperBuilder(search);

                outs = await OutService.GetOutsAsync(outWhereBuilder, outHelperBuilder, startIndex);

                base.MedicCache.Set(outsKey, outs);
            }

            return(outs);
        }
Пример #3
0
        public async Task <IActionResult> Index(OutSearch search, int page = 1)
        {
            try
            {
                OutWhereBuilder outWhereBuilder = new OutWhereBuilder(search);

                string searchParams = search != default ? search.ToString() : default;

                string outsCountKey = $"{MedicConstants.OutsCount} - {searchParams}";

                List <OutPreviewViewModel> outs = await GetPage(search, outWhereBuilder, searchParams, page);

                if (!base.MedicCache.TryGetValue(outsCountKey, out int outsCount))
                {
                    outsCount = await OutService.GetOutsCountAsync(outWhereBuilder);

                    base.MedicCache.Set(outsCountKey, outsCount);
                }

                List <SexOption> sexOptions = base.GetDefaultSexes();
                sexOptions.AddRange(await base.GetSexesAsync());

                List <HealthRegionOption> healthRegions = base.GetDefaultHealthRegions();
                healthRegions.AddRange(await base.GetHealthRegionsAsync());

                List <UsedDrugCodeOption> usedDrugs = new List <UsedDrugCodeOption>()
                {
                    new UsedDrugCodeOption()
                    {
                        Key = string.Empty, Code = MedicDataLocalization.Get(MedicDataLocalization.NoSelection)
                    }
                };

                if (!MedicCache.TryGetValue(MedicConstants.UsedDrugs, out List <UsedDrugCodeOption> drugs))
                {
                    drugs = await UsedDrugService.UsedDrugsByCodeAsync();

                    MedicCache.Set(MedicConstants.UsedDrugs, drugs);
                }

                usedDrugs.AddRange(drugs);

                return(View(new OutPageIndexModel()
                {
                    Outs = outs,
                    Title = MedicDataLocalization.Get(MedicDataLocalization.OutsView),
                    Description = MedicDataLocalization.Get(MedicDataLocalization.OutsView),
                    Keywords = MedicDataLocalization.Get(MedicDataLocalization.OutsSummary),
                    Search = search,
                    CurrentPage = page,
                    TotalPages = base.TotalPages((int)search.Length, outsCount),
                    TotalResults = outsCount,
                    Sexes = sexOptions,
                    UsedDrugCodes = usedDrugs,
                    HealthRegions = healthRegions
                }));
            }
            catch (Exception ex)
            {
                Task <int> _ = MedicLoggerService.SaveAsync(new Log()
                {
                    Message = ex.Message,
                    InnerExceptionMessage = ex?.InnerException?.Message ?? null,
                    Source     = ex.Source,
                    StackTrace = ex.StackTrace,
                    Date       = DateTime.Now
                });

                throw;
            }
        }