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\Option;
use App\Group;
use App\Http\Requests\StoreTest;
class TestController extends Controller
{
@ -128,11 +129,11 @@ class TestController extends Controller
*
*/
public function addTest()
public function addTest(StoreTest $request)
{
$test = new Test();
$test->createTest(request()->all());
return redirect('/admin/tests');
$test->createTest($request->all());
return redirect("/admin/tests/$test->id");
}
public function confirmDeleteTest(Test $test)
@ -170,9 +171,9 @@ class TestController extends Controller
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");
}

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

View file

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

View file

@ -16,10 +16,10 @@ class CreateTestsTable extends Migration
Schema::create('tests', function (Blueprint $table) {
$table->increments('id');
$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_to_fail')->unsigned()->nullable();
$table->integer('time_limit')->unsigned;
$table->integer('question_count_to_fail')->unsigned()->default(0);
$table->integer('time_limit')->unsigned()->default(0);
$table->timestamps();
});
}

View file

@ -18,7 +18,11 @@
<tr>
<td>{{ $test->title }}</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>
<form method="get" class="pull-right">
<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="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>
</br>
<form method="POST" action="/{{ Auth::user()->getAdminPath() }}/tests/new">