did some more refactoring and add more test taking functionality
This commit is contained in:
parent
58551fc668
commit
7987e74a6e
15 changed files with 225 additions and 153 deletions
app/Http/Controllers
|
@ -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;
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue