Beispiel #1
0
        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();
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        //--------- 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));
        }