コード例 #1
0
ファイル: GlobalHelper.cs プロジェクト: KA95/MyWebApp
        public static ShowProblemViewModel GetShowProblemViewModel(Problem problem)
        {
            var spvm = new ShowProblemViewModel();
            spvm.Author = problem.Author.UserName;
            spvm.Name = problem.Name;
            spvm.Text = problem.Text;
            spvm.Id = problem.Id;
            spvm.Category = problem.Category.Name;
            spvm.IsBlocked = problem.IsBlocked;
            var sb = new StringBuilder();
            foreach (var tag in problem.Tags)
            {
                sb.Append(tag.Name);
                sb.Append(',');
            }

            spvm.TagsString = sb.ToString();

            sb.Clear();

            foreach (var ans in problem.CorrectAnswers)
            {
                sb.Append(ans.Text);
                sb.Append(';');
            }

            sb.Remove(sb.Length - 1, 1);
            spvm.Answers = sb.ToString();

            spvm.Comments = new List<CommentViewModel>();
            foreach (var comment in problem.Comments)
            {
                CommentViewModel com = new CommentViewModel() { AddingTime = comment.dateTime, AuthorName = comment.User.UserName, ProblemId = problem.Id, Text = comment.Text };
                spvm.Comments.Add(com);
            }

            spvm.Likes = problem.Likes.Count;
            spvm.Dislikes = problem.Dislikes.Count;
            return spvm;
        }
コード例 #2
0
ファイル: ProblemController.cs プロジェクト: KA95/MyWebApp
        public ActionResult Show(ShowProblemViewModel problemView)
        {
            if (problemView.Author == User.Identity.Name)
            {
                problemView.Answers = "";
                return View(problemView);

            }

            Problem problem = problemRepository.GetByID(problemView.Id);
            var pvm = GlobalHelper.GetShowProblemViewModel(problem);
            pvm.IsSolved = false;
            if (ModelState.IsValidField("Answers"))
                if (GlobalHelper.AreEqual(GetAnswersFromString(problemView.Answers, problem), problem.CorrectAnswers))
                {
                    userSolvedRepository.Insert(new UserSolvedProblem { UserId = UserManager.FindByName(User.Identity.Name).Id, ProblemId = problem.Id });
                    var user = UserManager.FindByName(User.Identity.Name);
                    int attempts= (from attempt in user.AttemptedProblems
                                       where attempt.User==user
                                       select attempt).Count();
                    double rating = 100;
                    for (int i = 0; i < attempts; i++)
                        rating *= 0.95;

                    user.Rating += (int)rating;
                    UserManager.Update(user);
                    pvm.IsSolved = true;
                }
                else
                {
                    userAttemptedRepository.Insert(new UserAttemptedProblem { UserId = UserManager.FindByName(User.Identity.Name).Id, ProblemId = problem.Id });
                }

            var md = new Markdown();

            problem.Text = md.Transform(problem.Text);

            return View(pvm);
        }