Exemple #1
0
        public ActionResult ReportPost(ReportPostViewModel viewModel)
        {
            viewModel.Post = db.Posts.ToList().Find(x => x.ID == viewModel.PostID);

            var _moderators = viewModel.Post.Topic.Forum.Moderators;

            foreach (User _moderator in _moderators)
            {
                var _reportThread = db.PrivateThreads.ToList().Find(x => x.Title == "Zgłoszenia");

                if (_reportThread == null)
                {
                    _reportThread           = new PrivateThread();
                    _reportThread.Recipient = _moderator;
                    _reportThread.Title     = "Zgłoszenia";
                    _reportThread.Seen      = false;

                    db.PrivateThreads.Add(_reportThread);
                }

                var _reportMessage = new PrivateMessage();

                _reportMessage.PrivateThread = _reportThread;
                _reportMessage.Author        = db.Users.ToList().Find(x => x.Id == User.Identity.GetUserId());


                _reportMessage.Content += "Zgłoszono post: " + "<a href=\"/Topic/Details/" + viewModel.Post.Topic.ID.ToString() + "?postId=" + viewModel.Post.ID + "\">#" + viewModel.Post.ID + "</a><br />";


                _reportMessage.Content += "Uzasadnienie: <br />" + viewModel.Reason;
                _reportMessage.Date     = DateTime.Now;

                _reportThread.Seen = false;

                db.PrivateMessages.Add(_reportMessage);
            }
            db.SaveChanges();

            return(View("PostReported", viewModel));
        }
        public ActionResult CreateThread(CreateThreadViewModel request)
        {
            try
            {
                var newThread = new PrivateThread();

                var userId = User.Identity.GetUserId();

                newThread.Recipient = db.Users.ToList().Find(x => x.UserName == request.Recipient);
                newThread.SenderID  = userId;
                newThread.Title     = request.Title;

                db.PrivateThreads.Add(newThread);
                db.SaveChanges();

                var newMessage = new PrivateMessage();

                newMessage.AuthorID      = userId;
                newMessage.Content       = Html.EditMarkers(request.Content);
                newMessage.Date          = DateTime.Now;
                newMessage.PrivateThread = newThread;


                if (Request.Files != null)
                {
                    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)
                    {
                        request.User        = db.Users.ToList().Find(x => x.Id == userId);
                        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>();

                        foreach (IdentityUserRole role in request.User.Roles)
                        {
                            request.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId));
                        }

                        return(View(request));
                    }
                    db.PrivateMessages.Add(newMessage);
                    db.SaveChanges();
                    for (int i = 0; i < Request.Files.Count; i++)
                    {
                        HttpPostedFileBase file = Request.Files[i];
                        if (file == null || 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();
                    }
                }
                else
                {
                    db.PrivateMessages.Add(newMessage);
                    db.SaveChanges();
                }

                return(RedirectToAction("ViewThread", new { id = newThread.ID }));
            }
            catch
            {
                var userId = User.Identity.GetUserId();

                request.User        = db.Users.ToList().Find(x => x.Id == userId);
                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>();

                foreach (IdentityUserRole role in request.User.Roles)
                {
                    request.Roles.Add(db.Roles.ToList().Find(x => x.Id == role.RoleId));
                }

                return(View(request));
            }
        }