public async Task <IEnumerable <InfoLiecViewModel> > InfoLiec() { Stopwatch stopwatch = Stopwatch.StartNew(); var contents = await MongoDbContext.Content_GetAll(); var infos = ContentModelEnumerableToInfoLiecViewmodelEnumerable(contents); stopwatch.Stop(); _logger.LogInformation($"InfoDataController > InfoLiec : {infos.Count()} contents gotten in {stopwatch.ElapsedMilliseconds} ms"); return(infos); }
public async Task <JsonResult> Search([FromBody] SearchViewModel searchVm) { Stopwatch stopwatch = Stopwatch.StartNew(); var contents = await MongoDbContext.Content_GetAll(); var infos = ContentModelEnumerableToInfoLiecViewmodelEnumerable(contents); var response = infos; if (searchVm?.Date == null && searchVm?.FreeSearchText == null && searchVm?.Tags == null && searchVm?.Themes == null) { return(Json(response.OrderByDescending(x => x.CreationDate))); } DateThreshold parsedDateThreshold; if (Enum.TryParse(searchVm.Date, out parsedDateThreshold)) { DateTime date = DateTime.Now; switch (parsedDateThreshold) { case (DateThreshold.week): date = DateTime.Now.Add(new TimeSpan(-7, 0, 0, 0)); break; case (DateThreshold.month): date = DateTime.Now.Add(new TimeSpan(-30, 0, 0, 0)); break; case (DateThreshold.tri): date = DateTime.Now.Add(new TimeSpan(-91, 0, 0, 0)); break; case (DateThreshold.half): date = DateTime.Now.Add(new TimeSpan(-182, 0, 0, 0)); break; case (DateThreshold.full): date = DateTime.Now.Add(new TimeSpan(-365, 0, 0, 0)); break; default: break; } response = response.Where(x => DateTime.Parse(x.CreationDate) > date); } if (searchVm.Tags.Where(x => !string.IsNullOrWhiteSpace(x)).Count() > 0) { List <string> tags = new List <string>(); foreach (var tag in searchVm.Tags) { var temp = tag.Replace(" ", ""); tags.Add(temp.ToLower()); } response = response.Where(x => x.Tags.Intersect(tags).Count() > 0); } if (searchVm.Themes.Count() > 0) { List <Themes> themes = new List <Themes>(); foreach (var theme in searchVm.Themes) { themes.Add(Enum.Parse <Themes>(theme)); } response = response.Where(x => themes.Contains(Enum.Parse <Themes>(x.Theme))); } if (!string.IsNullOrWhiteSpace(searchVm.FreeSearchText)) { response = response.Where(x => x.Context.Contains(searchVm.FreeSearchText) || x.Text.Contains(searchVm.FreeSearchText)); } stopwatch.Stop(); Console.WriteLine(stopwatch.ElapsedMilliseconds); return(Json(response.OrderByDescending(x => x.CreationDate))); }