Added validation to tests creation and fixed a bug related to amount of wrong questions allowed in tests

This commit is contained in:
mwalbeck 2016-10-22 13:57:56 +02:00
parent b9ae12aa60
commit 7af12d0f5b
9 changed files with 287 additions and 142 deletions

View file

@ -10,6 +10,7 @@ use App\Testdetail;
use App\Question; use App\Question;
use App\Option; use App\Option;
use App\Group; use App\Group;
use App\Http\Requests\StoreTest;
class TestController extends Controller class TestController extends Controller
{ {
@ -128,11 +129,11 @@ class TestController extends Controller
* *
*/ */
public function addTest() public function addTest(StoreTest $request)
{ {
$test = new Test(); $test = new Test();
$test->createTest(request()->all()); $test->createTest($request->all());
return redirect('/admin/tests'); return redirect("/admin/tests/$test->id");
} }
public function confirmDeleteTest(Test $test) public function confirmDeleteTest(Test $test)
@ -170,9 +171,9 @@ class TestController extends Controller
return view('tests.question.new', compact('test'), compact('question_number')); return view('tests.question.new', compact('test'), compact('question_number'));
} }
public function updateTest(Test $test) public function updateTest(Test $test, StoreTest $request)
{ {
$test->updateTest(request()->all()); $test->updateTest($request->all());
return redirect("/admin/tests/$test->id"); return redirect("/admin/tests/$test->id");
} }

View file

@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class StoreTest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
if (Auth::user()->isAdministrator()) {
return true;
}
if (Auth::user()->isModerator()) {
return true;
}
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
"title" => "required|max:255|string",
"question_count" => "required|numeric",
"question_count_to_fail" => "numeric",
"time_limit" => "numeric",
"group_id" => "numeric"
];
}
}

View file

@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUser extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}

View file

@ -36,7 +36,7 @@ class Test extends Model
if ($this->question_count_to_fail == null) { if ($this->question_count_to_fail == null) {
return false; return false;
} }
return $this->question_count_to_fail <= $wrong_answers; return $this->question_count_to_fail < $wrong_answers;
} }
public function lastQuestion($question_counter) public function lastQuestion($question_counter)
@ -47,13 +47,15 @@ class Test extends Model
return false; return false;
} }
public function createTest($request) public function createTest(Request $request)
{ {
$this->title = $request["title"]; $this->title = $request["title"];
$this->question_count = $request["question_count"]; $this->question_count = $request["question_count"];
$this->question_count_to_fail = $request["question_count_to_fail"]; if ($request["question_count_to_fail"]) {
$this->question_count_to_fail = $request["question_count_to_fail"];
}
$this->time_limit = $request["time_limit"]; $this->time_limit = $request["time_limit"];
if (Auth::user()->isAdministrator) { if (Auth::user()->isAdministrator()) {
$this->group_id = $request["group_id"]; $this->group_id = $request["group_id"];
$this->save(); $this->save();
return true; return true;
@ -62,7 +64,7 @@ class Test extends Model
return true; return true;
} }
public function updateTest($request) public function updateTest(Request $request)
{ {
$this->update($request); $this->update($request);
} }

View file

@ -6,7 +6,8 @@
"type": "project", "type": "project",
"require": { "require": {
"php": ">=5.6.4", "php": ">=5.6.4",
"laravel/framework": "5.3.*" "laravel/framework": "5.3.*",
"components/jquery": "3.1.*"
}, },
"require-dev": { "require-dev": {
"fzaninotto/faker": "~1.4", "fzaninotto/faker": "~1.4",

309
composer.lock generated
View file

@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "ed9df8b872992035f068a7fe461a635a", "hash": "d1ab2b34732fa883d96587f1325acd39",
"content-hash": "76036da3b5b55b91dbe1e1affa01bf9e", "content-hash": "2c273b58cdefef996d93a64635db5186",
"packages": [ "packages": [
{ {
"name": "classpreloader/classpreloader", "name": "classpreloader/classpreloader",
@ -61,6 +61,46 @@
], ],
"time": "2015-11-09 22:51:51" "time": "2015-11-09 22:51:51"
}, },
{
"name": "components/jquery",
"version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/components/jquery.git",
"reference": "09a1658378bc1f818856086396ebeab7d0ec2276"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/components/jquery/zipball/09a1658378bc1f818856086396ebeab7d0ec2276",
"reference": "09a1658378bc1f818856086396ebeab7d0ec2276",
"shasum": ""
},
"type": "component",
"extra": {
"component": {
"scripts": [
"jquery.js"
],
"files": [
"jquery.min.js",
"jquery.min.map"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "John Resig",
"email": "jeresig@gmail.com"
}
],
"description": "jQuery JavaScript Library",
"homepage": "http://jquery.com",
"time": "2016-09-23 06:06:29"
},
{ {
"name": "dnoegel/php-xdg-base-dir", "name": "dnoegel/php-xdg-base-dir",
"version": "0.1", "version": "0.1",
@ -308,16 +348,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v5.3.4", "version": "v5.3.19",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "7159ffbadc79558a42ece2cdd1ec2e7e13105b5d" "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/7159ffbadc79558a42ece2cdd1ec2e7e13105b5d", "url": "https://api.github.com/repos/laravel/framework/zipball/f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1",
"reference": "7159ffbadc79558a42ece2cdd1ec2e7e13105b5d", "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -365,6 +405,7 @@
"illuminate/http": "self.version", "illuminate/http": "self.version",
"illuminate/log": "self.version", "illuminate/log": "self.version",
"illuminate/mail": "self.version", "illuminate/mail": "self.version",
"illuminate/notifications": "self.version",
"illuminate/pagination": "self.version", "illuminate/pagination": "self.version",
"illuminate/pipeline": "self.version", "illuminate/pipeline": "self.version",
"illuminate/queue": "self.version", "illuminate/queue": "self.version",
@ -398,7 +439,7 @@
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
"symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).", "symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).",
"symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).", "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).",
"symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." "symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)."
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -431,24 +472,24 @@
"framework", "framework",
"laravel" "laravel"
], ],
"time": "2016-08-26 21:40:26" "time": "2016-10-17 19:35:14"
}, },
{ {
"name": "league/flysystem", "name": "league/flysystem",
"version": "1.0.27", "version": "1.0.32",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/flysystem.git", "url": "https://github.com/thephpleague/flysystem.git",
"reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9" "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/50e2045ed70a7e75a5e30bc3662904f3b67af8a9", "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
"reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9", "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.4.0" "php": ">=5.5.9"
}, },
"conflict": { "conflict": {
"league/flysystem-sftp": "<1.0.6" "league/flysystem-sftp": "<1.0.6"
@ -514,7 +555,7 @@
"sftp", "sftp",
"storage" "storage"
], ],
"time": "2016-08-10 08:55:11" "time": "2016-10-19 20:38:46"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
@ -687,16 +728,16 @@
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v2.1.0", "version": "v2.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3" "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/47b254ea51f1d6d5dc04b9b299e88346bf2369e3", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4dd659edadffdc2143e4753df655d866dbfeedf0",
"reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3", "reference": "4dd659edadffdc2143e4753df655d866dbfeedf0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -734,20 +775,20 @@
"parser", "parser",
"php" "php"
], ],
"time": "2016-04-19 13:41:41" "time": "2016-09-16 12:04:44"
}, },
{ {
"name": "paragonie/random_compat", "name": "paragonie/random_compat",
"version": "v2.0.2", "version": "v2.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/paragonie/random_compat.git", "url": "https://github.com/paragonie/random_compat.git",
"reference": "088c04e2f261c33bed6ca5245491cfca69195ccf" "reference": "c0125896dbb151380ab47e96c621741e79623beb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/088c04e2f261c33bed6ca5245491cfca69195ccf", "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c0125896dbb151380ab47e96c621741e79623beb",
"reference": "088c04e2f261c33bed6ca5245491cfca69195ccf", "reference": "c0125896dbb151380ab47e96c621741e79623beb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -782,26 +823,34 @@
"pseudorandom", "pseudorandom",
"random" "random"
], ],
"time": "2016-04-03 06:00:07" "time": "2016-10-17 15:23:22"
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "1.0.0", "version": "1.0.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"shasum": "" "shasum": ""
}, },
"require": {
"php": ">=5.3.0"
},
"type": "library", "type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": { "autoload": {
"psr-0": { "psr-4": {
"Psr\\Log\\": "" "Psr\\Log\\": "Psr/Log/"
} }
}, },
"notification-url": "https://packagist.org/downloads/", "notification-url": "https://packagist.org/downloads/",
@ -815,12 +864,13 @@
} }
], ],
"description": "Common interface for logging libraries", "description": "Common interface for logging libraries",
"homepage": "https://github.com/php-fig/log",
"keywords": [ "keywords": [
"log", "log",
"psr", "psr",
"psr-3" "psr-3"
], ],
"time": "2012-12-21 11:40:51" "time": "2016-10-10 12:19:37"
}, },
{ {
"name": "psy/psysh", "name": "psy/psysh",
@ -896,16 +946,16 @@
}, },
{ {
"name": "ramsey/uuid", "name": "ramsey/uuid",
"version": "3.5.0", "version": "3.5.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/ramsey/uuid.git", "url": "https://github.com/ramsey/uuid.git",
"reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786" "reference": "a07797b986671b0dc823885a81d5e3516b931599"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/ramsey/uuid/zipball/a6d15c8618ea3951fd54d34e326b68d3d0bc0786", "url": "https://api.github.com/repos/ramsey/uuid/zipball/a07797b986671b0dc823885a81d5e3516b931599",
"reference": "a6d15c8618ea3951fd54d34e326b68d3d0bc0786", "reference": "a07797b986671b0dc823885a81d5e3516b931599",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -972,7 +1022,7 @@
"identifier", "identifier",
"uuid" "uuid"
], ],
"time": "2016-08-02 18:39:32" "time": "2016-10-02 15:51:17"
}, },
{ {
"name": "swiftmailer/swiftmailer", "name": "swiftmailer/swiftmailer",
@ -1029,20 +1079,21 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5" "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/f9e638e8149e9e41b570ff092f8007c477ef0ce5", "url": "https://api.github.com/repos/symfony/console/zipball/6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
"reference": "f9e638e8149e9e41b570ff092f8007c477ef0ce5", "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.5.9", "php": ">=5.5.9",
"symfony/debug": "~2.8|~3.0",
"symfony/polyfill-mbstring": "~1.0" "symfony/polyfill-mbstring": "~1.0"
}, },
"require-dev": { "require-dev": {
@ -1085,20 +1136,20 @@
], ],
"description": "Symfony Console Component", "description": "Symfony Console Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-26 08:04:17" "time": "2016-09-28 00:11:12"
}, },
{ {
"name": "symfony/debug", "name": "symfony/debug",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/debug.git", "url": "https://github.com/symfony/debug.git",
"reference": "4c1b48c6a433e194a42ce3d064cd43ceb7c3682f" "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/4c1b48c6a433e194a42ce3d064cd43ceb7c3682f", "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
"reference": "4c1b48c6a433e194a42ce3d064cd43ceb7c3682f", "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1142,11 +1193,11 @@
], ],
"description": "Symfony Debug Component", "description": "Symfony Debug Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-26 08:04:17" "time": "2016-09-06 11:02:40"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/event-dispatcher.git", "url": "https://github.com/symfony/event-dispatcher.git",
@ -1206,16 +1257,16 @@
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "8201978de88a9fa0923e18601bb17f1df9c721e7" "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/8201978de88a9fa0923e18601bb17f1df9c721e7", "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f",
"reference": "8201978de88a9fa0923e18601bb17f1df9c721e7", "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1251,20 +1302,20 @@
], ],
"description": "Symfony Finder Component", "description": "Symfony Finder Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-06-29 05:41:56" "time": "2016-09-28 00:11:12"
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "399a44b73f6c176de40fb063dcdaa578bcfb94d6" "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/399a44b73f6c176de40fb063dcdaa578bcfb94d6", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5114f1becca9f29e3af94374f1689c83c1aa3d97",
"reference": "399a44b73f6c176de40fb063dcdaa578bcfb94d6", "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1304,20 +1355,20 @@
], ],
"description": "Symfony HttpFoundation Component", "description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-17 14:02:08" "time": "2016-09-21 20:55:10"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "a8df564d323df5a3fec73085c30211a3ee448fb0" "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a8df564d323df5a3fec73085c30211a3ee448fb0", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dc339d6eebadfa6e39c52868b4d4a715eff13c69",
"reference": "a8df564d323df5a3fec73085c30211a3ee448fb0", "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1386,7 +1437,7 @@
], ],
"description": "Symfony HttpKernel Component", "description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-30 09:30:46" "time": "2016-10-03 19:01:06"
}, },
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
@ -1557,16 +1608,16 @@
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758" "reference": "66de154ae86b1a07001da9fbffd620206e4faf94"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/04c2dfaae4ec56a5c677b0c69fac34637d815758", "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94",
"reference": "04c2dfaae4ec56a5c677b0c69fac34637d815758", "reference": "66de154ae86b1a07001da9fbffd620206e4faf94",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1602,20 +1653,20 @@
], ],
"description": "Symfony Process Component", "description": "Symfony Process Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-28 11:13:48" "time": "2016-09-29 14:13:09"
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3" "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/22c7adc204057a0ff0b12eea2889782a5deb70a3", "url": "https://api.github.com/repos/symfony/routing/zipball/8edf62498a1a4c57ba317664a4b698339c10cdf6",
"reference": "22c7adc204057a0ff0b12eea2889782a5deb70a3", "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1677,20 +1728,20 @@
"uri", "uri",
"url" "url"
], ],
"time": "2016-06-29 05:41:56" "time": "2016-08-16 14:58:24"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "7713ddf81518d0823b027fe74ec390b80f6b6536" "reference": "93013a18d272e59dab8e67f583155b78c68947eb"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/7713ddf81518d0823b027fe74ec390b80f6b6536", "url": "https://api.github.com/repos/symfony/translation/zipball/93013a18d272e59dab8e67f583155b78c68947eb",
"reference": "7713ddf81518d0823b027fe74ec390b80f6b6536", "reference": "93013a18d272e59dab8e67f583155b78c68947eb",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1741,20 +1792,20 @@
], ],
"description": "Symfony Translation Component", "description": "Symfony Translation Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-26 08:04:17" "time": "2016-09-06 11:02:40"
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "076235b750137518408f1bc17a8e69b43211836a" "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/076235b750137518408f1bc17a8e69b43211836a", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/70bfe927b86ba9999aeebd829715b0bb2cd39a10",
"reference": "076235b750137518408f1bc17a8e69b43211836a", "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1804,20 +1855,20 @@
"debug", "debug",
"dump" "dump"
], ],
"time": "2016-07-26 08:04:17" "time": "2016-09-29 14:13:09"
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
"version": "v2.3.0", "version": "v2.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/vlucas/phpdotenv.git", "url": "https://github.com/vlucas/phpdotenv.git",
"reference": "9ca5644c536654e9509b9d257f53c58630eb2a6a" "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/9ca5644c536654e9509b9d257f53c58630eb2a6a", "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
"reference": "9ca5644c536654e9509b9d257f53c58630eb2a6a", "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1829,7 +1880,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "2.3-dev" "dev-master": "2.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1854,7 +1905,7 @@
"env", "env",
"environment" "environment"
], ],
"time": "2016-06-14 14:14:52" "time": "2016-09-01 10:05:43"
} }
], ],
"packages-dev": [ "packages-dev": [
@ -2072,16 +2123,16 @@
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.5.1", "version": "1.5.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "a8773992b362b58498eed24bf85005f363c34771" "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a8773992b362b58498eed24bf85005f363c34771", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
"reference": "a8773992b362b58498eed24bf85005f363c34771", "reference": "ea74994a3dc7f8d2f65a06009348f2d63c81e61f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2110,7 +2161,7 @@
"object", "object",
"object graph" "object graph"
], ],
"time": "2015-11-20 12:04:31" "time": "2016-09-16 13:37:59"
}, },
{ {
"name": "phpdocumentor/reflection-common", "name": "phpdocumentor/reflection-common",
@ -2168,16 +2219,16 @@
}, },
{ {
"name": "phpdocumentor/reflection-docblock", "name": "phpdocumentor/reflection-docblock",
"version": "3.1.0", "version": "3.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
"reference": "9270140b940ff02e58ec577c237274e92cd40cdd" "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"reference": "9270140b940ff02e58ec577c237274e92cd40cdd", "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2209,7 +2260,7 @@
} }
], ],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"time": "2016-06-10 09:48:41" "time": "2016-09-30 07:12:33"
}, },
{ {
"name": "phpdocumentor/type-resolver", "name": "phpdocumentor/type-resolver",
@ -2566,24 +2617,24 @@
}, },
{ {
"name": "phpunit/phpunit", "name": "phpunit/phpunit",
"version": "5.5.4", "version": "5.6.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git", "url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5" "reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6e88e56c912133de6e99b87728cca7ed70c5f5", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/60c32c5b5e79c2248001efa2560f831da11cc2d7",
"reference": "3e6e88e56c912133de6e99b87728cca7ed70c5f5", "reference": "60c32c5b5e79c2248001efa2560f831da11cc2d7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-pcre": "*", "ext-libxml": "*",
"ext-reflection": "*", "ext-mbstring": "*",
"ext-spl": "*", "ext-xml": "*",
"myclabs/deep-copy": "~1.3", "myclabs/deep-copy": "~1.3",
"php": "^5.6 || ^7.0", "php": "^5.6 || ^7.0",
"phpspec/prophecy": "^1.3.1", "phpspec/prophecy": "^1.3.1",
@ -2605,7 +2656,11 @@
"conflict": { "conflict": {
"phpdocumentor/reflection-docblock": "3.0.2" "phpdocumentor/reflection-docblock": "3.0.2"
}, },
"require-dev": {
"ext-pdo": "*"
},
"suggest": { "suggest": {
"ext-xdebug": "*",
"phpunit/php-invoker": "~1.1" "phpunit/php-invoker": "~1.1"
}, },
"bin": [ "bin": [
@ -2614,7 +2669,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "5.5.x-dev" "dev-master": "5.6.x-dev"
} }
}, },
"autoload": { "autoload": {
@ -2640,20 +2695,20 @@
"testing", "testing",
"xunit" "xunit"
], ],
"time": "2016-08-26 07:11:44" "time": "2016-10-07 13:03:26"
}, },
{ {
"name": "phpunit/phpunit-mock-objects", "name": "phpunit/phpunit-mock-objects",
"version": "3.2.6", "version": "3.4.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
"reference": "46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49" "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49", "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/238d7a2723bce689c79eeac9c7d5e1d623bb9dc2",
"reference": "46b249b43fd2ed8e127aa0fdb3cbcf56e9bc0e49", "reference": "238d7a2723bce689c79eeac9c7d5e1d623bb9dc2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2699,7 +2754,7 @@
"mock", "mock",
"xunit" "xunit"
], ],
"time": "2016-08-26 05:51:59" "time": "2016-10-09 07:01:45"
}, },
{ {
"name": "sebastian/code-unit-reverse-lookup", "name": "sebastian/code-unit-reverse-lookup",
@ -3216,16 +3271,16 @@
}, },
{ {
"name": "symfony/css-selector", "name": "symfony/css-selector",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/css-selector.git", "url": "https://github.com/symfony/css-selector.git",
"reference": "2851e1932d77ce727776154d659b232d061e816a" "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/2851e1932d77ce727776154d659b232d061e816a", "url": "https://api.github.com/repos/symfony/css-selector/zipball/ca809c64072e0fe61c1c7fb3c76cdc32265042ac",
"reference": "2851e1932d77ce727776154d659b232d061e816a", "reference": "ca809c64072e0fe61c1c7fb3c76cdc32265042ac",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3265,20 +3320,20 @@
], ],
"description": "Symfony CssSelector Component", "description": "Symfony CssSelector Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-06-29 05:41:56" "time": "2016-09-06 11:02:40"
}, },
{ {
"name": "symfony/dom-crawler", "name": "symfony/dom-crawler",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dom-crawler.git", "url": "https://github.com/symfony/dom-crawler.git",
"reference": "c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9" "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9", "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb7395e8b1db3654de82b9f35d019958276de4d7",
"reference": "c7b9b8db3a6f2bac76dcd9a9db5446f2591897f9", "reference": "bb7395e8b1db3654de82b9f35d019958276de4d7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3321,20 +3376,20 @@
], ],
"description": "Symfony DomCrawler Component", "description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-26 08:04:17" "time": "2016-08-05 08:37:39"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v3.1.3", "version": "v3.1.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "1819adf2066880c7967df7180f4f662b6f0567ac" "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/1819adf2066880c7967df7180f4f662b6f0567ac", "url": "https://api.github.com/repos/symfony/yaml/zipball/368b9738d4033c8b93454cb0dbd45d305135a6d3",
"reference": "1819adf2066880c7967df7180f4f662b6f0567ac", "reference": "368b9738d4033c8b93454cb0dbd45d305135a6d3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3370,7 +3425,7 @@
], ],
"description": "Symfony Yaml Component", "description": "Symfony Yaml Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2016-07-17 14:02:08" "time": "2016-09-25 08:27:07"
}, },
{ {
"name": "webmozart/assert", "name": "webmozart/assert",

View file

@ -16,10 +16,10 @@ class CreateTestsTable extends Migration
Schema::create('tests', function (Blueprint $table) { Schema::create('tests', function (Blueprint $table) {
$table->increments('id'); $table->increments('id');
$table->string('title'); $table->string('title');
$table->integer('group_id')->unsigned()->index()->nullable()->default(1); $table->integer('group_id')->unsigned()->index()->default(1);
$table->integer('question_count')->unsigned(); $table->integer('question_count')->unsigned();
$table->integer('question_count_to_fail')->unsigned()->nullable(); $table->integer('question_count_to_fail')->unsigned()->default(0);
$table->integer('time_limit')->unsigned; $table->integer('time_limit')->unsigned()->default(0);
$table->timestamps(); $table->timestamps();
}); });
} }

View file

@ -18,7 +18,11 @@
<tr> <tr>
<td>{{ $test->title }}</td> <td>{{ $test->title }}</td>
<td>{{ $test->question_count }}</td> <td>{{ $test->question_count }}</td>
<td>{{ $test->timeLimitInMinutes() }} min.</td> @if ($test->time_limit === 0)
<td>Unlimited</td>
@else
<td>{{ $test->timeLimitInMinutes() }} min.</td>
@endif
<td> <td>
<form method="get" class="pull-right"> <form method="get" class="pull-right">
<button class="btn btn-xs btn-default pull-left" formaction="/test/{{ $test->id }}">Start</button> <button class="btn btn-xs btn-default pull-left" formaction="/test/{{ $test->id }}">Start</button>

View file

@ -4,6 +4,16 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="col-md-6 col-md-offset-3"> <div class="col-md-6 col-md-offset-3">
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<h1>Create New Test</h1> <h1>Create New Test</h1>
</br> </br>
<form method="POST" action="/{{ Auth::user()->getAdminPath() }}/tests/new"> <form method="POST" action="/{{ Auth::user()->getAdminPath() }}/tests/new">