예제 #1
0
        public ActionResult Edit(EditViewModel editPost)
        {
            var editedPost     = unitOfWork.Repository <Post>().Get(editPost.Post.PostId);
            var forbiddenWords = SharedMethods.CheckForForbiddenWords.CheckForForbiddenWord(editPost.Post.Content, unitOfWork);

            if (forbiddenWords.Count > 0)
            {
                var modelx = new EditViewModel()
                {
                    Post           = editedPost,
                    ForbiddenWords = forbiddenWords
                };
                return(View(modelx));
            }
            else
            {
                editedPost.Content      = editPost.Post.Content;
                editedPost.LastModified = DateTime.Now;
                editedPost.Content      = FindEmote.FindEmotes(editedPost.Content, unitOfWork);
                unitOfWork.Complete();
                ModelState.Clear();
                var  userId    = (User as CustomPrincipal).UserId;
                bool isModx    = false;
                var  userMod   = unitOfWork.Repository <User>().Get(userId);
                var  sectionid = unitOfWork.Topics.GetTopicsSection(editedPost.TopicId);
                foreach (var section in userMod.Section)
                {
                    if (section.SectionId == sectionid)
                    {
                        isModx = true;
                    }
                }
                var model = new PostView()
                {
                    isMod = isModx,
                    Topic = unitOfWork.Topics.Get(editPost.Post.TopicId),
                };

                return(RedirectToAction("Create", "Post", new { id = editPost.Post.TopicId }));
            }
        }
예제 #2
0
        public ActionResult SendMessage(Message message)
        {
            var user = unitOfWork.Repository <User>().Find(x => x.Username == message.Receiver.Username).FirstOrDefault();

            if (user == null)
            {
                ModelState.AddModelError("Warning Username", "User with that username does not exist");
                return(View("sendMessage"));
            }

            var mSender = new Message()
            {
                SenderId   = (User as CustomPrincipal).UserId,
                ReceiverId = user.UserId,
                Title      = message.Title,
                Content    = message.Content,
                SendDate   = DateTime.Now,
                BelongsTo  = (User as CustomPrincipal).UserId
            };
            var mReceiver = new Message()
            {
                SenderId   = (User as CustomPrincipal).UserId,
                ReceiverId = user.UserId,
                Title      = message.Title,
                Content    = message.Content,
                SendDate   = DateTime.Now,
                BelongsTo  = user.UserId
            };

            if (message.Content != null)
            {
                mSender.Content   = FindEmote.FindEmotes(mSender.Content, unitOfWork);
                mReceiver.Content = FindEmote.FindEmotes(mReceiver.Content, unitOfWork);
            }
            unitOfWork.Repository <Message>().Add(mSender);
            unitOfWork.Repository <Message>().Add(mReceiver);
            unitOfWork.Complete();
            return(RedirectToAction("sentMessages", new { id = (User as CustomPrincipal).UserId }));
        }
예제 #3
0
        public ActionResult Create(TopicCreateView viewmodel)
        {
            if (ModelState.IsValid)
            {
                var forbiddenWords = SharedMethods.CheckForForbiddenWords.CheckForForbiddenWord(viewmodel.TopicName, unitOfWork);
                forbiddenWords.AddRange(SharedMethods.CheckForForbiddenWords.CheckForForbiddenWord(viewmodel.PostContent, unitOfWork));
                if (forbiddenWords.Count > 0)
                {
                    var modelx = new TopicCreateView()
                    {
                        TopicName      = viewmodel.TopicName,
                        PostContent    = viewmodel.PostContent,
                        ForbiddenWords = forbiddenWords,
                    };


                    return(View("Create", modelx));
                }

                Attachment attachmentx    = null;
                byte[]     attachmentData = null;
                if (Request.Files.Count > 0)
                {
                    HttpPostedFileBase attachment = Request.Files["UserAttachment"];
                    if (attachment.ContentLength > 0)
                    {
                        using (var binary = new BinaryReader(attachment.InputStream))
                        {
                            attachmentData = binary.ReadBytes(attachment.ContentLength);
                        }
                        if (attachmentData.Length <= 3145728 * 5)
                        {
                            attachmentx = new Attachment()
                            {
                                AttachmentData = attachmentData,
                                AttachmentName = Path.GetFileName(Request.Files["UserAttachment"].FileName),
                            };
                        }
                        else
                        {
                            ModelState.AddModelError("AttachmentSizeError", "Attachment size too big");
                        }
                    }
                }

                var topic = new Topic()
                {
                    Name         = viewmodel.TopicName,
                    CreateDate   = DateTime.Now,
                    LastModified = DateTime.Now,
                    AuthorId     = (User as CustomPrincipal).UserId,
                    SectionId    = viewmodel.SectionId,
                    Sticked      = false,
                };


                topic.ViewsCount++;
                Session[topic.TopicId.ToString()] = true;
                unitOfWork.Topics.Add(topic);


                var post = new Post()
                {
                    Content      = viewmodel.PostContent,
                    CreateDate   = DateTime.Now,
                    LastModified = DateTime.Now,
                    AuthorId     = (User as CustomPrincipal).UserId,
                    TopicId      = topic.TopicId,
                    Attachment   = attachmentx
                };
                post.Content = FindEmote.FindEmotes(post.Content, unitOfWork);
                unitOfWork.Repository <Post>().Add(post);
                topic.PostsCount++;
                unitOfWork.Complete();

                return(RedirectToAction("Create", "Post", new { id = topic.TopicId }));
            }
            else
            {
                var model = new TopicCreateView()
                {
                    SectionId = viewmodel.SectionId
                };
                return(View("Create", model));
            }
        }
예제 #4
0
        public ActionResult Create(PostView viewmodel)
        {
            if (ModelState.IsValid)
            {
                var userid         = (User as CustomPrincipal).UserId;
                var user           = unitOfWork.Repository <User>().Get(userid);
                var ranks          = unitOfWork.Repository <Rank>().GetAll();
                var forbiddenWords = SharedMethods.CheckForForbiddenWords.CheckForForbiddenWord(viewmodel.Content, unitOfWork);
                var topic          = unitOfWork.Repository <Topic>().Get(viewmodel.TopicId);


                bool isModx    = false;
                var  userMod   = unitOfWork.Repository <User>().Get(userid);
                var  sectionid = unitOfWork.Topics.GetTopicsSection(viewmodel.TopicId);
                foreach (var section in userMod.Section)
                {
                    if (section.SectionId == sectionid)
                    {
                        isModx = true;
                    }
                }


                if (forbiddenWords.Count > 0)
                {
                    var modelx = new PostView()
                    {
                        isMod          = isModx,
                        Topic          = unitOfWork.Topics.Get(viewmodel.TopicId),
                        TopicId        = viewmodel.TopicId,
                        ForbiddenWords = forbiddenWords
                    };


                    return(View("Create", modelx));
                }
                else
                {
                    Attachment attachmentx    = null;
                    byte[]     attachmentData = null;
                    if (Request.Files.Count > 0)
                    {
                        HttpPostedFileBase attachment = Request.Files["UserAttachment"];

                        if (attachment.ContentLength > 0)
                        {
                            using (var binary = new BinaryReader(attachment.InputStream))
                            {
                                attachmentData = binary.ReadBytes(attachment.ContentLength);
                            }
                            if (attachmentData.Length <= 3145728 * 5)
                            {
                                attachmentx = new Attachment()
                                {
                                    AttachmentData = attachmentData,
                                    AttachmentName = Path.GetFileName(Request.Files["UserAttachment"].FileName),
                                };
                            }
                            else
                            {
                                ModelState.AddModelError("AttachmentSizeError", "Attachment size too big");
                            }
                        }
                    }


                    var post = new Post()
                    {
                        Content      = viewmodel.Content,
                        CreateDate   = DateTime.Now,
                        LastModified = DateTime.Now,
                        AuthorId     = (User as CustomPrincipal).UserId,
                        TopicId      = viewmodel.TopicId,
                        User         = user,
                        Attachment   = attachmentx
                    };

                    post.Content = FindEmote.FindEmotes(post.Content, unitOfWork);
                    unitOfWork.Repository <Post>().Add(post);
                    topic.PostsCount++;
                    var userPosts = unitOfWork.Repository <Post>().Find(x => x.AuthorId == userid).Count() + 1;
                    foreach (var rank in ranks)
                    {
                        if (userPosts >= rank.Requirement)
                        {
                            user.Rank = rank;
                        }
                    }


                    unitOfWork.Topics.Get(viewmodel.TopicId).LastModified = DateTime.Now;
                    unitOfWork.Complete();
                    ModelState.Clear();

                    var model = new PostView()
                    {
                        isMod   = isModx,
                        Topic   = unitOfWork.Topics.Get(viewmodel.TopicId),
                        TopicId = viewmodel.TopicId
                    };
                    return(RedirectToAction("Create", "Post", new { id = viewmodel.TopicId }));
                }
            }
            else
            {
                var model = new PostView()
                {
                    TopicId = viewmodel.TopicId,
                    Topic   = unitOfWork.Topics.Get(viewmodel.TopicId)
                };
                return(View(model));
            }
        }