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 BlogsResourceParameters { PageNumber = 1, PageSize = 10, SearchQuery = "" }; _repository.AddUser(new User { FirstName = "fname", LastName = "lname", EmailAddress = "user@email", Password = "******" }); _repository.Save(); }
public IActionResult GetBlogs(int userId, [FromQuery] BlogsResourceParameters blogsResourceParameters, [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType) { if (!_weblogDataRepository.UserExists(userId)) { return(NotFound()); } var blogEntities = _weblogDataRepository.GetBlogs(userId, blogsResourceParameters); var blogsToReturn = _mapper.Map <IEnumerable <BlogDto> >(blogEntities); Response.Headers.Add(PaginationHeader <Blog> .Get(blogEntities)); var includeLinks = MediaTypes.IncludeLinks(mediaType); if (!includeLinks) { return(Ok(blogsToReturn)); } var blogsWithLinks = blogsToReturn.Select(blog => { var links = CreateLinksForBlog(Url, userId, blog.BlogId); return(new BlogDtoWithLinks(blog, links)); }); var collectionToReturn = new { blogs = blogsWithLinks, links = LinksForCollection.Create( CreateBlogsResourceUri, new int[] { userId }, blogsResourceParameters, blogEntities.HasPrevious, blogEntities.HasNext) }; return(Ok(collectionToReturn)); }
public PagedList <Blog> GetBlogs(int userId, BlogsResourceParameters resourceParameters) { if (resourceParameters is null) { throw new ArgumentNullException(nameof(resourceParameters)); } var collection = _context.Blogs .Where(b => b.UserId == userId) .OrderByDescending(b => b.BlogId) as IQueryable <Blog>; var searchQuery = resourceParameters.SearchQuery?.Trim(); if (searchQuery != null) { collection = collection .Where(b => b.Title.Contains(searchQuery)); } return(PagedList <Blog> .Create(collection, resourceParameters.PageNumber, resourceParameters.PageSize)); }
//--------- blogs ---------// #region blogs public PagedList <Blog> GetBlogs(BlogsResourceParameters resourceParameters) { if (resourceParameters is null) { throw new ArgumentNullException(nameof(resourceParameters)); } // reversing the order so newest blogs are delivered first var collection = _context.Blogs .OrderByDescending(b => b.BlogId) as IQueryable <Blog>; var searchQuery = resourceParameters.SearchQuery?.Trim(); if (searchQuery != null) { collection = collection .Where(b => b.Title.Contains(searchQuery)); } return(PagedList <Blog> .Create(collection, resourceParameters.PageNumber, resourceParameters.PageSize)); }