mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-24 12:07:23 +08:00
fix exam duration
This commit is contained in:
@@ -46,7 +46,7 @@ class ExamController extends Controller
|
||||
'name' => 'required|string',
|
||||
'indexes' => 'required|array|min:1',
|
||||
'indexes.*.index' => ['required', Rule::in(array_keys(Exam::$indexes))],
|
||||
'indexes.*.require_value' => 'required|numeric',
|
||||
'indexes.*.require_value' => 'nullable|numeric',
|
||||
'status' => 'required|in:0,1',
|
||||
'duration' => 'nullable|numeric'
|
||||
];
|
||||
@@ -81,7 +81,8 @@ class ExamController extends Controller
|
||||
$rules = [
|
||||
'name' => 'required|string',
|
||||
'indexes' => 'required|array|min:1',
|
||||
'indexes.*.name' => 'required',
|
||||
'indexes.*.index' => ['required', Rule::in(array_keys(Exam::$indexes))],
|
||||
'indexes.*.require_value' => 'nullable|numeric',
|
||||
'status' => 'required|in:0,1',
|
||||
'duration' => 'nullable|numeric'
|
||||
];
|
||||
|
||||
@@ -23,7 +23,7 @@ class ExamResource extends JsonResource
|
||||
'description' => $this->description,
|
||||
'begin' => $this->begin,
|
||||
'end' => $this->end,
|
||||
'duration' => $this->duration,
|
||||
'duration' => $this->duration ?: '',
|
||||
'duration_text' => $this->duration_text,
|
||||
'filters' => $this->filters,
|
||||
'filters_formatted' => $this->formatFilters($this->resource),
|
||||
|
||||
+14
-2
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Exam extends NexusModel
|
||||
{
|
||||
protected $fillable = ['name', 'description', 'begin', 'end', 'duration', 'status', 'is_discovered', 'filters', 'indexes'];
|
||||
@@ -49,6 +51,13 @@ class Exam extends NexusModel
|
||||
self::FILTER_USER_REGISTER_TIME_RANGE => ['name' => 'User register time range'],
|
||||
];
|
||||
|
||||
protected static function booted()
|
||||
{
|
||||
static::saving(function (Model $model) {
|
||||
$model->duration = (int)$model->duration;
|
||||
});
|
||||
}
|
||||
|
||||
public function getStatusTextAttribute(): string
|
||||
{
|
||||
return self::$status[$this->status]['text'] ?? '';
|
||||
@@ -59,9 +68,12 @@ class Exam extends NexusModel
|
||||
return self::$discovers[$this->is_discovered]['text'] ?? '';
|
||||
}
|
||||
|
||||
public function getDurationTextAttribute(): string
|
||||
public function getDurationTextAttribute($value): string
|
||||
{
|
||||
return $this->duration . ' Days';
|
||||
if ($value > 0) {
|
||||
return $value . ' Days';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class ExamRepository extends BaseRepository
|
||||
if (isset($index['checked']) && !$index['checked']) {
|
||||
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(
|
||||
'Invalid require value for index: %s.', $index['index']
|
||||
));
|
||||
@@ -171,8 +171,8 @@ class ExamRepository extends BaseRepository
|
||||
}
|
||||
|
||||
$added = $user->added->toDateTimeString();
|
||||
$registerTimeBegin = isset($filters->register_time_range[0]) ? Carbon::parse($filters->register_time_range[0])->toDateString() : '';
|
||||
$registerTimeEnd = isset($filters->register_time_range[1]) ? Carbon::parse($filters->register_time_range[1])->toDateString() : '';
|
||||
$registerTimeBegin = isset($filters->register_time_range[0]) ? Carbon::parse($filters->register_time_range[0])->toDateTimeString() : '';
|
||||
$registerTimeEnd = isset($filters->register_time_range[1]) ? Carbon::parse($filters->register_time_range[1])->toDateTimeString() : '';
|
||||
if (empty($registerTimeBegin)) {
|
||||
do_log("$logPrefix, exam: {$exam->id} no register_time_begin");
|
||||
return false;
|
||||
@@ -448,6 +448,7 @@ class ExamRepository extends BaseRepository
|
||||
}
|
||||
if ($exams->count() > 1) {
|
||||
do_log("Valid and discovered exam more than 1.", "warning");
|
||||
return false;
|
||||
}
|
||||
/** @var Exam $exam */
|
||||
$exam = $exams->first();
|
||||
|
||||
Reference in New Issue
Block a user