//--------- posts ---------// #region posts public PagedList <Post> GetAllPostsForUser(int userId, PostsResourceParameters resourceParameters) { if (resourceParameters is null) { throw new ArgumentNullException(nameof(resourceParameters)); } var collection = _context.Posts .Where(p => p.Blog.UserId == userId) as IQueryable <Post>; var searchQuery = resourceParameters.SearchQuery?.Trim(); if (searchQuery != null) { collection = collection.Where(p => p.Title.Contains(searchQuery)); } collection = collection .OrderByDescending(p => p.TimeCreated); return(PagedList <Post> .Create(collection, resourceParameters.PageNumber, resourceParameters.PageSize)); }
public IActionResult GetPosts(int userId, int blogId, [FromQuery] PostsResourceParameters postsResourceParameters, [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType) { if (!_weblogDataRepository.UserExists(userId) || !_weblogDataRepository.BlogExists(blogId)) { return(NotFound()); } var postEntities = _weblogDataRepository.GetPosts(blogId, postsResourceParameters); var postsToReturn = _mapper.Map <IEnumerable <PostDto> >(postEntities); Response.Headers.Add(PaginationHeader <Post> .Get(postEntities)); var includeLinks = MediaTypes.IncludeLinks(mediaType); if (!includeLinks) { return(Ok(postsToReturn)); } var postsWithLinks = postsToReturn.Select(post => { var links = CreateLinksForPost(Url, userId, blogId, post.PostId); return(new PostDtoWithLinks(post, links)); }); var collectionToReturn = new { posts = postsWithLinks, links = LinksForCollection.Create( CreatePostsResourceUri, new int[] { userId, blogId }, postsResourceParameters, postEntities.HasPrevious, postEntities.HasNext) }; return(Ok(collectionToReturn)); }
public void TestInitialize() { _connection = new SqliteConnection("DataSource=:memory:"); _connection.Open(); var options = new DbContextOptionsBuilder <WeblogContext>() .UseSqlite(_connection) .Options; _context = new WeblogContext(options); _context.Database.EnsureCreated(); _repository = new WeblogDataRepository(_context); _resourceParameters = new PostsResourceParameters { PageNumber = 1, PageSize = 10, SearchQuery = "" }; _repository.AddUser(new User { FirstName = "fname", LastName = "lname", EmailAddress = "user@email", Password = "******" }); _repository.Save(); _repository.AddBlog(1, new Blog { Title = "title", Excerpt = "excerpt" }); _repository.Save(); }