Пример #1
0
        public IActionResult Index(HeaderSearchVM searchModel)
        {
            if (ModelState.IsValid)
            {
                return(View(_headerService.Search(HttpContext.User, searchModel)));
            }

            return(Redirect(this.Action <HomeController>(nameof(Index), new { headerCode = searchModel.HeaderCode, categoryCode = searchModel.CategoryCode, pageNumber = searchModel.PageNumber })));
        }
Пример #2
0
        public PostHeaderListVM Search(ClaimsPrincipal contextUser, HeaderSearchVM searchModel)
        {
            var user = _userService.GetUserWithRoles(contextUser);

            var model = new PostHeaderListVM();

            var query = _headerRepository.Where(x => x.Title.Contains(searchModel.SearchText) && !user.BlockedUserIds.Contains(x.UserId), new List <string> {
                "Category", "Posts", "User"
            });

            if (searchModel.StartDate.HasValue)
            {
                query = query.Where(x => x.CreateDate >= searchModel.StartDate.Value);
            }

            if (searchModel.EndDate.HasValue)
            {
                query = query.Where(x => x.CreateDate <= searchModel.EndDate.Value);
            }

            if (searchModel.InvertOrder)
            {
                query = query.OrderByDescending(x => x.Title);
            }
            else
            {
                query = query.OrderBy(x => x.Title);
            }

            if (!user.IsAdmin)
            {
                query = query.OrderByDescending(x => x.IsAdminOnly == false);
            }

            query.ToList().ForEach(x =>
            {
                var header = new PostHeaderVM()
                {
                    HeaderCode   = x.IdCode,
                    CategoryCode = x.Category.IdCode,
                    ClickCount   = x.ClickCount,
                    HeaderTitle  = x.Title,
                    UserId       = x.UserId,
                    Username     = x.User.UserName,
                    HeaderDate   = x.UpdateDate ?? x.CreateDate
                };

                model.Headers.Add(header);
            });

            return(model);
        }