public ActionResult Index(int page = 1, ViewSortOrder sortOrder = ViewSortOrder.DateAscending) { this.pageSize = 20; CategoriesViewModel model = ForumMapping .CategoriesToCategoriesViewModel(new ForumItems() .WithPageSize(this.pageSize) .WithSortOrder(sortOrder) .Categories(page), sortOrder, page, this.pageSize ); foreach (var category in model.Categories) { category.ThreadCount = db.Threads.Count(t => t.CategoryId == category.CategoryId); } ViewBag.Message = "Forum"; return View(model); }
/// <summary> /// Withes the sort order. /// </summary> /// <param name="newSortOrder">The sort order.</param> /// <returns>Forum Entities</returns> public ForumItems WithSortOrder(ViewSortOrder newSortOrder) { this.sortOrder = newSortOrder; return this; }
public static ForumPostsViewModel ForumPostsToForumPostsViewModel(IQueryable<ForumPost> posts, Thread thread, ViewSortOrder sort, int page = 1, int pageSize = 20) { var listOfPosts = new List<ForumPostViewModel>(); foreach (ForumPost forumPost in posts) { listOfPosts.Add( new ForumPostViewModel { ForumPostId = forumPost.ForumPostId, Username = forumPost.Username, Date = (forumPost.Modified > forumPost.Created ? forumPost.Modified : forumPost.Created).ToString (), Content = forumPost.Content, }); } var model = new ForumPostsViewModel { ForumPosts = listOfPosts.Where(p => p != null), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = listOfPosts.Count() }, SortOrder = sort, ParentThread = new ThreadViewModel { ThreadId = thread.ThreadId, CategoryId = thread.CategoryId, Username = thread.Username, Subject = thread.Subject, Date = thread.Modified.ToString() } }; return model; }
/// <summary> /// Threadses to threads view model. /// </summary> /// <param name="threads">The threads.</param> /// <param name="category">The category.</param> /// <param name="sort">The sort.</param> /// <param name="page">The page.</param> /// <param name="pageSize">Size of the page.</param> /// <returns>New ThreadsViewModel</returns> public static ThreadsViewModel ThreadsToThreadsViewModel(IQueryable<Thread> threads, Category category, ViewSortOrder sort, int page = 1, int pageSize = 20) { var threadList = new List<ThreadViewModel>(); foreach (Thread thread in threads) { threadList.Add( new ThreadViewModel { ThreadId = thread.ThreadId, Subject = thread.Subject, Date = (thread.Modified > thread.Created ? thread.Modified : thread.Created).ToString(), Username = thread.Username, CategoryId = category.CategoryId }); } var model = new ThreadsViewModel { Threads = threadList.Where(t => t != null), PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = threadList.Count() }, Category = new CategoryViewModel { CategoryId = category.CategoryId, Title = category.Title, Username = category.Username }, SortOrder = sort }; return model; }
/// <summary> /// Categorieses to categories view model. /// </summary> /// <param name="categories">The categories.</param> /// <param name="sort">The sort.</param> /// <param name="page">The page.</param> /// <param name="pageSize">Size of the page.</param> /// <returns>New Category View Model</returns> public static CategoriesViewModel CategoriesToCategoriesViewModel(IQueryable<Category> categories, ViewSortOrder sort, int page = 1, int pageSize = 20 ) { var categoriesList = new List<CategoryViewModel>(); foreach (var category in categories) { categoriesList.Add( new CategoryViewModel { CategoryId = category.CategoryId, Title = category.Title, Date = category.Modified .ToString(), Username = category.Username }); } CategoriesViewModel model = new CategoriesViewModel { Categories = categoriesList, PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = categories.Count() }, SortOrder = sort }; return model; }
/// <summary> /// Indexes this instance. /// </summary> /// <param name="categoryId">The category id.</param> /// <param name="page">The page.</param> /// <param name="sortOrder">The sort order.</param> /// <returns> /// List of all threads /// </returns> public async Task<ActionResult> ListThreads(int categoryId = 0, int page = 1, ViewSortOrder sortOrder = ViewSortOrder.DateAscending) { this.pageSize = 20; Category category = await db.Categories.SingleOrDefaultAsync(c => c.CategoryId == categoryId); var model = ForumMapping.ThreadsToThreadsViewModel( new ForumItems().WithPageSize(this.pageSize) .WithCategoryId(categoryId) .WithSortOrder(sortOrder) .Threads(page), category, sortOrder, page, this.pageSize ); foreach (var thread in model.Threads) { var thread1 = thread; thread.PostCount = await db.ForumPosts.CountAsync(p => p.ThreadId == thread1.ThreadId); } return View(model); }
public ActionResult ListThreadsPartial(string name, int page = 1, ViewSortOrder sortOrder = ViewSortOrder.DateAscending) { this.pageSize = 20; Category category = db.Categories.FirstOrDefault(c => c.Title == name); var model = ForumMapping.ThreadsToThreadsViewModel( new ForumItems().WithPageSize( this.pageSize).WithCategoryId(category.CategoryId).WithSortOrder(sortOrder).Threads(page), category, sortOrder, page, this.pageSize ); return View(model); }
public async Task<ActionResult> ViewThread(int threadId, int page = 1, ViewSortOrder sortOrder = ViewSortOrder.DateAscending ) { var identityManager = new IdentityManager(); var thread = await this.db.Threads.SingleOrDefaultAsync(t => t.ThreadId == threadId); ForumPostsViewModel model = ForumMapping.ForumPostsToForumPostsViewModel( new ForumItems().WithThreadId(threadId).WithPageSize( this.pageSize).WithSortOrder(sortOrder).Posts(page), thread, sortOrder, page, this.pageSize); foreach (var post in model.ForumPosts) { var userId = await identityManager.GetUserIdByNameAsync(post.Username); var tag = "Guest"; if (!string.IsNullOrEmpty(userId)) { if (identityManager.IsUserInRole(userId, "Member")) { tag = "Member"; } else if (identityManager.IsUserInRole(userId, "Moderator")) { tag = "Moderator"; } else if (identityManager.IsUserInRole(userId, "Admin")) { tag = "Admin"; } } post.UserTag = tag; var post1 = post; post.UserPosts = User.Identity.IsAuthenticated ? await db.ForumPosts.CountAsync(p => p.Username == post1.Username) : 0; } this.UpdateCategoryList(); model.ParentThread.CategoryName = CategoryList.SingleOrDefault(c => thread != null && c.Key == thread.CategoryId).Value; return this.View(model); }