Esempio n. 1
0
 public function show($id, TestValidator $testvalidator)
 {
     $test = Test::with('course')->findOrFail($id);
     if (!$test->isPublished()) {
         abort(404);
     }
     if (!$test->isUnlocked()) {
         return redirect('course/' . $test->course->id)->with(['error' => 'Et voi vielä suorittaa koetta <b>' . $test->title . '</b>!']);
     }
     $viewData = ['test' => $test, 'hasPassed' => false, 'hasPassedFull' => false, 'minimumToPass' => ceil($test->questions()->count() * 0.5), 'validation' => false, 'given_answers' => [], 'feedback' => [], 'authentication_type' => 0, 'isMaterialPage' => false];
     $data = [];
     if (Auth::check()) {
         $archive = Auth::user()->archives()->where('test_id', $id)->first();
         if ($archive && $archive->data) {
             $data = (object) json_decode($archive->data, true);
             $viewData['given_answers'] = $data->given_answers;
             if (@$data->feedback) {
                 $viewData['feedback'] = $data->feedback;
             }
             $fullValidation = $testvalidator->WithAnswers($test, $data->given_answers);
             $viewData['validation'] = $fullValidation['validation'];
             $viewData['hasPassed'] = $fullValidation['num_correct'] / $fullValidation['total'] >= 0.5;
             $viewData['hasPassedFull'] = $fullValidation['num_correct'] == $fullValidation['total'];
         }
     }
     return view('test.show')->with($viewData);
 }
Esempio n. 2
0
 function revalidate($id, TestValidator $testvalidator)
 {
     $archive = Archive::findOrFail($id);
     $archive->data = json_decode($archive->data, true);
     $old_data = $archive->data;
     $data = $testvalidator->WithAnswers($archive->test, $archive->data['given_answers']);
     if (@$old_data['feedback']) {
         $data['feedback'] = $old_data['feedback'];
     }
     $archive->data = json_encode($data);
     $archive->save();
     return ['success' => true, 'data' => $data];
 }