store-exam-validate

This commit is contained in:
xiaomlove
2021-05-07 18:30:58 +08:00
parent 3853b95adc
commit 5241780cdd
2 changed files with 8 additions and 3 deletions

View File

@@ -5,10 +5,12 @@ namespace App\Http\Controllers;
use App\Http\Resources\ExamResource;
use App\Http\Resources\ExamUserResource;
use App\Http\Resources\UserResource;
use App\Models\Exam;
use App\Repositories\ExamRepository;
use App\Repositories\UserRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class ExamController extends Controller
{
@@ -43,6 +45,8 @@ class ExamController extends Controller
$rules = [
'name' => 'required|string',
'indexes' => 'required|array|min:1',
'indexes.*.index' => ['required', Rule::in(array_keys(Exam::$indexes))],
'indexes.*.require_value' => 'required|numeric',
'status' => 'required|in:0,1',
'duration' => 'nullable|numeric'
];
@@ -77,6 +81,7 @@ class ExamController extends Controller
$rules = [
'name' => 'required|string',
'indexes' => 'required|array|min:1',
'indexes.*.name' => 'required',
'status' => 'required|in:0,1',
'duration' => 'nullable|numeric'
];

View File

@@ -56,12 +56,12 @@ class ExamRepository extends BaseRepository
}
$validIndex = [];
foreach ($params['indexes'] as $index) {
if (!isset($index['checked']) || !$index['checked']) {
if (isset($index['checked']) && !$index['checked']) {
continue;
}
if (!isset($index['require_value']) || !ctype_digit((string)$index['require_value'])) {
throw new \InvalidArgumentException(sprintf(
'Invalid require value for index: %s.', $index['name']
'Invalid require value for index: %s.', $index['index']
));
}
$validIndex[] = $index;
@@ -77,7 +77,7 @@ class ExamRepository extends BaseRepository
if (!empty($params['begin']) && !empty($params['end']) && empty($params['duration'])) {
return true;
}
if (empty($params['begin']) && empty($params['end']) && ctype_digit((string)$params['duration']) && $params['duration'] > 0) {
if (empty($params['begin']) && empty($params['end']) && isset($params['duration']) && ctype_digit((string)$params['duration']) && $params['duration'] > 0) {
return true;
}