did some more refactoring and add more test taking functionality

This commit is contained in:
mwalbeck 2016-09-10 15:17:31 +02:00
parent 58551fc668
commit 7987e74a6e
15 changed files with 225 additions and 153 deletions

View file

@ -23,6 +23,38 @@ class AdminController extends Controller
return view('admin.admin');
}
public function showUser()
{
$users = User::all();
return view('admin.show.users', compact('users'));
}
public function delUser(User $user)
{
return view('admin.delete.user', compact('user'));
}
public function deleteUser(User $user)
{
$user->deleteUser();
return redirect('/admin/users');
}
public function user()
{
return view('admin.new.user');
}
public function addUser()
{
$user = new User;
$user->addUser(request()->all());
return redirect('/admin/users');
}
public function showTests()
{
$tests = Test::all();
@ -83,60 +115,6 @@ class AdminController extends Controller
return redirect('/admin/tests');
}
public function showUser()
{
$users = User::all();
return view('admin.show.users', compact('users'));
}
public function editUser(User $user)
{
return view('admin.edit.user', compact('user'));
}
public function updateUser(User $user)
{
$user->updateInfo(request()->all());
return redirect('/admin/users');
}
public function delUser(User $user)
{
return view('admin.delete.user', compact('user'));
}
public function deleteUser(User $user)
{
$user->deleteUser();
return redirect('/admin/users');
}
public function user()
{
return view('admin.new.user');
}
public function addUser()
{
$user = new User;
$user->name = request()->name;
$user->email = request()->email;
$user->password = bcrypt('request()->password');
if (!empty(request()->group_id)) {
$user->group_id = request()->group_id;
}
if (!empty(request()->enabled)) {
$user->enabled = request()->enabled;
}
if (!empty(request()->access_level)) {
$user->access_level = request()->access_level;
}
$user->save();
return redirect('/admin/users');
}
public function question(Test $test)
{
$question_number = count($test->questions)+1;
@ -146,6 +124,7 @@ class AdminController extends Controller
public function addQuestion(Test $test)
{
$question = new Question;
$question->title = request()->title;
$question->question = request()->question;
if (empty(Option::all()->last()->id)) {
$question->answer_id = 1;

View file

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Test;
use App\User;
class HomeController extends Controller
{
@ -40,24 +41,17 @@ class HomeController extends Controller
return view('user.settings', compact('user'));
}
public function updateSettings()
public function updatePassword()
{
$user = Auth::user();
$email = request()->email;
$old_password = request()->old_password;
$new_password1 = request()->new_password1;
$new_password2 = request()->new_password2;
$user->updatePassword(request()->all());
return redirect('/settings');
}
if (!empty($email)) {
$user->email = $email;
}
if ((!empty($old_password)) && ($user->getAuthPassword() == password_verify($old_password, $user->getAuthPassword()))) {
if ($new_password1 == $new_password2) {
$user->password = password_hash($new_password1, PASSWORD_DEFAULT);
}
}
$user->update();
public function updateEmail()
{
$user = Auth::user();
$user->updateEmail(request()->all());
return redirect('/settings');
}
}

View file

@ -10,32 +10,24 @@ class TestController extends Controller
{
public function startTest(Test $test)
{
$test_id = $test->id;
$question_counter = 1;
$wrong_answers = 0;
$questions = $test->questions;
$rand_questions = $questions->random($test->question_count);
$shuffled_questions = $rand_questions->shuffle();
session(['questions' => $shuffled_questions, 'question_counter' => $question_counter, 'test_id' => $test_id, 'wrong_answers' => $wrong_answers]);
if (!$test->startTest(\Auth::user())) {
//session flash
return redirect('/home');
}
return redirect()->action('TestController@showQuestion');
}
public function showQuestion()
{
$question_counter = session('question_counter');
$questions = session('questions');
$question = $questions->get($question_counter-1);
$options = $question->options;
$shuffled_options = $options->shuffle();
session(['options' => $shuffled_options]);
return view('tests.index', compact('question'), compact('shuffled_options'));
$question = session('questions')->get(session('question_counter')-1);
$options = $question->options->shuffle();
session(['options' => $options]);
return view('tests.index', compact('question'), compact('options'));
}
public function answerQuestion()
{
$questions = session('questions');
$question_counter = session('question_counter');
$question = $questions->get($question_counter-1);
$question = session('questions')->get(session('question_counter')-1);
$question_id = $question->id;
$answer_id = request()->get('answer');
if (!empty(session('answers'))) {
@ -43,32 +35,47 @@ class TestController extends Controller
}
$answers["$question_id"] = $answer_id;
session(['answers' => $answers]);
return redirect()->action('TestController@showAnswer');
return redirect()->action('TestController@isCorrect');
}
public function isCorrect()
{
$question = session('questions')->get(session('question_counter')-1);
if (!$question->isCorrect(session('answers')["$question->id"])) {
session(['wrong_answers' => session('wrong_answers')+1]);
session(['is_correct' => false]);
} else {
session(['is_correct' => true]);
}
return redirect()->action('TestController@hasFailed');
}
public function hasFailed()
{
if (session('test')->hasFailed(session('wrong_answers'))) {
//Abort logic
return redirect('/home');
}
return redirect()->action('TestController@lastQuestion');
}
public function lastQuestion()
{
/*if (session('test')->lastQuestion(session('question_counter'))) {
}*/
return redirect()->action('TestController@showAnswer');
}
public function showAnswer()
{
$question_counter = session('question_counter');
$questions = session('questions');
$question = $questions->get($question_counter-1);
$question_answer = $question->answer_id;
$question_counter++;
if (request()->get('answer') == $question_answer) {
$question = session('questions')->get(session('question_counter')-1);
if (session('answers')["$question->id"] == $question->answer_id) {
$question_status = "GZ, that was the correct answer!";
} else {
$question_status = "Sorry, wrong answer, pal!";
}
session(['question_counter' => $question_counter]);
return view('tests.answer', compact('question_status'), compact('question_answer'));
session(['question_counter' => session('question_counter')+1]);
return view('tests.answer');
}
}