示例#1
0
        public JsonResult LeaveQuestionComment(string pId, string Comment)
        {
            int aId = 0;

            if (Comment != null)
            {
                string loggedınUser = Request.Cookies["SiteUser"].Value.ToString();

                foreach (var item in Model.SiteUser)
                {
                    if (item.NickName == loggedınUser)
                    {
                        userId = item.SiteUserId;
                        break;
                    }
                }
                QuestionComment c = new QuestionComment()
                {
                    QuestionUserId        = userId,
                    QuestionAnswerContext = Comment,
                    QuestionId            = int.Parse(pId)
                };
                Model.QuestionComment.Add(c);
                Model.SaveChanges();
                aId = c.QuestionCommentId;
            }
            return(Json(new { Status = 0, id = aId }));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            QuestionComment questionComment = db.QuestionComments.Find(id);

            db.QuestionComments.Remove(questionComment);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#3
0
        // GET: Questions/Details/5
        /// <summary>
        /// Single reusable action for displaying question
        /// </summary>
        /// <param name="model"> The question answer to display (with answer) </param>
        /// <param name="_View"> Eg: Details for display, Edit for editing, Delete for deleting </param>
        /// <param name="question"> The question to display </param>
        /// <returns> The view specified by _View </returns>
        //[ImportModelStateFromTempData]
        //[PageView]
        public ActionResult Details(int QuestionId, string _View)
        {
            QAModel         model           = new QAModel();
            QuestionComment questionComment = new QuestionComment();
            AnswerComment   answerComment   = new AnswerComment();

            dbUtil = new DBUtil(3);
            if (_View == "Edit")
            {
                if (!Request.IsAuthenticated)
                {
                    TempData["RedirectMsg"] = "You must be logged in first";
                    return(RedirectToActionPermanent("Login", "Account"));
                }
            }

            if (QuestionId > 0)
            {
                model.question = new Question();

                QuestionWS Qws = new QuestionWS();
                model.question = Qws.GetQuestionById(QuestionId, this.GetVisitorIP(Session["VisitorIP"]));

                if (model.question.AnswerCount > 0)
                {
                    AnswerWS Aws = new AnswerWS();
                    model.answer = Aws.GenModel4mDS(Answers_ds: Aws.GetAnswersForQuestion(null, QuestionId));
                }
                else
                {
                    model.answer = Answer.InitializeIfNone(model.answer);
                }
            }

            if (TempData["StatusMsg"] == null)
            {
                TempData["Title"] = model.question.Q_Title;
            }
            else
            {
                TempData["Title"] = TempData["StatusMsg"];
            }
            if (Request.IsAuthenticated)
            {
                TempData["LoggedInUser"] = User.Identity.GetCurUserNumber();
            }
            else
            {
                TempData["LoggedInUser"] = 0;
            }

            return(View(_View, model));

            //TempData["ErrorPrevention"] = "Maybe the data required to display the question was incomplete. Do you want to <a href='/Questions/Create'> ask a question </a>?";
            //ModelState.AddModelError("", "An error occured while displaying question");
            //return View("Error");
        }
示例#4
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            QuestionComment questionComment = (QuestionComment)await db.Comments.FindAsync(id);

            db.Comments.Remove(questionComment);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
        public IActionResult Add(QuestionComment questionComment)
        {
            var result = _questionCommentService.Add(questionComment);

            if (result.Success)
            {
                return(Ok(result));
            }
            return(BadRequest(result));
        }
        public IActionResult Put(int id, QuestionComment pc)
        {
            if (id != pc.Id)
            {
                return(BadRequest());
            }

            _questionCommentRepository.Update(pc);
            return(NoContent());
        }
 public ActionResult Edit([Bind(Include = "Id,Comment,Date,QuestionId,UserId")] QuestionComment questionComment)
 {
     if (ModelState.IsValid)
     {
         db.Entry(questionComment).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.QuestionId = new SelectList(db.Questions, "Id", "Title", questionComment.QuestionId);
     ViewBag.UserId     = new SelectList(db.Users, "Id", "Email", questionComment.UserId);
     return(View(questionComment));
 }
示例#8
0
        public IHttpActionResult  NewQuestionComment([FromBody] QuestionComment qc)
        {
            //var user = await _repository.GetUserByEmailAsync(User.Identity.Name);

            //if (user != null)
            //    qc.UserId = user.UserId;
            //else
            //    qc.UserId = new Guid("00000000-0000-0000-0000-000000000000");
            //to do   alert user not found

            //qc.User = user;

            qc.UpdateDate = DateTime.Now;
            Repository.Entities.User user = _repository.GetUserByUserName(User.Identity.Name);
            if (user != null)
            {
                qc.UserId = user.UserId;
            }
            else
            {
                qc.UserId = new Guid("0e5f76d4-7180-44e9-bc34-ced22a6d2bed");
            }

            Question questionSource = _repository.GetQuestion(qc.QuestionSource.Id);

            qc.QuestionSource = questionSource;
            RepositoryActionResult <QuestionComment> result = _repository.AddQuestionComment(qc);

            switch (result.Status)
            {
            case RepositoryActionStatus.Created:
            {
                int    newID       = result.Entity.Id;
                String UserName    = result.Entity.QuestionSource.UserName;
                String UserId      = result.Entity.UserId.ToString();
                String Description = result.Entity.Description;
                String UpdateDate  = result.Entity.UpdateDate.HasValue ? result.Entity.UpdateDate.Value.ToShortDateString() : "";
                return(Content(System.Net.HttpStatusCode.OK, newID + "*" + UserName + "*" + UserId + "*" + Description + "*" + UpdateDate));
            }

            case RepositoryActionStatus.NothingModified:
                return(Content(System.Net.HttpStatusCode.OK, "Risultato Not Modified?"));    //TODO have I to return OK?

            case RepositoryActionStatus.Error:
                return(Content(System.Net.HttpStatusCode.InternalServerError, result.Exception.InnerException.Message));

            default:
                break;
            }
            return(Content(System.Net.HttpStatusCode.Ambiguous, result.Status.ToString() + "  " + result.Entity.Description));
        }
示例#9
0
        public List <QuestionComment> GetAllQuestionComments()
        {
            using (var conn = Connection)
            {
                conn.Open();
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = @"
                       SELECT qc.Id, qc.UserProfileId, qc.QuestionId, qc.Content, qc.DateCreated, u.Id AS IdUser, u.FirebaseUserId as FireId, u.Name as NameUser, u.Email as EmailUser, u.UserName AS UserName, u.DateCreated as UCreate, q.Id AS IdQuestion, q.Title as TitleQuestion, q.Content AS QuestionContent, q.UserProfileId AS UId, q.DateCreated AS QuestionDate
                        FROM QuestionComment qc JOIN UserProfile u ON qc.UserProfileId = u.Id JOIN Question q ON qc.QuestionId = q.Id";

                    QuestionComment questionComment = null;
                    var             reader          = cmd.ExecuteReader();

                    var questionComments = new List <QuestionComment>();
                    while (reader.Read())
                    {
                        questionComment = new QuestionComment()
                        {
                            Id            = reader.GetInt32(reader.GetOrdinal("Id")),
                            UserProfileId = reader.GetInt32(reader.GetOrdinal("UserProfileId")),
                            QuestionId    = reader.GetInt32(reader.GetOrdinal("QuestionId")),
                            Content       = reader.GetString(reader.GetOrdinal("Content")),
                            UserProfile   = new UserProfile
                            {
                                Id             = reader.GetInt32(reader.GetOrdinal("IdUser")),
                                FirebaseUserId = reader.GetString(reader.GetOrdinal("FireId")),
                                Name           = reader.GetString(reader.GetOrdinal("NameUser")),
                                Email          = reader.GetString(reader.GetOrdinal("EmailUser")),
                                UserName       = reader.GetString(reader.GetOrdinal("UserName")),
                                DateCreated    = reader.GetDateTime(reader.GetOrdinal("UCreate"))
                            },
                            DateCreated = reader.GetDateTime(reader.GetOrdinal("DateCreated")),
                            Question    = new Question()
                            {
                                Id            = reader.GetInt32(reader.GetOrdinal("IdQuestion")),
                                Title         = reader.GetString(reader.GetOrdinal("TitleQuestion")),
                                Content       = reader.GetString(reader.GetOrdinal("QuestionContent")),
                                UserProfileId = reader.GetInt32(reader.GetOrdinal("UId")),
                                DateCreated   = reader.GetDateTime(reader.GetOrdinal("QuestionDate"))
                            }
                        };

                        questionComments.Add(questionComment);
                    }
                    reader.Close();
                    return(questionComments);
                }
            }
        }
示例#10
0
        public List <QuestionComment> GetQuestionCommentsByQuestionId(int QuestionId)
        {
            using (var conn = Connection)
            {
                conn.Open();
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = @"
                          SELECT QuestionComment.Id AS QuestionCommentId, QuestionComment.UserProfileId AS UserProfileId, QuestionComment.QuestionId, QuestionComment.Content, QuestionComment.DateCreated, Question.Id AS IdQuestion, Question.Title As TitleQuestion, Question.Content AS ContentQuestion, Question.UserProfileId AS QuestionUser, Question.SkillId AS IdSkill, up.Id AS UPId, up.UserName as UPUserName
                          FROM QuestionComment Join Question ON QuestionComment.QuestionId = Question.Id JOIN UserProfile up ON QuestionComment.UserProfileId = up.Id
                               
                         WHERE Question.Id = @Id";

                    DbUtils.AddParameter(cmd, "@Id", QuestionId);

                    QuestionComment questionComment = null;

                    var reader           = cmd.ExecuteReader();
                    var questionComments = new List <QuestionComment>();
                    while (reader.Read())
                    {
                        questionComment = new QuestionComment()
                        {
                            Id            = reader.GetInt32(reader.GetOrdinal("QuestionCommentId")),
                            UserProfileId = reader.GetInt32(reader.GetOrdinal("UserProfileId")),
                            QuestionId    = reader.GetInt32(reader.GetOrdinal("QuestionId")),
                            Content       = reader.GetString(reader.GetOrdinal("Content")),
                            Question      = new Question
                            {
                                Id            = reader.GetInt32(reader.GetOrdinal("IdQuestion")),
                                Title         = reader.GetString(reader.GetOrdinal("TitleQuestion")),
                                Content       = reader.GetString(reader.GetOrdinal("ContentQuestion")),
                                UserProfileId = reader.GetInt32(reader.GetOrdinal("QuestionUser")),
                                SkillId       = reader.GetInt32(reader.GetOrdinal("IdSkill")),
                            },
                            UserProfile = new UserProfile()
                            {
                                Id       = reader.GetInt32(reader.GetOrdinal("UPId")),
                                UserName = reader.GetString(reader.GetOrdinal("UPUserName"))
                            },
                            DateCreated = reader.GetDateTime(reader.GetOrdinal("DateCreated"))
                        };

                        questionComments.Add(questionComment);
                    }
                    reader.Close();
                    return(questionComments);
                }
            }
        }
        // GET: QuestionComments/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuestionComment questionComment = db.QuestionComments.Find(id);

            if (questionComment == null)
            {
                return(HttpNotFound());
            }
            return(View(questionComment));
        }
示例#12
0
        // GET: QuestionComments/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuestionComment questionComment = (QuestionComment)await db.Comments.FindAsync(id);

            if (questionComment == null)
            {
                return(HttpNotFound());
            }
            return(View(questionComment));
        }
示例#13
0
        public ActionResult AddComment(int QuestionId, string Comment)
        {
            QuestionComment questionComment = new QuestionComment();

            questionComment.QuestionId = QuestionId;
            questionComment.Comment    = Comment;
            questionComment.UserId     = User.Identity.GetUserId();
            if (ModelState.IsValid)
            {
                db.QuestionComments.Add(questionComment);
                db.SaveChanges();
                return(RedirectToAction("Details", new { id = QuestionId }));
            }
            return(View(questionComment));
        }
        // GET: QuestionComments/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            QuestionComment questionComment = db.QuestionComments.Find(id);

            if (questionComment == null)
            {
                return(HttpNotFound());
            }
            ViewBag.QuestionId = new SelectList(db.Questions, "Id", "Title", questionComment.QuestionId);
            ViewBag.UserId     = new SelectList(db.Users, "Id", "Email", questionComment.UserId);
            return(View(questionComment));
        }
示例#15
0
        public ResponseMessageModels AddCommentQuestion(QuestionComment mComment)
        {
            ResponseMessageModels result = new ResponseMessageModels();

            mComment.CreatedDate = DateTime.Now;
            db.QuestionComments.Add(mComment);
            Question question = db.Questions.Find(mComment.QuestionId);

            question.CommentCount++;
            db.SaveChanges();
            result.status   = 1;
            result.message  = "Added Comment Successfully";
            result.data     = question.CommentCount;
            result.datetime = mComment.CreatedDate;
            return(result);
        }
        public ActionResult Create(int QuestionId, string Comment)
        {
            QuestionComment questionComment = new QuestionComment();

            questionComment.QuestionId = QuestionId;
            questionComment.Comment    = Comment;
            questionComment.UserId     = User.Identity.GetUserId();
            if (ModelState.IsValid)
            {
                db.QuestionComments.Add(questionComment);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            //ViewBag.QuestionId = new SelectList(db.Questions, "Id", "Title", questionComment.QuestionId);
            //ViewBag.UserId = new SelectList(db.Users, "Id", "Email", questionComment.UserId);
            return(View(questionComment));
        }
示例#17
0
        public void Update(QuestionComment questionComment)
        {
            using (var conn = Connection)
            {
                conn.Open();
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = @"
                        Update QuestionComment
                            Set Content = @Content
                            WHERE Id = @Id";

                    DbUtils.AddParameter(cmd, "@Content", questionComment.Content);
                    DbUtils.AddParameter(cmd, "@Id", questionComment.Id);
                    cmd.ExecuteNonQuery();
                }
            }
        }
示例#18
0
        public ResponseMessageModels EditComment(QuestionComment mComment)
        {
            ResponseMessageModels result  = new ResponseMessageModels();
            QuestionComment       comment = db.QuestionComments.Find(mComment.Id);

            if (comment == null || mComment.UserId != comment.UserId)
            {
                result.status  = 0;
                result.message = "Unknown Error";
                result.data    = null;
                return(result);
            }
            comment.Message = mComment.Message;
            db.SaveChanges();
            result.status  = 1;
            result.message = "Edit Comment Successfully";
            result.data    = null;
            return(result);
        }
示例#19
0
        public List <QuestionComment> GetCommentsOfQuestion(int questionId)
        {
            var ans = new List <QuestionComment>();
            var cmd = new MySqlCommand("select * from main_questioncomment where question_id=" + questionId + " order by id desc", DBConnection.Instance().MySqlConnection);
            var rd  = cmd.ExecuteReader();

            while (rd.Read())
            {
                var id              = (int)rd["id"];
                var content         = (string)rd["content"];
                var day             = (string)rd["day"];
                var hour            = (string)rd["hour"];
                var userId          = (int)rd["user_id"];
                var questionComment = new QuestionComment(id, content, day, hour, questionId, userId);
                ans.Add(questionComment);
            }
            rd.Close();
            return(ans);
        }
        public async Task <BaseResponseViewModel> AddCommentAsync(int questionId, string comment)
        {
            var questionComment = new QuestionComment();

            questionComment.Comment    = comment;
            questionComment.QuestionId = questionId;
            questionComment.CreatedAt  = DateTime.Now;
            questionComment.UpdatedAt  = DateTime.Now;
            questionComment.Author     = this.currentUser;

            await this.questionCommentRepository.AddAsync(questionComment);

            await this.uow.SaveChangesAsync();

            var response = new BaseResponseViewModel();

            response.Id = questionComment.Id;

            return(response);
        }
示例#21
0
        public void Add(QuestionComment questionComment)
        {
            using (var conn = Connection)
            {
                conn.Open();
                using (var cmd = conn.CreateCommand())
                {
                    cmd.CommandText = @"INSERT INTO QuestionComment (UserProfileId, QuestionId, Content, DateCreated)
                                        OUTPUT INSERTED.ID
                                        VALUES (@UserProfileId, @QuestionId, @Content, @DateCreated)";
                    DbUtils.AddParameter(cmd, "@UserProfileId", questionComment.UserProfileId);
                    DbUtils.AddParameter(cmd, "@QuestionId", questionComment.QuestionId);
                    DbUtils.AddParameter(cmd, "@Content", questionComment.Content);
                    DbUtils.AddParameter(cmd, "@DateCreated", questionComment.DateCreated);


                    questionComment.Id = (int)cmd.ExecuteScalar();
                }
            }
        }
示例#22
0
        public ResponseMessageModels RemoveCommentQuestion(QuestionComment mComment)
        {
            ResponseMessageModels result  = new ResponseMessageModels();
            QuestionComment       comment = db.QuestionComments.Find(mComment.Id);

            if (comment.UserId == mComment.UserId)
            {
                db.QuestionComments.Remove(comment);
                db.SaveChanges();
                result.status  = 1;
                result.message = "Remove Comment Successfully";
                result.data    = null;
            }
            else
            {
                result.status  = 0;
                result.message = "Can't Remove Comment";
                result.data    = null;
            }
            return(result);
        }
示例#23
0
 public RepositoryActionResult <QuestionComment> AddQuestionComment(QuestionComment qc)
 {
     #region try
     try
     {
         _ctx.QuestionComments.Add(qc);
         var result = _ctx.SaveChanges();
         if (result > 0)
         {
             return(new RepositoryActionResult <QuestionComment>(qc, RepositoryActionStatus.Created));
         }
         else
         {
             return(new RepositoryActionResult <QuestionComment>(qc, RepositoryActionStatus.NothingModified, null));
         }
     }
     catch (Exception ex)
     {
         return(new RepositoryActionResult <QuestionComment>(null, RepositoryActionStatus.Error, ex));
     }
     #endregion
 }
        public async Task <QuestionComment> AddQuestionCommentAsync(QuestionComment questionComment)
        {
            await using var transaction = await _dbContext.Database.BeginTransactionAsync();

            try
            {
                questionComment.DateAdded = DateTime.Now;
                await _dbContext.QuestionComments.AddAsync(questionComment);

                await _dbContext.SaveChangesAsync();

                // Commit transaction if all commands succeed, transaction will auto-rollback
                // when disposed if either commands fails
                await transaction.CommitAsync();
            }
            catch (Exception)
            {
                // TODO: Handle failure - UX message
                transaction.Rollback();
            }
            return(questionComment);
        }
        public async Task EditQuestionCommentAsync(QuestionComment questionComment)
        {
            await using var transaction = await _dbContext.Database.BeginTransactionAsync();

            try
            {
                var questionCommentFromDb = await _dbContext.QuestionComments.Where(c => c.Id == questionComment.Id && c.IsRemoved == false).FirstOrDefaultAsync();

                questionCommentFromDb.Body      = questionComment.Body;
                questionCommentFromDb.IsEdited  = questionComment.IsEdited;
                questionCommentFromDb.DateAdded = questionComment.DateAdded;
                _dbContext.QuestionComments.Attach(questionCommentFromDb);
                _dbContext.Entry(questionCommentFromDb).State = EntityState.Modified;
                await _dbContext.SaveChangesAsync();

                await transaction.CommitAsync();
            }
            catch (Exception)
            {
                // TODO: Handle failure - UX message
                transaction.Rollback();
            }
        }
 public void AddQuestionComment(QuestionComment questionComment)
 {
     this.questionComments.Add(questionComment);
     this.questionComments.Save();
 }
 public void HardDeleteQuestionComment(QuestionComment questionComment)
 {
     this.questionComments.HardDelete(questionComment);
     this.questionComments.Save();
 }
 public IActionResult Question(QuestionComment QuestionComment)
 {
     QuestionComment.DateCreated = DateTime.Now;
     _questionCommentRepository.Add(QuestionComment);
     return(CreatedAtAction("Get", new { id = QuestionComment.Id }, QuestionComment));
 }
 public void AddQuestionComment(QuestionComment questionComment)
 {
     this.questionComments.Add(questionComment);
     this.questionComments.Save();
 }
示例#30
0
 public IResult Add(QuestionComment questionComment)
 {
     _questionCommentDal.Add(questionComment);
     return(new SuccessResult("Your Comment successfully posted"));
 }
示例#31
0
        public IResult Delete(QuestionComment questionComment)
        {
            _questionCommentDal.Delete(questionComment);

            return(new SuccessResult("Your Comment successfull deleted"));
        }
示例#32
0
 public IResult Update(QuestionComment questionComment)
 {
     _questionCommentDal.Update(questionComment);
     return(new SuccessResult("Comment successfully updated"));
 }