示例#1
0
        public static TimeSpan GetTimeFrame(TimeFrameType timeFrameType)
        {
            switch (timeFrameType)
            {
            case TimeFrameType.PastHour:
                return(TimeSpan.FromHours(1));

            case TimeFrameType.PastDay:
                return(TimeSpan.FromDays(1));

            case TimeFrameType.PastWeek:
                return(TimeSpan.FromDays(7));

            case TimeFrameType.PastMonth:
                return(TimeSpan.FromDays(31));

            case TimeFrameType.PastYear:
                return(TimeSpan.FromDays(365));

            case TimeFrameType.AllTime:
                return(TimeSpan.FromDays(365 * 100));

            default:
                throw new InvalidEnumArgumentException();
            }
        }
示例#2
0
        public void ChangePostTimeFrameCookie(IResponseCookies responseCookies, TimeFrameType timeFrameType)
        {
            var timeFrameKey   = WebConstants.CookieKeyPostTimeFrameType;
            var timeFrameValue = timeFrameType.ToString();

            responseCookies.Append(timeFrameKey, timeFrameValue);
        }
        public int Read()
        {
            int occurrenceCount = 0;

            string[] logContent = ReadFile().Split(new string[1] {
                Environment.NewLine
            }, StringSplitOptions.RemoveEmptyEntries);

            TimeFrameType timeType = (TimeFrameType)timeFrameId;

            foreach (string line in logContent)
            {
                var groups = Regex.Match(line, regex).Groups;
                if (groups.Count > 0)
                {
                    string dateValue = groups["date"].Value;
                    if (!string.IsNullOrEmpty(dateValue))
                    {
                        DateTime eventUTCDate;
                        DateTime inputTime = new DateTime();
                        DateTime.TryParseExact(dateValue, "dd/MMM/yyyy:HH:mm:ss zzz",
                                               System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, System.Globalization.DateTimeStyles.AdjustToUniversal, out eventUTCDate);

                        if (timeType == TimeFrameType.Hours)
                        {
                            inputTime = DateTime.Now.AddHours(-timeBack).ToUniversalTime();

                            if (eventUTCDate >= inputTime && eventUTCDate <= DateTime.Now.ToUniversalTime())
                            {
                                if (groups["code"].Value.Trim() == search.Trim())
                                {
                                    occurrenceCount++;
                                }
                            }
                        }
                        else if (timeType == TimeFrameType.Date)
                        {
                            DateTime dateFrom = DateTime.ParseExact(dtFrom, dateFormat, System.Globalization.CultureInfo.InvariantCulture);
                            DateTime dateTo   = DateTime.ParseExact(dtTo, dateFormat, System.Globalization.CultureInfo.InvariantCulture);

                            if (eventUTCDate >= dateFrom && eventUTCDate <= dateTo)
                            {
                                if (groups["code"].Value.Trim() == search.Trim())
                                {
                                    occurrenceCount++;
                                }
                            }
                        }
                    }
                }
            }

            return(occurrenceCount);
        }
        public async Task <PostsViewModel> GetOrderedPostsByKeyWordsAsync(
            string[] keyWords,
            PostSortType sortType,
            TimeFrameType timeFrameType)
        {
            var timeFrame    = TimeFrameFactory.GetTimeFrame(timeFrameType);
            var sortStrategy = SortPostsStartegyFactory
                               .GetSortPostsStrategy(this.redditCloneUnitOfWork, timeFrame, sortType);

            var filteredPosts = await this.redditCloneUnitOfWork.Posts
                                .GetByKeyWordsSortedByAsync(keyWords, sortStrategy);

            var model = this.postMapper.MapPostsViewModelForQuest(filteredPosts, sortType, sortStrategy, timeFrameType);

            return(model);
        }
示例#5
0
        public IActionResult ChangeTimeFrame(string timeFrame)
        {
            TimeFrameType timeFrameType      = TimeFrameType.AllTime;
            var           isParseSuccessfull = Enum.TryParse(timeFrame, out timeFrameType);

            if (isParseSuccessfull)
            {
                this.cookieService.ChangePostTimeFrameCookie(this.Response.Cookies, timeFrameType);
            }
            else
            {
                this.AddStatusMessage(AlertConstants.ErrorMessageWrongParameter, AlertConstants.AlertTypeDanger);
            }

            return(this.Redirect("/"));
        }
示例#6
0
        public async Task <SearchResultViewModel> GetSearchResultAsync(
            string[] keyWords,
            SubredditSortType subredditSortType,
            PostSortType postSortType,
            TimeFrameType postTimeFrameType)
        {
            var subredditModels = await this.questSubredditService
                                  .GetOrderedSubredditsFilterByKeyWordsAsync(keyWords, subredditSortType);

            var postModels = await this.questPostService
                             .GetOrderedPostsByKeyWordsAsync(keyWords, postSortType, postTimeFrameType);

            var searchModel = new SearchResultViewModel
            {
                Subreddits = subredditModels,
                Posts      = postModels,
                KeyWords   = string.Join(" ", keyWords)
            };

            return(searchModel);
        }
示例#7
0
        public PostsViewModel MapPostsViewModelForQuest(
            IEnumerable <Post> posts,
            PostSortType selectedSortType,
            ISortPostsStrategy sortStrategy,
            TimeFrameType selectedTimeFrameType)
        {
            var postModels = this.MapPostConciseViewModels(posts);
            var model      = new PostsViewModel
            {
                Posts        = postModels,
                PostSortType = selectedSortType
            };

            var isHaveTimeFrame = CheckIsSortStrategyHaveTimeFrame(sortStrategy);

            if (isHaveTimeFrame)
            {
                model.PostTimeFrameType = selectedTimeFrameType;
            }

            return(model);
        }