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; } }
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); }
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; } }