コード例 #1
0
        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);
        }
コード例 #2
0
        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)));
        }