Example #1
0
        /// <summary>
        /// 帖子管理列表
        /// </summary>
        /// <returns></returns>
        // GET: /<controller>/
        public IActionResult Index()
        {
            ViewModels.PostsViewModel model = new ViewModels.PostsViewModel();
            //查询帖子数据
            int             pageIndex  = Framework.Core.Transform.GetInt(Request.Query["p"], 1);
            int             pageSize   = 10;
            PostsRepository repository = new PostsRepository();

            var query = repository.GetPostsPageList();

            model.ListData   = query.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();
            model.TotalCount = query.Count();
            return(View(model));
        }
Example #2
0
        // GET: Publicacao
        public ActionResult ListPosts()
        {
            Usuario           usuario         = (Usuario)Session["object"];
            List <Publicacao> listPost        = PostsRepository.ListAllPostsFromUser(usuario);
            List <Comentario> listComentarios = new List <Comentario>();

            //foreach(var item in listPost) {
            //    foreach(var coment in item.Comentario) {
            //        listComentarios.Add(coment);

            //    }
            //}
            return(View(listPost));
        }
 public void CreateRepository()
 {
     using (var context = new BlogContext())
     {
         foreach (var post in context.Posts)
         {
             context.Posts.Remove(post);
         }
         context.Posts.Add(new Post {Titulo = "Ola!", Corpo = "Bem vindo!", Data = new DateTime(2012, 2, 3), Autor = "Giovanni Bassi"});
         context.Posts.Add(new Post {Titulo = "Ola 2!", Corpo = "Bem vindo 2!", Data = new DateTime(2011, 2, 3), Autor = "Victor Cavalcante"});
         context.SaveChanges();
     }
     repository = new PostsRepository();
 }
        public async Task DataFlow_HardDeleteById_Test()
        {
            IPostsRepository postsRepository = new PostsRepository();

            IoCManager.Resolver.InjectProperties(postsRepository);

            var findAllResult = await postsRepository.FindAll();

            Assert.IsEmpty(findAllResult);

            var postCount  = 0;
            var savedPosts = await postsRepository.SaveAll(
                new[]
            {
                new PostEntity {
                    Title = $"{postCount}", Content = $"{postCount++}"
                },
                new PostEntity {
                    Title = $"{postCount}", Content = $"{postCount++}"
                },
                new PostEntity {
                    Title = $"{postCount}", Content = $"{postCount++}"
                },
            });

            Assert.IsNotNull(savedPosts);
            Assert.IsNotEmpty(savedPosts);
            Assert.AreEqual(postCount, savedPosts.Count);

            foreach (var postEntity in savedPosts)
            {
                Assert.IsFalse(postEntity.IsDeleted);
            }

            var secondPost = savedPosts[1];

            await postsRepository.DeleteById(secondPost.PostId, softDelete : false);

            var foundPosts = await postsRepository.FindAll();

            Assert.IsNotNull(foundPosts);
            Assert.IsNotEmpty(foundPosts);
            Assert.AreEqual(postCount - 1, foundPosts.Count);

            foreach (var postEntity in foundPosts)
            {
                Assert.IsFalse(postEntity.IsDeleted);
            }
        }
        public ActionResult AddCommentToPublishedPost(Guid postId, DisplayPublishedPostViewModel model)
        {
            if (ModelState.IsValid)
            {
                var postsRepository = new PostsRepository(MvcApplication.MongoDatabase);

                var post = postsRepository.Find(postId);

                post.AddComment(model.NewComment.Author, model.NewComment.Comment);

                postsRepository.Save(post);
            }

            return RedirectToRoute("Posts.DisplayPublishedPost", new { postId });
        }
Example #6
0
 public UnitOfWork(BlogDbContext context)
 {
     this.context          = context;
     CategoriesRepository  = new CategoriesRepository(context);
     PostsRepository       = new PostsRepository(context);
     PostsFetcher          = new PostsFetcher(context);
     TagsRepository        = new TagsRepository(context);
     CommentsFetcher       = new CommentsFetcher(context);
     CommentsRepository    = new CommentsRepository(context);
     PollsRepository       = new PollsRepository(context);
     PollAnswersRepository = new PollAnswersRepository(context);
     PostPhotosRepository  = new PostPhotosRepository(context);
     PollsFetcher          = new PollsFetcher(context);
     VotesRepository       = new VotesRepository(context);
 }
        public ActionResult FinalizedPosts()
        {
            var postsQuery = PostsRepository.GetByStatus(PostStatus.Finalized);

            return(Ok(new ListModel
            {
                Posts = postsQuery.Select(p => new ListModel.PostModel
                {
                    Description = p.Description,
                    Id = p.Id,
                    Title = p.Title,
                    PrimaryImageUrl = p.ImageUrls.First()
                })
            }));
        }
Example #8
0
        public ActionResult Details(int id)
        {
            var post = PostsRepository.GetById(id, p => new DetailsModel
            {
                Id          = p.Id,
                Title       = p.Title,
                Description = p.Description,
                ImageUrls   = p.ImageUrls,
                CreatedAt   = p.Edited ? p.CreatedAt : (DateTime?)null,
                Edited      = p.Edited,
                EditedAt    = p.Edited ? p.UpdatedAt : (DateTime?)null
            });

            return(Ok(post));
        }
Example #9
0
        public ActionResult AddCommentToPublishedPost(Guid postId, DisplayPublishedPostViewModel model)
        {
            if (ModelState.IsValid)
            {
                var postsRepository = new PostsRepository(MvcApplication.MongoDatabase);

                var post = postsRepository.Find(postId);

                post.AddComment(model.NewComment.Author, model.NewComment.Comment);

                postsRepository.Save(post);
            }

            return(RedirectToRoute("Posts.DisplayPublishedPost", new { postId }));
        }
Example #10
0
        /// <summary>
        /// 首页
        /// </summary>
        /// <returns></returns>
        public IActionResult Index()
        {
            ViewModels.HomeViewModel viewModel = new ViewModels.HomeViewModel();
            int pageSize = 5;
            //加载帖子数据
            PostsRepository repository = new PostsRepository();
            var             query      = repository.GetPostsPageList();

            viewModel.PostsDatas = query.Where(m => m.IsShow == true).Take(pageSize).ToList();
            //加载文档主题数据
            DocsRepository docsRepository = new DocsRepository();

            viewModel.DocsDatas = docsRepository.GetDocsByPage().OrderByDescending(m => m.DocsId).Where(m => m.IsShow == true).Take(pageSize).ToList();
            return(View(viewModel));
        }
Example #11
0
 // GET: /<controller>/
 public IActionResult Index()
 {
     ViewModels.UserPostsViewModel model = new ViewModels.UserPostsViewModel();
     //查询帖子数据
     if (HttpContext.Session.GetString("UserId") != null)
     {
         int             pageIndex  = Framework.Core.Transform.GetInt(Request.Query["p"], 1);
         int             pageSize   = 10;
         int             userId     = Framework.Core.Transform.GetInt(HttpContext.Session.GetString("UserId"), 0);
         PostsRepository repository = new PostsRepository();
         var             query      = repository.GetPostsPageList();
         model.ListData   = query.Where(m => m.UserId == userId).Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();
         model.TotalCount = query.Count();
     }
     return(View(model));
 }
Example #12
0
        public ActionResult LikePost(int id)
        {
            var resultado = PostsRepository.SelectPost(id);

            if (CurtidasPostsRepository.ChecarCurtidaPost(resultado) == false)
            {
                PostsRepository.LikePost(resultado);
                CurtidasPostsRepository.AddCurtidaPostBanco(resultado);
            }
            else
            {
                PostsRepository.DislikePost(resultado);
                CurtidasPostsRepository.DeleteCurtidaPostBanco(resultado);
            }
            return(RedirectToAction("ListPosts", "Publicacao"));
        }
 // GET: Publicacao/Delete/5
 public ActionResult DeletePost(int id)
 {
     try {
         CurtidasPostsRepository.DeleteAllCurtidasPost(PostsRepository.SelectPost(id));
         ComentariosRepository.DeleteAllComentariosDoPost(PostsRepository.SelectPost(id));
         PostsRepository.DeletePost(id);
         Usuario sessao = (Usuario)Session["object"];
         Session["object"] = UsuariosRepository.SelectUsuario(sessao.Id);
         TempData["alert"] = "Post Deletado";
         return(RedirectToAction("ListPosts"));
         //return RedirectToAction("ListPosts", "Post");
     }
     catch {
         return(View("Error"));
     }
 }
Example #14
0
        public async Task Should_results_be_paged(int total, int page, int qtd)
        {
            var fixture      = new Fixture();
            var posts_result =
                Enumerable.Range(0, total)
                .Select(e => fixture.Create <Post>())
                .ToList();

            var rssReader = A.Fake <IRssPostReader>();

            A.CallTo(() => rssReader.ReadPostsAsync(A <string> ._, A <DateTime> ._)).Returns(posts_result);

            var repository = new PostsRepository(rssReader, DateTime.MinValue, fixture.Create <string>());
            var posts      = await repository.GetPagedPosts(page, qtd, null);

            posts.Should().HaveCount(qtd);
            posts_result.IndexOf(posts.First()).Should().Be((page - 1) * qtd);
        }
Example #15
0
        public async Task WhenPostIsSavedThenItShouldInsertNewEntry()
        {
            var             blogContext = new BlogContext(dbContextOptions);
            PostsRepository repository  = new PostsRepository(blogContext);
            var             newPost     = new Post()
            {
                Id           = 0,
                Title        = "This is Post Title",
                Summary      = "This is summary",
                PostContents = "This represents contents of the post",
                Slug         = "some-slug",
                IsPublished  = true
            };

            await repository.CreateAsync(newPost);

            Assert.Equal(1, await blogContext.Posts.CountAsync());
        }
Example #16
0
        public ActionResult Index()
        {
            PostIndexVM          model = new PostIndexVM();
            PostsRepository      repo  = new PostsRepository();
            SubRedditsRepository subRedditsRepository = new SubRedditsRepository();

            model.Posts = repo.GetAll(p => p.IsApproved == true).OrderByDescending(a => a.Rating).ToList();
            model.TrendingSubReddits = subRedditsRepository.GetAll(null);
            if (AuthManager.LoggedUser != null)
            {
                model.SubReddits = subRedditsRepository.GetAll(null)
                                   .Where(x => x.SubscribedUsers.Any(b => b.Id == AuthManager.LoggedUser.Id)).OrderByDescending(c => c.Id).ToList();
            }
            else
            {
                model.SubReddits = subRedditsRepository.GetAll(null);
            }
            return(View(model));
        }
Example #17
0
        public ViewModels.PostsViewModel LoadMainData(int id)
        {
            ViewModels.PostsViewModel model = new ViewModels.PostsViewModel();
            //查询帖子数据
            int             pageIndex  = Framework.Core.Transform.GetInt(Request.Query["p"], 1);
            int             pageSize   = 10;
            PostsRepository repository = new PostsRepository();
            var             query      = repository.GetPostsPageList();

            model.ListData   = query.Where(m => (id > 0 ? m.ChannelId == id : m.ChannelId > 0) && m.IsShow == true).Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();
            model.TotalCount = query.Where(m => (id > 0 ? m.ChannelId == id : m.ChannelId > 0) && m.IsShow == true).Count();

            //加载帖子频道
            Common.PostsChannel postsProperty = new Common.PostsChannel();
            model.PostsChannelData = postsProperty.GetListByCache();
            //加载热门帖子
            model.HotListData = query.OrderByDescending(m => m.ReadCount).Where(m => m.PostDate >= DateTime.Now.AddDays(-7)).Skip(0).Take(10).ToList();
            return(model);
        }
        public ActionResult CompartilharPost(int id)
        {
            try
            {
                Usuario sessao = (Usuario)Session["object"];

                Post post = PostsRepository.SelectPost(id);
                post.IdUsuario    = sessao.Id;
                post.IdPostOrigem = id;
                PostsRepository.CompartilharPost(post);

                Session["object"] = UsuariosRepository.SelectUsuario(sessao.Id);
                TempData["alert"] = "Post Compartilhado";
                return(RedirectToAction("Welcome", "Usuario"));
            }
            catch
            {
                return(View("Error"));
            }
        }
Example #19
0
        public void GetList_Retrieves_From_Database()
        {
            var options = GetInMemoryOptions();

            // run "Create"
            RunDbContext(options, async context =>
            {
                var repository = new PostsRepository(context);
                await repository.Create(EntityBuilder.CreatePostEntity());
                await repository.Create(EntityBuilder.CreatePostEntity());
            });

            // assert from another context
            RunDbContext(options, async context =>
            {
                var getListResult = await new PostsRepository(context).GetList();

                Assert.Equal(2, getListResult.Count);
            });
        }
        public IActionResult AddLikes(int id)
        {
            var        repo  = new PostsRepository(_connectionString);
            List <int> likes = HttpContext.Session.Get <List <int> >("Likes");

            if (likes == null)
            {
                likes = new List <int>();
            }
            else if (likes.Contains(id))
            {
                return(null);
            }
            likes.Add(id);
            HttpContext.Session.Set("Likes", likes);
            var post = repo.GetById(id);

            repo.AddLike(id);
            return(Json(post));
        }
Example #21
0
        // GET: Comments
        public ActionResult Index(IndexVM model, int?PostId)
        {
            if (PostId != null)
            {
                model.PostId = (int)PostId;
            }
            CommentsRepository repo = new CommentsRepository();

            model.Items = repo.GetAll(m => m.PostId == model.PostId);

            PostsRepository postsRepo = new PostsRepository();

            model.Post = postsRepo.GetById(model.PostId);

            UsersRepository usersRepo = new UsersRepository();

            model.User = usersRepo.GetById(model.UserId);

            return(View(model));
        }
        public async void AddPost_CheckCallOfAddMethodInDbSet()
        {
            var mockDbContext  = new Mock <EntityModels.DatabaseContext>();
            var mockDbSetPosts = new Mock <DbSet <Post> >();

            mockDbSetPosts
            .Setup(a => a.Add(new Post()))
            .Returns(
                () =>
            {
                Assert.True(true);
                return(null);
            });
            mockDbContext.Setup(a => a.Posts).Returns(mockDbSetPosts.Object);

            var postsRepo = new PostsRepository(mockDbContext.Object);

            await postsRepo.AddPost(new DomainModels.Post()
            {
                Author = new DomainModels.User()
            });
        }
 public ActionResult VerPostOriginal(int id)
 {
     try
     {
         Usuario sessao = (Usuario)Session["object"];
         Post    post   = PostsRepository.SelectPost(id);
         if (post.IdPost > 0)
         {
             Session["object"] = UsuariosRepository.SelectUsuario(sessao.Id);
             return(View(post));
         }
         else
         {
             Session["object"] = UsuariosRepository.SelectUsuario(sessao.Id);
             return(View("PostJaDeletado"));
         }
     }
     catch
     {
         return(View("Error"));
     }
 }
 public ActionResult EditPost(Post post, FormCollection collection, HttpPostedFileBase file)
 {
     try
     {
         // TODO: Add update logic here
         if (file != null)
         {
             PostsRepository.EditPost(post, file);
         }
         else
         {
             PostsRepository.EditPostSemMudarImagem(post);
         }
         Usuario sessao = (Usuario)Session["object"];
         Session["object"] = UsuariosRepository.SelectUsuario(sessao.Id);
         return(RedirectToAction("ListPosts", "Post"));
     }
     catch
     {
         return(View("Error"));
     }
 }
Example #25
0
        public IActionResult Edit(int id)
        {
            ViewModels.PostsEditViewModel model = new ViewModels.PostsEditViewModel();
            int postsId = id;
            int userId  = Framework.Core.Transform.GetInt(HttpContext.Session.GetString("UserId"), 0);
            //加载帖子数据
            PostsRepository repository = new PostsRepository();

            model.PostsData = repository.GetPostsByEdit(postsId, userId);
            if (model.PostsData != null)
            {
                //加载帖子频道数据
                Common.PostsChannel postsProperty = new Common.PostsChannel();
                model.PostsChannels = postsProperty.GetListByCache();

                return(View(model));
            }
            return(new ContentResult()
            {
                Content = "您的请求未得到授权!",
                StatusCode = 401
            });
        }
Example #26
0
        /// <summary>
        /// 帖子内容阅读
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public IActionResult Read(string id)
        {
            int postsId = Framework.Core.Transform.GetInt(id, 0);

            ViewModels.PostsReadViewModel model = new ViewModels.PostsReadViewModel();
            if (postsId != 0)
            {
                PostsRepository repository = new PostsRepository();
                model.PostsData = repository.GetPosts(postsId)[0];
                int pageSize  = 10;
                int pageIndex = Framework.Core.Transform.GetInt(Request.Query["p"], 1);

                var query = repository.GetAnswerPageList();
                model.AnswerListData = query.Where(m => m.PostsId == postsId).Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList();
                model.TotalCount     = query.Where(m => m.PostsId == postsId).Count();
                //加载帖子频道
                Common.PostsChannel postsProperty = new Common.PostsChannel();
                model.PostsChannelData = postsProperty.GetListByCache();
                //加载热门帖子
                model.HotListData = repository.GetPostsListByHot().OrderByDescending(m => m.PlusCount).Where(m => m.PostDate >= DateTime.Now.AddDays(-7)).Skip(0).Take(10).ToList();
            }
            return(View(model));
        }
Example #27
0
        public async Task Should_results_be_filtered_by_userName()
        {
            var fixture = new Fixture();

            Post Create(string authorName)
            {
                var post = fixture.Build <Post>().Without(e => e.Author).Create();

                post.Author = authorName;
                return(post);
            };

            var posts_result = new[] {
                Create("Lucas"),
                Create("Bob"),
                Create("Lucas"),
                Create("Jonas"),
                Create("lucas"),
                Create("Michal"),
                Create("Lucas "),
                Create("Ruan"),
                Create("Mudi"),
                Create("LUCAS")
            };


            var rssReader = A.Fake <IRssPostReader>();

            A.CallTo(() => rssReader.ReadPostsAsync(A <string> ._, A <DateTime> ._)).Returns(posts_result);

            var repository = new PostsRepository(rssReader, DateTime.MinValue, fixture.Create <string>());
            var posts      = await repository.GetPagedPosts(1, 10, "Lucas");

            posts.Should().HaveCount(5);
            posts.Should().OnlyContain(e => e.Author.ToLowerInvariant().Contains("lucas"));
        }
Example #28
0
        public ActionResult GetAll(string subject, string category, string kind, int id, string dateFrom, string dateTo, string sortdatafield, string sortorder, int pagesize, int pagenum)
        {
            var fromDate = string.IsNullOrEmpty(dateFrom) ? DateTime.MinValue : (new DateTime(int.Parse(dateFrom.Split('.')[0]), int.Parse(dateFrom.Split('.')[1]), int.Parse(dateFrom.Split('.')[2])));
            var toDate   = string.IsNullOrEmpty(dateTo) ? DateTime.MaxValue : ((new DateTime(int.Parse(dateTo.Split('.')[0]), int.Parse(dateTo.Split('.')[1]), int.Parse(dateTo.Split('.')[2]))));

            string empId      = User.GetClaimValue(ClaimTypes.PrimarySid);
            var    repository = new PostsRepository();
            var    list       = repository.GetAll(string.IsNullOrEmpty(subject) ? null : subject, string.IsNullOrEmpty(category) ? null : category, string.IsNullOrEmpty(kind) ? null : kind, empId, id, fromDate, toDate);
            var    total      = list.Count();

            if (!string.IsNullOrEmpty(sortorder))
            {
                list = sortorder == "asc" ? list.OrderBy(o => o.GetType().GetProperty(sortdatafield).GetValue(o, null)) :
                       list.OrderByDescending(o => o.GetType().GetProperty(sortdatafield).GetValue(o, null));
            }
            list = list.Skip(pagesize * pagenum).Take(pagesize);
            var result = new
            {
                TotalRows = total,
                Rows      = list
            };

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public async Task DataFlow_InsertPostEntity_Test()
        {
            IPostsRepository postsRepository = new PostsRepository();

            IoCManager.Resolver.InjectProperties(postsRepository);

            var findAllResult = await postsRepository.FindAll();

            Assert.IsEmpty(findAllResult);

            var samplePost1 = new PostEntity
            {
                Title = Post1Title1, Content = Post1Content1
            };

            Assert.AreEqual(0, samplePost1.PostId);

            samplePost1 = await postsRepository.Save(samplePost1);

            Assert.AreNotEqual(0, samplePost1.PostId);

            findAllResult = await postsRepository.FindAll();

            Assert.IsNotEmpty(findAllResult);
            Assert.AreEqual(1, findAllResult.Count);

            var postFound = await postsRepository.FindById(1);

            Assert.IsNotNull(postFound);
            Assert.IsNotNull(postFound.PostId);
            Assert.AreEqual(1, postFound.PostId);
            Assert.AreEqual(Post1Title1, postFound.Title);
            Assert.AreEqual(Post1Content1, postFound.Content);

            Assert.ThrowsAsync <GrException>(() => postsRepository.FindById(1000));
        }
Example #30
0
 public void Given_Posts_When_NewPostIsAdded_Then_ShouldHaveOnePostInDatabase()
 {
     RunOnDatabase(async context => {
         // ARRANGE
         var postsRepository = new PostsRepository(context, _loggerFactory);
         var post            = await postsRepository.InsertPostAsync(new Post
         {
             City         = "Test city",
             Country      = "Test country",
             Description  = "Description",
             Domain       = "Domain",
             FirstName    = "FirstName",
             Gender       = "Male",
             Id           = 10,
             PostDate     = new DateTime(2010, 10, 2),
             LastName     = "LastName",
             UploadedSong = null
         });
         // ACT
         var result = postsRepository.GetPostAsync(post.Id);
         // ASSERT
         result.Should().NotBe(null);
     });
 }
Example #31
0
 public PostsController()
 {
     _repository = new PostsRepository();
 }
Example #32
0
 public PostsService(PostsRepository repo)
 {
     _repo = repo;
 }