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
+5
View File
@@ -5,10 +5,12 @@ namespace App\Http\Controllers;
use App\Http\Resources\ExamResource; use App\Http\Resources\ExamResource;
use App\Http\Resources\ExamUserResource; use App\Http\Resources\ExamUserResource;
use App\Http\Resources\UserResource; use App\Http\Resources\UserResource;
use App\Models\Exam;
use App\Repositories\ExamRepository; use App\Repositories\ExamRepository;
use App\Repositories\UserRepository; use App\Repositories\UserRepository;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class ExamController extends Controller class ExamController extends Controller
{ {
@@ -43,6 +45,8 @@ class ExamController extends Controller
$rules = [ $rules = [
'name' => 'required|string', 'name' => 'required|string',
'indexes' => 'required|array|min:1', 'indexes' => 'required|array|min:1',
'indexes.*.index' => ['required', Rule::in(array_keys(Exam::$indexes))],
'indexes.*.require_value' => 'required|numeric',
'status' => 'required|in:0,1', 'status' => 'required|in:0,1',
'duration' => 'nullable|numeric' 'duration' => 'nullable|numeric'
]; ];
@@ -77,6 +81,7 @@ class ExamController extends Controller
$rules = [ $rules = [
'name' => 'required|string', 'name' => 'required|string',
'indexes' => 'required|array|min:1', 'indexes' => 'required|array|min:1',
'indexes.*.name' => 'required',
'status' => 'required|in:0,1', 'status' => 'required|in:0,1',
'duration' => 'nullable|numeric' 'duration' => 'nullable|numeric'
]; ];
+3 -3
View File
@@ -56,12 +56,12 @@ class ExamRepository extends BaseRepository
} }
$validIndex = []; $validIndex = [];
foreach ($params['indexes'] as $index) { foreach ($params['indexes'] as $index) {
if (!isset($index['checked']) || !$index['checked']) { if (isset($index['checked']) && !$index['checked']) {
continue; continue;
} }
if (!isset($index['require_value']) || !ctype_digit((string)$index['require_value'])) { if (!isset($index['require_value']) || !ctype_digit((string)$index['require_value'])) {
throw new \InvalidArgumentException(sprintf( throw new \InvalidArgumentException(sprintf(
'Invalid require value for index: %s.', $index['name'] 'Invalid require value for index: %s.', $index['index']
)); ));
} }
$validIndex[] = $index; $validIndex[] = $index;
@@ -77,7 +77,7 @@ class ExamRepository extends BaseRepository
if (!empty($params['begin']) && !empty($params['end']) && empty($params['duration'])) { if (!empty($params['begin']) && !empty($params['end']) && empty($params['duration'])) {
return true; 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; return true;
} }