public ActionResult ViewThread(int id, int?page) { int postsPerPage; var user = db.Users.Find(User.Identity.GetUserId()); PrivateThreadViewModel viewModel = new PrivateThreadViewModel(); viewModel.User = db.Users.ToList().Find(x => x.Id == user.Id); if (User.Identity.IsAuthenticated) { postsPerPage = user.PostsPerPage.Quantity; } else { postsPerPage = 25; } viewModel.PostsCount = db.Posts.ToList().FindAll(x => x.UserID == viewModel.User.Id).Count(); viewModel.TopicsCount = db.Topics.ToList().FindAll(x => x.UserID == viewModel.User.Id).Count(); viewModel.Roles = new List <IdentityRole>(); var tmpMessages = db.PrivateMessages.ToList().FindAll(x => x.PrivateThreadID == id); viewModel.PrivateThread = db.PrivateThreads.ToList().Find(x => x.ID == id); viewModel.PrivateThread.Seen = true; db.SaveChanges(); int currPage = page.HasValue ? page.Value : 1; viewModel.Messages = tmpMessages.ToPagedList(currPage, postsPerPage); foreach (IdentityUserRole role in viewModel.User.Roles) { viewModel.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId)); } var lastRole = viewModel.User.Roles.Last(); viewModel.UserRole = db.Roles.Find(lastRole.RoleId).Name; return(View(viewModel)); }
public ActionResult CreateReply(PrivateThreadViewModel request, int id) { var _newMessage = new PrivateMessage(); var user = db.Users.Find(User.Identity.GetUserId()); int postsPerPage; _newMessage.Content = Html.EditMarkers(request.Content); request = new PrivateThreadViewModel(); _newMessage.Date = DateTime.Now; _newMessage.Author = db.Users.ToList().Find(x => x.Id == user.Id); request.User = _newMessage.Author; request.Content = ""; request.PostsCount = db.Posts.ToList().FindAll(x => x.UserID == request.User.Id).Count(); request.TopicsCount = db.Topics.ToList().FindAll(x => x.UserID == request.User.Id).Count(); request.Roles = new List <IdentityRole>(); request.PrivateThread = db.PrivateThreads.ToList().Find(x => x.ID == id); request.PrivateThread.Seen = false; _newMessage.PrivateThreadID = id; if (User.Identity.IsAuthenticated) { postsPerPage = user.PostsPerPage.Quantity; } else { postsPerPage = 25; } request.Messages = db.PrivateMessages.ToList().FindAll(x => x.PrivateThreadID == id).ToPagedList(1, postsPerPage); bool error = false; if (Request.Files.Count > 3) { error = true; ViewBag.Error = Resources.AttachmentCount; } for (int i = 0; i < Request.Files.Count; i++) { if (Request.Files[i].ContentLength > 512 * 1024) { ViewBag.Error = Resources.AttachmentSize; error = true; break; } } if (error) { return(View("ViewThread", request)); } db.PrivateMessages.Add(_newMessage); db.SaveChanges(); for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase file = Request.Files[i]; if (file.FileName == "") { continue; } file.SaveAs(HttpContext.Server.MapPath("~/Content/Attachments/") + file.FileName); MessageFile _messageFile = new MessageFile(); _messageFile.Filename = "~/Content/Attachments/" + file.FileName; _messageFile.PrivateMessage = _newMessage; db.MessageFiles.Add(_messageFile); db.SaveChanges(); } ModelState.Clear(); return(RedirectToAction("ViewThread", new { id = id })); }