private void ProcessPlatinumAchievement(Student student) { var achievements = _achievementService.GetAchievementList(); var studentAchievements = _achievementService.GetStudentAchievementList(student.Id); // Remove platinum achievement from comparison achievements.Remove( _achievementService.GetAchievementBySystemName(SystemStudentAchievementNames.EarntAllAchievements)); var comparisionList = achievements.Except(studentAchievements).ToList(); if (comparisionList.Count == 0) { student.AddAchievementHistoryEntry(_achievementService.GetAchievementBySystemName(SystemStudentAchievementNames.EarntAllAchievements)); _studentService.UpdateStudent(student); } }
public ActionResult Grade(QuizModel quiz) { var numberOfCorrectAnswers = 0; var rewardPoints = 0; var answers = new List <QuizUserAnswer>(); foreach (var question in quiz.Questions) { int correctAnswer = (from a in question.Answers where a.IsCorrect select a.Id).SingleOrDefault(); if (question.SelectedAnswer == correctAnswer) { numberOfCorrectAnswers += 1; rewardPoints += question.Points; } answers.Add(new QuizUserAnswer { QuestionId = question.Id, AnswerId = question.SelectedAnswer }); } var score = ((float)numberOfCorrectAnswers / (float)quiz.Questions.Count) * 100; quiz.StudentScore = (float)Math.Round(score, 3); var quizResult = new QuizResult { StudentId = _workContext.CurrentStudent.Id, AnsweredOnUtc = DateTime.UtcNow, Score = (float)score, QuizId = quiz.Id, Answers = answers }; Achievement achievement = null; // If it is a level quiz, only store the grade if the pass mark has been met. if (quiz.IsLevelQuiz) { if (score >= quiz.PassMark) { _quizService.GradeQuiz(quizResult); achievement = _achievementService.GetAchievementBySystemName(quiz.AchivementSystemName); quizResult.Student.AddLevelPointsHistoryEntry(rewardPoints, quiz.Id, "Passed quiz " + quiz.Id); //activity log _studentActivityService.InsertActivity("Quiz.Grade.Level.Passed", "ActivityLog.Quiz.Grade.Level." + quiz.SystemName + ".Passed"); } else { _studentActivityService.InsertActivity("Quiz.Grade.Level.Failed", "ActivityLog.Quiz.Grade.Level." + quiz.SystemName + ".Failed"); } } else if (quiz.IsSystemQuiz) { _quizService.GradeQuiz(quizResult); achievement = _achievementService.GetAchievementBySystemName(quiz.AchivementSystemName); quizResult.Student.AddRewardPointsHistoryEntry(rewardPoints, "Completed quiz " + quiz.Id); //activity log _studentActivityService.InsertActivity("Quiz.Grade.System", "ActivityLog.Quiz.Grade.System." + quiz.SystemName); } else { _quizService.GradeQuiz(quizResult); achievement = _achievementService.GetAchievementBySystemName(quiz.AchivementSystemName); quizResult.Student.AddRewardPointsHistoryEntry(rewardPoints, "Completed quiz " + quiz.Id); //activity log _studentActivityService.InsertActivity("Quiz.Grade.Student", "ActivityLog.Quiz.Grade.Student." + quiz.SystemName); } _quizService.UpdateQuizGrade(quizResult); if (achievement != null) { quizResult.Student.AddAchievementHistoryEntry(achievement); _studentService.UpdateStudent(quizResult.Student); } //if (quiz.IsSystemQuiz || (quiz.IsLevelQuiz && score < quiz.PassMark)) // return RedirectToAction("Index", "Home"); return(View(quiz)); }
/// <summary> /// Register student /// </summary> /// <param name="request">Request</param> /// <returns>Result</returns> public virtual StudentRegistrationResult RegisterStudent(StudentRegistrationRequest request) { if (request == null) { throw new ArgumentNullException("request"); } var result = new StudentRegistrationResult(); if (request.Student.IsRegistered()) { result.AddError("Current student is already registered"); return(result); } if (String.IsNullOrEmpty(request.Username)) { result.AddError("Username Is Not Provided"); return(result); } if (String.IsNullOrWhiteSpace(request.Password)) { result.AddError("Password Is Not Provided"); return(result); } //validate unique user if (_studentService.GetStudentByUsername(request.Username) != null) { result.AddError("Username Already Exists"); return(result); } //at this point request is valid request.Student.Username = request.Username; string saltKey = _encryptionService.CreateSaltKey(5); request.Student.PasswordSalt = saltKey; request.Student.Password = _encryptionService.CreatePasswordHash(request.Password, saltKey); request.Student.Active = request.IsApproved; //add to 'Registered' role var registeredRole = _studentService.GetAvailableStudentRole(); if (registeredRole == null) { throw new T802Exception("'Registered' role could not be loaded"); } request.Student.StudentRoles.Add(registeredRole); // Add rewards points request.Student.AddRewardPointsHistoryEntry(100, "Registered as student"); // Add achievement request.Student.AddAchievementHistoryEntry(_achievementService.GetAchievementBySystemName(SystemStudentAchievementNames.Registered)); _studentService.InsertStudent(request.Student); return(result); }