Exemple #1
0
 public static function calculateTotals($application)
 {
     // Select scores for the current application that have been finalized (appear in the judged table)
     $scores = Score::where('scores.application_id', $application->id)->join('judged', function ($join) {
         $join->on('judged.user_id', '=', 'scores.user_id')->on('judged.application_id', '=', 'scores.application_id');
     })->get();
     $objective = 0;
     $subjective = 0;
     foreach ($scores as $score) {
         if ($score->criteria->type == 'objective') {
             if ((int) $score->score) {
                 $objective += (int) $score->score;
             } else {
                 $objective += 1;
             }
         } else {
             $subjective += (int) $score->score;
         }
     }
     $application->objective_score = $objective;
     $application->subjective_score = $subjective;
     $application->total_score = $objective + $subjective;
     $application->save();
     return compact('objective', 'subjective', 'total');
 }
 public function listScores()
 {
     $applications = Application::whereIn('status', ['submitted', 'review'])->get();
     $criteria = Criteria::get();
     $appScores = [];
     // Store the average scores for each criterion of each application
     foreach ($applications as $application) {
         $scores = Score::where('scores.application_id', $application->id)->join('judged', function ($join) {
             $join->on('judged.user_id', '=', 'scores.user_id')->on('judged.application_id', '=', 'scores.application_id');
         })->get();
         $criteriaScores = [];
         foreach ($scores as $score) {
             if (!isset($criteriaScores[$score->criteria_id])) {
                 $criteriaScores[$score->criteria_id] = ['average' => 0, 'total' => 0, 'count' => 0];
             }
             $criteriaScores[$score->criteria_id]['count']++;
             $criteriaScores[$score->criteria_id]['total'] += $score->score;
             $criteriaScores[$score->criteria_id]['average'] = $criteriaScores[$score->criteria_id]['total'] / $criteriaScores[$score->criteria_id]['count'];
         }
         foreach ($criteria as $criterion) {
             if (!isset($criteriaScores[$criterion->id])) {
                 $criteriaScores[$criterion->id] = ['average' => 0];
             }
             $appScores[$application->id][$criterion->id] = $criteriaScores[$criterion->id]['average'];
         }
     }
     return view('pages/scores/list', compact('applications', 'criteria', 'appScores'));
 }
 public function index()
 {
     $quizzs = Quizz::all();
     $questions = Question::all();
     $themes = Theme::all();
     $users = User::all();
     $actifQuizz = Quizz::where('actif', 1)->first();
     if (!$actifQuizz) {
         $goodAnswerNbr = 0;
         $badAnswerNbr = 0;
     } else {
         $goodAnswerNbr = Score::where('quizz_id', $actifQuizz->id)->where('correct', true)->count();
         $badAnswerNbr = Score::where('quizz_id', $actifQuizz->id)->where('correct', false)->count();
     }
     return view('admin.dashboard.index', ['quizzs' => $quizzs, 'questions' => $questions, 'themes' => $themes, 'users' => $users, 'actifQuizz' => $actifQuizz, 'goodAnswerNbr' => $goodAnswerNbr, 'badAnswerNbr' => $badAnswerNbr]);
 }
Exemple #4
0
 public function scoreClassement($quizz)
 {
     $scoreUsers = Score::where('quizz_id', $quizz->id)->groupBy('user_id')->get();
     $scoreClassement = array();
     foreach ($scoreUsers as $score) {
         $timeQuestion = Score::where('user_id', $score->user_id)->where('quizz_id', $quizz->id)->where('already_answered', true)->get();
         $timeFirstQuestion = $timeQuestion->first()->created_at;
         $timeQuestion = Score::where('user_id', $score->user_id)->where('quizz_id', $quizz->id)->where('already_answered', true)->get();
         $timeLastQuestion = $timeQuestion->last()->updated_at;
         Carbon::setLocale('fr');
         $time = $timeLastQuestion->diffForHumans($timeFirstQuestion, true);
         $scoreUser = Score::where('user_id', $score->user_id)->where('quizz_id', $quizz->id)->where('already_answered', true)->where('correct', true)->count();
         $user = User::where('id', $score->user_id)->first();
         $scoreClassement[$user->id] = ['prenom' => $user->first_name, 'profil' => 'facebook.com/' . $user->id, 'avatar' => $user->avatar, 'score' => $scoreUser, 'time' => $time];
     }
     $classementCollect = collect($scoreClassement);
     $classementCollect->sortBy('score')->sortByDesc('time');
     return $classementCollect;
 }
Exemple #5
0
 public function question()
 {
     $quizz = $this->quizzRepository->getActif();
     $answerExist = Score::where('user_id', Auth::user()->id)->where('quizz_id', $quizz->id)->exists();
     if (!$answerExist) {
         $question = $quizz->questions->random(1);
         $this->scoreRepository->storeUnansweredQuestion($quizz, $question);
     } else {
         $unansweredQuestion = $this->scoreRepository->getUnansweredQuestion($quizz);
         if (!$unansweredQuestion) {
             return redirect('/result', 302, [], true);
         }
         $question = $unansweredQuestion->question;
     }
     $answeredQuestionNbr = $this->scoreRepository->getAnsweredQuestionNbr($quizz);
     if ($answeredQuestionNbr < $quizz->max_question) {
         return view('front.question', ['question' => $question, 'numQuest' => $answeredQuestionNbr, 'nbQuest' => $quizz->max_question]);
     }
     return redirect('/result', 302, [], true);
 }