예제 #1
0
        public IActionResult CreateThread([FromBody] ThreadDTO thread)
        {
            if (thread?.Post == null || string.IsNullOrWhiteSpace(thread.Post.Content) && string.IsNullOrWhiteSpace(thread.Post.Image))
            {
                return(BadRequest(new { message = "Post was empty" }));
            }

            using (_work.BeginTransaction())
            {
                try
                {
                    var returnThread = _work.ThreadRepository.CreateThread(thread);
                    _work.Save();

                    thread.Post.ThreadId = returnThread.Id;
                    thread.Post.IsOp     = true;

                    var board = PostHelper.CreatePost(_work, _env, this.Request, thread.Post);
                    _work.Save();
                    _work.CommitTransaction();

                    return(Json(board));
                }
                catch (PostException e)
                {
                    _work.RollbackTransaction();
                    return(BadRequest(new { message = e.Message }));
                }
                catch
                {
                    _work.RollbackTransaction();
                    return(BadRequest());
                }
            }
        }
예제 #2
0
        // GET: ThreadDTO/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ThreadDTO threadDTO = Mapper.MapTo(db.ForumThreadSet.Find(id));

            if (threadDTO == null)
            {
                return(HttpNotFound());
            }

            HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (authCookie != null)
            {
                FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                JavaScriptSerializer      serializer = new JavaScriptSerializer();
                UserDTO serializeModel = serializer.Deserialize <UserDTO>(authTicket.UserData);

                threadDTO.CheckUserCanPoint(serializeModel.Id);
            }

            return(View(threadDTO));
        }
예제 #3
0
        public ActionResult Create(ThreadDTO thread)
        {
            try
            {
                HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

                if (authCookie != null)
                {
                    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                    JavaScriptSerializer      serializer = new JavaScriptSerializer();

                    TableUserDTO serializeModel = serializer.Deserialize <TableUserDTO>(authTicket.UserData);

                    if (serializeModel != null)
                    {
                        if (ModelState.IsValid)
                        {
                            thread.User = serializeModel;
                            db.ForumThreadSet.Add(Mapper.MapTo(thread));
                            db.SaveChanges();

                            return(RedirectToAction("Index", "Home"));
                        }

                        return(View(thread));
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }

            throw new UnauthorizedAccessException("You must be logged to create threads");
        }
예제 #4
0
        public void AddThread(ThreadDTO dto)
        {
            var newThread = new Thread
            {
                Id          = Guid.NewGuid(),
                Title       = dto.Title,
                DateCreated = DateTime.UtcNow,
                LastPosted  = DateTime.UtcNow,
                Likes       = 0
            };

            var post = new Post
            {
                Id     = Guid.NewGuid(),
                Name   = dto.Name,
                Text   = dto.Text,
                Posted = DateTime.UtcNow
            };

            newThread.Posts.Add(post);

            using (var ctx = new WebForumContext())
            {
                ctx.Threads.Add(newThread);
                ctx.SaveChanges();
            }
        }
예제 #5
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("Mời bạn nhập Tiêu đề!");
            }
            if (textBox2.Text == "")
            {
                MessageBox.Show("Mời bạn nhập Nội dung!");
            }
            else
            {
                ThreadDTO tr = new ThreadDTO();
                tr.Title         = textBox1.Text;
                tr.Content       = textBox2.Text;
                tr.Time          = DateTime.Now;
                tr.OpenSubjectID = SubjectID;
                tr.StudentID     = GlobalVarian.StudentID;

                ThreadBUS trbus = new ThreadBUS();

                if (trbus.AddThread(tr) == true)
                {
                    MessageBox.Show("Thread đã được tạo.");
                }
            }
        }
예제 #6
0
        public async Task <IActionResult> Category(Guid id)
        {
            var category = await _categoryRepo.FindById(id);

            CategoryDTO dto = new CategoryDTO();

            dto.Category = category;

            var threads = await _threadRepo.GetByCategoryId(id);

            List <ThreadDTO> threadDtoList = new List <ThreadDTO>();

            foreach (var thread in threads)
            {
                ThreadDTO threadDto = new ThreadDTO();
                threadDto.Id          = thread.Id;
                threadDto.Name        = thread.Name;
                threadDto.Description = thread.Description;
                threadDto.CreatedAt   = thread.CreatedAt;
                threadDto.AuthorName  = await GetThreadAuthorName(thread.UserId);

                threadDtoList.Add(threadDto);
            }

            dto.Threads = threadDtoList;
            return(View(dto));
        }
예제 #7
0
        public ActionResult Points(int points, int threadId)
        {
            HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
            ThreadDTO  threadDTO  = Mapper.MapTo(db.ForumThreadSet.Find(threadId));

            if (threadDTO == null)
            {
                ModelState.AddModelError("", "The Thread does not exist.");
            }
            if (1 > points || points > 10)
            {
                ModelState.AddModelError("", "The Points are invalid.");
            }

            if (ModelState.IsValid)
            {
                if (authCookie != null)
                {
                    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                    JavaScriptSerializer      serializer = new JavaScriptSerializer();

                    UserDTO serializeModel = serializer.Deserialize <UserDTO>(authTicket.UserData);

                    if (serializeModel != null)
                    {
                        if (serializeModel.Id == threadDTO.User.Id)
                        {
                            ModelState.AddModelError("", "You can't add points to your own thread.");
                        }
                        if (db.UserThreadPointsSet.Where(utp => utp.UserId == serializeModel.Id && utp.ThreadId == threadId).Count() > 0)
                        {
                            ModelState.AddModelError("", "You have already pointed this thread");
                        }

                        if (ModelState.IsValid)
                        {
                            db.UserThreadPointsSet.Add(new UserThreadPoints
                            {
                                UserId   = serializeModel.Id,
                                Points   = points,
                                ThreadId = threadId
                            });

                            threadDTO.Points += points;

                            db.SaveChanges();
                        }
                    }
                }
                else
                {
                    throw new UnauthorizedAccessException("You must be logged to create threads");
                }
            }

            return(RedirectToAction("Details", new { id = threadDTO.Id }));
        }
예제 #8
0
        public Thread CreateThread(ThreadDTO thread)
        {
            var threadToAdd = new Thread()
            {
                BoardId  = thread.BoardId,
                BumpDate = DateTime.Now
            };

            var entity = _context.Add(threadToAdd).Entity;

            ArchiveOldThreads(thread.BoardId);

            return(entity);
        }
예제 #9
0
        public bool AddThread(ThreadDTO td)
        {
            ThreadDAO t  = new ThreadDAO();
            bool      kq = t.AddThread(td);

            if (kq == true)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #10
0
        public ActionResult Edit(ThreadDTO thread)
        {
            if (!ValidateThread(thread.Id))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var threadDb = db.ForumThreadSet.Find(thread.Id);

            if (threadDb == null)
            {
                return(HttpNotFound());
            }

            thread.UpdateModel(threadDb);
            db.SaveChanges();

            return(View("Details", Mapper.MapTo(threadDb)));
        }
예제 #11
0
        public bool AddThread(ThreadDTO td)
        {
            OleDbConnection cn = DataProvider.ConnectionData();

            string strSQL = "Insert into Thread(Title, Content, TimePost, OpenSubjectID, StudentID) values (?, ?, ?, ?, ?)";
            //B4: Thuc thi chuoi strSQL
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);
            cmd.Parameters.Add("@Title", OleDbType.WChar);
            cmd.Parameters.Add("@Content", OleDbType.WChar);
            cmd.Parameters.Add("@TimePost", OleDbType.Date);
            cmd.Parameters.Add("@OpenSubjectID", OleDbType.Integer);
            cmd.Parameters.Add("@StudentID", OleDbType.Integer);

            cmd.Parameters["@Title"].Value = td.Title;
            cmd.Parameters["@Content"].Value = td.Content;
            cmd.Parameters["@TimePost"].Value = td.Time;
            cmd.Parameters["@OpenSubjectID"].Value = td.OpenSubjectID;
            cmd.Parameters["@StudentID"].Value = td.StudentID;
            cmd.ExecuteNonQuery();
            cn.Close();
            return true;
        }
예제 #12
0
        public bool AddThread(ThreadDTO td)
        {
            OleDbConnection cn = DataProvider.ConnectionData();

            string strSQL = "Insert into Thread(Title, Content, TimePost, OpenSubjectID, StudentID) values (?, ?, ?, ?, ?)";
            //B4: Thuc thi chuoi strSQL
            OleDbCommand cmd = new OleDbCommand(strSQL, cn);

            cmd.Parameters.Add("@Title", OleDbType.WChar);
            cmd.Parameters.Add("@Content", OleDbType.WChar);
            cmd.Parameters.Add("@TimePost", OleDbType.Date);
            cmd.Parameters.Add("@OpenSubjectID", OleDbType.Integer);
            cmd.Parameters.Add("@StudentID", OleDbType.Integer);

            cmd.Parameters["@Title"].Value         = td.Title;
            cmd.Parameters["@Content"].Value       = td.Content;
            cmd.Parameters["@TimePost"].Value      = td.Time;
            cmd.Parameters["@OpenSubjectID"].Value = td.OpenSubjectID;
            cmd.Parameters["@StudentID"].Value     = td.StudentID;
            cmd.ExecuteNonQuery();
            cn.Close();
            return(true);
        }