Пример #1
0
 public ActionResult Reply(QuestionViewModel question, int[] isTrueAnswers, string[] answers)
 {
     if (isTrueAnswers != null && isTrueAnswers.Where(x => x == 0).Count() != answers.Count())
     {
         var listAnswers = new List <AnswerViewModel>();
         listAnswers.ToAnswersModel(isTrueAnswers, answers);
         var fullQuestion = new FullQuestionViewModel
         {
             Id = question.Id,
             QuestionContent = question.QuestionContent,
             QuantityPoint   = question.QuantityPoint,
             TestId          = question.TestId,
             Answers         = listAnswers
         };
         resultService.SaveResult(fullQuestion.ToBllQuestion(), User.Identity.Name);
         var nextQuestion = questionService.MoveToNextQuestion(question.TestId, User.Identity.Name)?.ToMvcQuestion();
         if (nextQuestion == null)
         {
             return(RedirectToAction("GetResultTesting", new { idOfTest = question.TestId }));
         }
         if (Request.IsAjaxRequest())
         {
             return(PartialView("QuestionContentPartial", nextQuestion));
         }
     }
     return(RedirectToAction("GetATestQuestion", new { idTest = question.TestId }));
 }
Пример #2
0
        public ActionResult Create(QuestionViewModel question, int[] isTrueAnswers, string[] answers)
        {
            if (isTrueAnswers != null && isTrueAnswers.Count() != answers.Count())
            {
                if (question.QuantityPoint <= 0)
                {
                    ModelState.AddModelError("QuantityPoint", "Incorrect quantity point input");
                    return(View(question));
                }
                var listAnswers = new List <AnswerViewModel>();
                listAnswers.ToAnswerModel(isTrueAnswers, answers);

                if (questionService.GetQuestionByParams(question.TestId, question.QuestionContent) == null)
                {
                    var fullQuestion = new FullQuestionViewModel
                    {
                        Id = question.Id,
                        QuestionContent = question.QuestionContent,
                        QuantityPoint   = question.QuantityPoint,
                        TestId          = question.Id,
                        Answers         = listAnswers
                    };
                    questionService.CreateQuestion(fullQuestion.ToBllQuestion());
                    return(RedirectToAction("Index", "Test", new { nameTest = testService.GetTestById(question.TestId).TestName }));
                }
            }
            return(View(question));
        }
Пример #3
0
 public static FullQuestionEntity ToBllQuestion(this FullQuestionViewModel questionModel)
 {
     return(new FullQuestionEntity
     {
         Id = questionModel.Id,
         QuestionContent = questionModel.QuestionContent,
         QuantityPoint = questionModel.QuantityPoint,
         TestId = questionModel.TestId,
         Answers = questionModel.Answers.Select(x => x.ToBllAnswer())
     });
 }
Пример #4
0
        public ActionResult Edit(FullQuestionViewModel question, int[] isTrueAnswers, string[] answers)
        {
            if (isTrueAnswers != null && isTrueAnswers.Count() != answers.Count())
            {
                var listAnswers = new List <AnswerViewModel>();
                listAnswers.ToAnswerModel(isTrueAnswers, answers);

                listAnswers.ToList().ForEach(x => x.QuestionId = question.Id);
                question.Answers = listAnswers;
                if (question.QuantityPoint <= 0)
                {
                    ModelState.AddModelError("QuantityPoint", "Incorrect quantity point input");
                    return(View(question));
                }
                questionService.UpdateQuestion(question.ToBllQuestion());
            }
            return(RedirectToAction("Show", "Test", new { idOfTest = question.TestId }));
        }
Пример #5
0
        public ActionResult Thread(int page, string title, string iD)
        {
            FullQuestionViewModel mainModel = new FullQuestionViewModel();
            HtmlToText            convert   = new HtmlToText();

            int questionId = page;

            var SingleQuestion = _applicationDbContext.Questions
                                 .Where(q => q.QuestionId == page)
                                 .Include(a => a.AnswerToQuestions)
                                 .Include(c => c.QuestionComments)
                                 .Include(d => d.DiscussionCategory)
                                 .Include(l => l.QuestionLikes)
                                 .SingleOrDefault();

            string loggedInUser = User.Identity.GetUserId();

            mainModel.CurrentUser = loggedInUser;

            mainModel.QuestionLikes = SingleQuestion.QuestionLikes.Count(e => e.UserLike);
            var UserLikeStatus = SingleQuestion.QuestionLikes.SingleOrDefault(i => i.UserId == loggedInUser && i.UserLike == true);

            if (UserLikeStatus == null)
            {
                mainModel.hasUserLiked = false;
            }
            else
            {
                mainModel.hasUserLiked = true;
            }

            var acList   = new List <AnswerCommentViewModel>();
            var atqList  = new List <AnswerToQuestionViewModel>();
            var relQlist = new List <RelatedQuestionViewModel>();

            if (SingleQuestion != null)
            {
                var User      = UserManager.FindByIdAsync(SingleQuestion.UserId);
                var UserImage = _applicationDbContext.UserProfilePhotos.SingleOrDefault(u => u.UserId == SingleQuestion.UserId);
                if (UserImage == null)
                {
                    mainModel.QuestionOwnerDP = "person.gif";
                }
                else
                {
                    mainModel.QuestionOwnerDP = UserImage.ImageName;
                }
                var QuestionOwner = User.Result.NameExtension;

                //string QuestionTime = SingleQuestion.DateAsked.ToString("H:mm");
                mainModel.QuestionId    = SingleQuestion.QuestionId;
                mainModel.QuestionOwner = QuestionOwner;
                mainModel.Title         = SingleQuestion.Title;
                mainModel.QuestionText  = SingleQuestion.QuestionText;
                mainModel.Discussion    = SingleQuestion.DiscussionCategory.Name;
                mainModel.DateAsked     = SingleQuestion.DateAsked.ToString("d,MMMM yy");
                mainModel.TimeAsked     = SingleQuestion.DateAsked.ToString("H:mm tt");


                var answer = _applicationDbContext.AnswerToQuestions.Where(q => q.QuestionId == SingleQuestion.QuestionId)
                             .Include(c => c.AnswerComments)
                             .OrderBy(d => d.DateAnswered).ToList();

                foreach (var atq in answer)
                {
                    var AUserImage     = _applicationDbContext.UserProfilePhotos.SingleOrDefault(u => u.UserId == atq.UserId);
                    var lastAnswerDate = _applicationDbContext.AnswerToQuestions.OrderByDescending(d => d.DateAnswered).FirstOrDefault(id => id.QuestionId == atq.QuestionId);
                    lastAnswerToDate = lastAnswerDate.DateAnswered;

                    var atqModel = new AnswerToQuestionViewModel();

                    if (AUserImage == null)
                    {
                        atqModel.AToQuestionOwnerDP = "person.gif";
                    }
                    else
                    {
                        atqModel.AToQuestionOwnerDP = AUserImage.ImageName;
                    }
                    var atqbUser = UserManager.FindByIdAsync(atq.UserId);
                    var atqOwner = atqbUser.Result.NameExtension;

                    atqModel.AToQuestionOwner   = atqOwner;
                    atqModel.AnswerToQuestionId = atq.AnswerToQuestionId;
                    atqModel.AToQuestion        = atq.Answer;
                    atqModel.AToCDateCommented  = atq.DateAnswered.ToString("d,MMMM yy");
                    atqModel.AToTimeCommented   = atq.DateAnswered.ToString("H:mm tt");


                    foreach (AnswerComment com in atq.AnswerComments.OrderBy(d => d.DateCommented))
                    {
                        var AnswerUserImage       = _applicationDbContext.UserProfilePhotos.SingleOrDefault(u => u.UserId == com.UserId);
                        var lastAnswerCommentDate = _applicationDbContext.AnswerComments.OrderByDescending(d => d.DateCommented).FirstOrDefault(id => id.AnswerToQuestionId == atq.AnswerToQuestionId);
                        lastAnswerComment = lastAnswerCommentDate.DateCommented;

                        var acModel = new AnswerCommentViewModel();

                        if (AnswerUserImage == null)
                        {
                            acModel.ACommentOnwerDP = "person.gif";
                        }
                        else
                        {
                            acModel.ACommentOnwerDP = AnswerUserImage.ImageName;
                        }

                        acModel.AnswerToQuestionId = com.AnswerToQuestionId;
                        acModel.AComment           = com.Comment;
                        acModel.ACDateCommented    = com.DateCommented.ToString("d,MMMM yy");
                        acModel.ACTimeCommented    = com.DateCommented.ToString("H:mm tt");

                        var acUser  = UserManager.FindByIdAsync(com.UserId);
                        var acOwner = acUser.Result.NameExtension;
                        acModel.ACommentOwner = acOwner;



                        acList.Add(acModel);
                    }

                    atqList.Add(atqModel);
                    if (lastAnswerToDate > lastAnswerComment)
                    {
                        mainModel.LastActiveDate = lastAnswerToDate.ToString("dd,MMMM yy");
                        mainModel.LastActiveTime = lastAnswerToDate.ToString("H:mm tt");
                    }
                    if (lastAnswerToDate < lastAnswerComment)
                    {
                        mainModel.LastActiveDate = lastAnswerComment.ToString("dd,MMMM yy");
                        mainModel.LastActiveTime = lastAnswerComment.ToString("H:mm tt");
                    }
                }

                //var relQuestionByTitle = from p in
                //         where search.Any(val => p.Description.Contains(val))
                //         select p;

                //var relQuestionByTitle = _applicationDbContext.Questions.OrderByDescending(d => d.DateAsked)
                //    .Where(i => i.Title.StartsWith(SingleQuestion.Title) || i.Title.Contains(SingleQuestion.Title)).ToList();


                IQueryable <Question> questions = _applicationDbContext.Questions.OrderByDescending(d => d.DateAsked)
                                                  .Take(10);
                if (!String.IsNullOrEmpty(SingleQuestion.Title))
                {
                    questions =
                        questions.Where(
                            ii => ii.Title.Contains(SingleQuestion.Tag) || ii.QuestionText.Contains(SingleQuestion.Tag));
                }

                foreach (var q in questions)
                {
                    RelatedQuestionViewModel relModel = new RelatedQuestionViewModel();

                    relModel.QuestionText  = convert.Convert(q.QuestionText);
                    relModel.QuestionId    = q.QuestionId;
                    relModel.QuestionTitle = q.Title;

                    relQlist.Add(relModel);
                }



                //foreach (var rel in relQuestionByTitle)
                //{

                //    RelatedQuestionViewModel relModel = new RelatedQuestionViewModel();
                //    relModel.QuestionText = convert.Convert(rel.QuestionText);

                //    var Count = relQuestionByTitle.Count;

                //    relQlist.Add(relModel);
                //}
            }
            if (lastAnswerToDate.ToString() == "1/1/0001 12:00:00 AM")
            {
                mainModel.LastActiveDate = SingleQuestion.DateAsked.ToString("dd,MMMM yy");
                mainModel.LastActiveTime = SingleQuestion.DateAsked.ToString("H:mm tt");
            }

            mainModel.AnswerToQuestionViewModels = atqList;
            mainModel.AnswerCommentViewModels    = acList;
            mainModel.RelatedQuestionViewModels  = relQlist;

            string loggedInUserId = User.Identity.GetUserId();
            var    loggedPicture  = _applicationDbContext.UserProfilePhotos.SingleOrDefault(i => i.UserId == loggedInUserId);

            if (loggedPicture == null)
            {
                ViewBag.loggedInUserImage = "person.gif";
            }
            else
            {
                ViewBag.loggedInUserImage = loggedPicture.ImageName;
            }
            if (mainModel.RelatedQuestionViewModels.Count <= 1)
            {
                mainModel.Count = 1;
            }
            else
            {
                mainModel.Count = 2;
            }
            string rawUrl = this.Request.RawUrl.ToString();

            ViewBag.absoluteUrl = "https://www.ripoff.com.ng/" + rawUrl;
            ViewBag.page        = SingleQuestion.DiscussionCategoryId;
            ViewBag.TitlePage   = SingleQuestion.DiscussionCategory.Description;
            ViewBag.Title       = mainModel.Title;
            return(View(mainModel));
        }