Exemple #1
0
        private async Task LoadPosts()
        {
            var selectedSubcategory = boxSubcategory.SelectedItem as SubcategoryDto;
            var selectedCategory    = boxCategory.SelectedItem as CategoryDto;

            var postSearchRequest = new PostSearchRequest
            {
                Title         = txtTitle.Text,
                SubcategoryId = selectedSubcategory != null ? selectedSubcategory.Id : 0,
                CategoryId    = selectedCategory.Id
            };

            var data = (await _postService.Get <List <PostDto> >(postSearchRequest, "search"))
                       .Select(a => new PostDataGrid
            {
                Id          = a.Id,
                Title       = a.Title,
                DateCreated = a.DateCreated,
                Subcategory = a.Subcategoryname,
                User        = a.Username,
                UserId      = a.UserId
            }).ToList();

            dataGridView1.DataSource = data;
        }
        public ActionResult <PostListResponse> Search([FromQuery] PostSearchRequest searchRequest)
        {
            var posts     = _posts.Search(searchRequest);
            var postCount = _posts.Count(searchRequest);

            return(PostListResponse.Create(searchRequest, posts, postCount));
        }
        public IList<PostDto> Get(PostSearchRequest search)
        {
            var query = _context.Posts.Include(a => a.Subcategory)
                .ThenInclude(a => a.Category)
                .Include(a => a.User)
                .AsQueryable();

            if (!string.IsNullOrWhiteSpace(search?.Title))
            {
                query = query.Where(x => x.Title.Contains(search.Title));
            }

            if (search.CategoryId != null && search.CategoryId != 0)
            {
                query = query.Where(x => x.Subcategory.CategoryId == search.CategoryId);
            }

            if (search.SubcategoryId != null && search.SubcategoryId != 0) // search.SubcategoryId.HasValue
            {
                query = query.Where(x => x.SubcategoryId == search.SubcategoryId);
            }

            var entities = query.ToList();

            var result = _mapper.Map<IList<PostDto>>(entities.Where(x => 1 == 1));


            return result;
        }
Exemple #4
0
        public async Task <IEnumerable <PostSearchResponse> > SearchAsync([FromQuery] PostSearchRequest request,
                                                                          CancellationToken cancellationToken)
        {
            var result = await _postQuery.SearchAsync(request, cancellationToken);

            return(result);
        }
        public Task <BaseFindResponse <Post> > SearchPostsAsync(PostSearchRequest request)
        {
            return(Task.Run(() =>
            {
                var query = context.PostsAsQueryable.Where(a => a.IsPublished);
                if (request.CategoryId.HasValue())
                {
                    query = query.Where(a => a.CategoryId == request.CategoryId);
                }
                if (!string.IsNullOrEmpty(request.Keyword))
                {
                    query = query.Where(a => a.Title.ToLowerInvariant().Contains(request.Keyword.ToLowerInvariant()) ||
                                        a.Description.ToLowerInvariant().Contains(request.Keyword.ToLowerInvariant()));
                }

                var posts = query.OrderByDescending(a => a.PublishedDate)
                            .Skip(request.Skip)
                            .Take(request.PageSize)
                            .ToList();

                return new BaseFindResponse <Post>
                {
                    Results = posts,
                    TotalRecords = query.Count()
                };
            }));
        }
Exemple #6
0
        public PostRelatedOrRecentListViewModel GetForMainPageListForRelated(PostSearchRequest request)
        {
            var result = _post.Where(q => q.IsActive).Select(q => new PostRelatedOrRecentDetailViewModel
            {
                Title      = q.Title,
                Id         = q.Id,
                CategoryId = q.CategoryId
            }).AsQueryable();

            if (request.CategoryId != 0)
            {
                result = result.Where(q => q.CategoryId == request.CategoryId & q.Id != request.PostId);
            }

            request.Total = result.Count();
            var resultsToSkip = (request.PageIndex - 1) * request.PageSize;
            var query         = result
                                .OrderByDescending(r => r.Id)
                                .Skip(() => resultsToSkip)
                                .Take(() => request.PageSize)
                                .ToList();

            return(new PostRelatedOrRecentListViewModel {
                Posts = query, SearchRequest = request
            });
        }
Exemple #7
0
 public IEnumerable <Post> Search(PostSearchRequest search)
 {
     return(_context.Posts
            .OrderByDescending(p => p.PostedAt)
            .Where(p => search.PostedBy == null || p.UserId == search.PostedBy)
            .Skip((search.Page - 1) * search.PageSize)
            .Take(search.PageSize));
 }
        public async Task <BaseFindResponse <PostModel> > SearchPostsAsync(PostSearchRequest request)
        {
            var posts = _mapper.Map <BaseFindResponse <PostModel> >(await _blogRepository.SearchPostsAsync(request));

            await Populate(posts.Results);

            return(posts);
        }
Exemple #9
0
        public async Task <PostListViewModel> GetPagedListAsync(PostSearchRequest request)
        {
            request.Categories = _allCategoriesForSearch;
            request.Creators   = _allCreatorsForSearch;

            var result = _post
                         .ProjectTo <PostDetailViewModel>(_mappingEngine);

            if (!string.IsNullOrWhiteSpace(request.Title))
            {
                result = result.Where(a => a.Title.Contains(request.Title) || a.Body.Contains(request.Title) || a.Summary.Contains(request.Title)).AsQueryable();
            }

            if (!string.IsNullOrWhiteSpace(request.Keyword))
            {
                result = result.Where(a => a.Keyword.Contains(request.Keyword)).AsQueryable();
            }

            if (request.CategoryId != 0)
            {
                result = result.Where(a => a.CategoryId == request.CategoryId).AsQueryable();
            }

            if (request.CreatorId != 0)
            {
                result = result.Where(a => a.CreatorId == request.CreatorId).AsQueryable();
            }

            switch (request.IsActive)
            {
            case ActiveStatus.Enable:
                result = result.Where(a => a.IsActive).AsQueryable();
                break;

            case ActiveStatus.Disable:
                result = result.Where(a => !a.IsActive).AsQueryable();
                break;

            case ActiveStatus.All:
                break;
            }

            request.Total = result.Count();
            var resultsToSkip = (request.PageIndex - 1) * request.PageSize;
            var query         = await result
                                .OrderByDescending(r => r.Id)
                                .Skip(() => resultsToSkip)
                                .Take(() => request.PageSize)
                                .ToListAsync();

            return(new PostListViewModel {
                Posts = query, SearchRequest = request
            });
        }
        public async Task <ActionResult> ListAjax(PostSearchRequest search)
        {
            var posts = await _postService.GetPagedListAsync(search);

            var viewModel = new PostListViewModel()
            {
                Posts         = posts.Posts,
                SearchRequest = search
            };

            return(PartialView("_ListAjax", viewModel));
        }
Exemple #11
0
 private PostFilter CreatePostFilter(PostSearchRequest request)
 {
     return(new PostFilter
     {
         Text = request.Content,
         Authors = request.AccountNames,
         Lists = request.Lists,
         Network = request.Network,
         DateRange = request.DateRange,
         Page = request.Page
     });
 }
        public List <MPost> GetAll(PostSearchRequest search)
        {
            List <MPost> returning = new List <MPost>();

            if (search != null)
            {
                returning = _posts
                            .Where(i => i.Account.Username == search.Username)
                            .ToList();
            }

            returning = _posts.ToList();
            return(returning);
        }
Exemple #13
0
        public async Task <PostMainListViewModel> GetForMainPagePagedListForAsync(PostSearchRequest request)
        {
            var result = _post.Select(q => new PostMainDetailViewModel
            {
                Summary       = q.Summary,
                CategoryTitle = q.Category.Title,
                Title         = q.Title,
                Keywords      = q.Keyword,
                CreatedOn     = q.CreatedOn,
                CategoryId    = q.CategoryId,
                CreatorId     = q.CreatorId,
                IsActive      = q.IsActive,
                CreatorName   = q.Creator.NameForShow,
                Id            = q.Id,
                CommentsCount = q.Comments.Count(a => a.IsActive)
            }).AsQueryable();

            //.ProjectTo<PostMainDetailViewModel>(_mappingEngine);

            request.PageSize = 5;

            if (request.CategoryId != 0)
            {
                result = result.Where(q => q.CategoryId == request.CategoryId);
            }

            if (request.Term != null)
            {
                result = result.Where(q => q.Summary.Contains(request.Term) | q.Title.Contains(request.Term) | q.Keywords.Contains(request.Term));
            }

            request.Total = result.Count();
            var resultsToSkip = (request.PageIndex - 1) * request.PageSize;
            var query         = await result
                                .Where(q => q.IsActive)
                                .OrderByDescending(r => r.Id)
                                .Skip(() => resultsToSkip)
                                .Take(() => request.PageSize)
                                .ToListAsync();

            if (request.CategoryId != 0)
            {
                request.CategoryTitle = _allCategories.FirstOrDefault(q => q.Value == request.CategoryId.ToString())?.Text;
            }


            return(new PostMainListViewModel {
                Posts = query, SearchRequest = request
            });
        }
Exemple #14
0
        public async Task <IEnumerable <PostSearchResponse> > SearchAsync(PostSearchRequest request,
                                                                          CancellationToken cancellationToken)
        {
            await _postFilterValidator.ValidateAndThrowAsync(request, cancellationToken);

            var filter = CreatePostFilter(request);
            var result = await _readPostRepository.SearchAsync(filter, cancellationToken);

            return(result.Select(x => new PostSearchResponse
            {
                Date = x.Date,
                Content = x.Content,
                Link = x.Link,
                Network = x.Network,
                Account = x.Author,
                Lists = x.Lists,
            }));
        }
Exemple #15
0
        public List <MPost> Get(PostSearchRequest search)
        {
            var query = _context.AdministratorPosts.AsQueryable();

            if (search.Title != null)
            {
                query = query.Where(x => x.Post.Title.Equals(search.Title));
            }
            if (search.AdministratorId != 0)
            {
                query = query.Where(x => x.Administrator.AdministratorId == search.AdministratorId);
            }
            var list = query.Select(s => new MPost
            {
                PostId          = s.Post.PostId,
                Title           = s.Post.Title,
                PostDate        = s.Post.PostDate,
                Content         = s.Post.Content,
                AdministratorId = s.Administrator.AdministratorId,
                Author          = s.Administrator.FirstName + " " + s.Administrator.LastName
            }).ToList();

            return(_mapper.Map <List <MPost> >(list));
        }
Exemple #16
0
 public int Count(PostSearchRequest search)
 {
     return(_context.Posts
            .Count(p => search.PostedBy == null || p.UserId == search.PostedBy));
 }
 public List <MPost> Get([FromQuery] PostSearchRequest search)
 {
     return(_service.Get(search));
 }
 public IActionResult Get([FromQuery] PostSearchRequest request)
 {
     return(Ok(_postService.Get(request)));
 }
Exemple #19
0
 public IActionResult SearchPost(PostSearchRequest request) => Ok(_postService.SearchPost(request));
 public void given_i_have_a_request_for_searching_posts()
 {
     _postFilter = new PostSearchRequest();
 }
Exemple #21
0
 public List <Dal.Models.Post> Get([FromQuery] PostSearchRequest request)
 {
     return(_post.Get(request));
 }
        public PagedResults <List <ImageDto> > PagedSearchResults(PostSearchRequest postSearchRequest)
        {
            if (postSearchRequest == null)
            {
                return(null);
            }


            if (postSearchRequest.Page <= 0)
            {
                postSearchRequest.Page = 1;
            }

            var noTags = postSearchRequest.Tags.Any(id => id == -1);
            var tags   = postSearchRequest.Tags.Where(id => id != -1).ToList();
            var query  = Context.Thumbnails
                         .Include(t => t.Comments)
                         .Include(t => t.PhotoBooks)
                         .Include(t => t.Faces)
                         .ThenInclude(tt => tt.Tag)
                         .Include(t => t.TagThumbnails)
                         .ThenInclude(tt => tt.Tag)
                         .ThenInclude(tag => tag.TagType)
                         .Where(t =>
                                t.FileCreateDateTime >= postSearchRequest.Start &&
                                (postSearchRequest.End == null || t.FileCreateDateTime <= postSearchRequest.End.Value) &&
                                t.Hide == postSearchRequest.ShowHidden &&
                                (postSearchRequest.Tags.Count == 0 || (noTags && !t.TagThumbnails.Any()) || (!noTags && t.TagThumbnails.Any(tt => tags.Contains(tt.Tag.Id)))) &&
                                ((postSearchRequest.States.Count == 0 && postSearchRequest.Cities.Count == 0) || (t.Location.LocationComponents.Any(c =>
                                                                                                                                                    (c.Component.TypesString.Contains(((int)GoogleAddressType.AdministrativeAreaLevel1).ToString()) &&
                                                                                                                                                     postSearchRequest.States.Any(s => s == c.Component.LongName)) ||
                                                                                                                                                    (c.Component.TypesString.Contains(((int)GoogleAddressType.Locality).ToString()) &&
                                                                                                                                                     postSearchRequest.Cities.Any(s => s == c.Component.LongName))
                                                                                                                                                    ))) &&
                                (postSearchRequest.Locations.Count == 0 || postSearchRequest.Locations.Any(l => l == t.LocationId.Value))
                                );
            IOrderedQueryable <Thumbnail> orderedQuery = null;

            if (!postSearchRequest.OrderDetails.Any())
            {
                postSearchRequest.OrderDetails.Add(new OrderByDto
                {
                    Name = "Date",
                    Asc  = false
                });
            }
            foreach (var orderBy in postSearchRequest.OrderDetails)
            {
                switch (orderBy.Name.ToLower())
                {
                case ("date"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc, o => o.FileCreateDateTime);
                    break;
                }

                case ("tags"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                            o => !o.TagThumbnails.Any(tag => orderBy.Tags.Contains(tag.TagId)));
                    break;
                }

                case ("num tags"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc, o => o.TagThumbnails.Count());
                    break;
                }

                case ("place id"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc, o => o.Location.PlaceId);
                    break;
                }

                case ("address"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                            o => o.Location.LocationComponents.FirstOrDefault(c =>
                                                                                              c.Component.TypesString.Contains(((int)GoogleAddressType.StreetNumber).ToString())).Component
                                            .LongName + o.Location.LocationComponents.FirstOrDefault(c =>
                                                                                                     c.Component.TypesString.Contains(((int)GoogleAddressType.StreetAddress).ToString()) ||
                                                                                                     c.Component.TypesString.Contains(((int)GoogleAddressType.Route).ToString())).Component.LongName);
                    break;
                }

                case ("city"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                            o => o.Location.LocationComponents.FirstOrDefault(c => c.Component.TypesString.Contains(((int)GoogleAddressType.Locality).ToString())).Component.LongName);
                    break;
                }

                case ("state"):
                {
                    orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                            o => o.Location.LocationComponents.FirstOrDefault(c => c.Component.TypesString.Contains(((int)GoogleAddressType.AdministrativeAreaLevel1).ToString())).Component.LongName);
                    break;
                }

                case ("new faces"):
                {
                    if (orderBy.Asc)
                    {
                        orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                                o => o.Faces.Where(f => !f.IsValid && !f.NeedsValidation)
                                                .OrderBy(f => f.Created).FirstOrDefault().Created);
                    }
                    else
                    {
                        orderedQuery = AddOrder(query, orderedQuery, orderBy.Asc,
                                                o => o.Faces.Where(f => !f.IsValid && !f.NeedsValidation)
                                                .OrderByDescending(f => f.Created).FirstOrDefault().Created);
                    }

                    break;
                }
                }
            }

            if (orderedQuery != null)
            {
                query = orderedQuery;
            }

            var photos = query
                         .Skip(postSearchRequest.PageSize * (postSearchRequest.Page - 1))
                         .Take(postSearchRequest.PageSize)
                         .ToList()
                         .Select(s => s.ToImageDto()).ToList();

            var totalResults = query.Count();

            if (postSearchRequest.OutOfOrder)
            {
                var order = query.Take(postSearchRequest.PageSize * postSearchRequest.Page)
                            .Select(i => i.Id)
                            .ToList();
                return(new PagedResultsWithOrder <List <ImageDto> >(photos, order, totalResults));
            }
            return(new PagedResults <List <ImageDto> >(photos, totalResults));
        }
 public async Task ValidateAndThrowAsync(PostSearchRequest entity, CancellationToken cancellationToken)
 {
     await _validator.ValidateConvertAndThrowAsync(entity, cancellationToken);
 }
 public void given_a_search_post_request_to_validate()
 {
     _postFilter = new PostSearchRequest();
 }
Exemple #25
0
 public IEnumerable <PostSearchDto> SearchPost(PostSearchRequest request)
 {
     request.Validate <PostSearchRequestValidator, PostSearchRequest>();
     return(_postRepository.SearchPost(request.Search));
 }