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(); }
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)); }
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); }