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 void RemoveChallenge(Guid id) { var challenge = unitOfWork.Get <Challenge>(id); unitOfWork.Delete(challenge); unitOfWork.Commit(); }
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); }