コード例 #1
0
        public void AddComment(Guid challengeId, Guid userId, string message)
        {
            Contract.NotDefault <InvalidOperationException, Guid>(userId, "userId must not be default");

            var challenge = unitOfWork.Get <Challenge>(challengeId);

            challenge.Comments.Add(new Comment
            {
                UserId = userId,
                Value  = message
            });

            unitOfWork.InsertOrUpdate(challenge);
            unitOfWork.Commit();
        }
コード例 #2
0
        public EditChallengeViewModel Save(EditChallengeViewModel model)
        {
            Contract.NotNull <ArgumentNullException>(model);

            ValidateChallenge(model);

            Challenge challenge;

            if (model.IsNew)
            {
                challenge = new Challenge
                {
                    TimeCreated = DateTime.Now
                };
            }
            else
            {
                challenge = unitOfWork.Get <Challenge>(model.Id.GetValueOrDefault());
            }

            MapModelToChallenge(challenge, model);

            unitOfWork.InsertOrUpdate(challenge);
            unitOfWork.Commit();

            return(mapper.Map <EditChallengeViewModel>(challenge));
        }
コード例 #3
0
        public ChallengeSolveResult Solve(Challenge challenge, Guid userId, string answer)
        {
            var solveResult = ValidateAnswer(challenge, answer);

            if (solveResult.IsSolved)
            {
                var solver = challenge.Solvers.Single(x => x.UserId == userId);

                solver.HasSolved = true;
                challenge.TimesSolved++;
                var rating = (double)((int)challenge.Difficulty + 1) / challenge.TimesSolved;
                solveResult.RatingObtained = rating;

                identityService.AddRatingToUser(userId, rating);

                unitOfWork.InsertOrUpdate(challenge);
                unitOfWork.InsertOrUpdate(solver);
                unitOfWork.Commit();
            }

            return(solveResult);
        }