mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-25 04:27:22 +08:00
exam user set begin and end when cronjobAssign()
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Google\Service\Dataproc\RegexValidation;
|
||||||
|
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class Exam extends NexusModel
|
class Exam extends NexusModel
|
||||||
@@ -162,4 +164,28 @@ class Exam extends NexusModel
|
|||||||
return implode("<br/>", $arr);
|
return implode("<br/>", $arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function begin(): Attribute
|
||||||
|
{
|
||||||
|
return new Attribute(
|
||||||
|
get: fn ($value) => $value ? Carbon::parse($value) : Carbon::now()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function end(): Attribute
|
||||||
|
{
|
||||||
|
return new Attribute(
|
||||||
|
get: function ($value, $attributes) {
|
||||||
|
if ($value) {
|
||||||
|
return Carbon::parse($value);
|
||||||
|
}
|
||||||
|
if (!empty($attributes['duration'])) {
|
||||||
|
/** @var Carbon $begin */
|
||||||
|
$begin = $this->begin;
|
||||||
|
return $begin->addDays($attributes['duration']);
|
||||||
|
}
|
||||||
|
throw new \RuntimeException("No specific end or duration");
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,16 +67,14 @@ class ExamUser extends NexusModel
|
|||||||
public function getBeginAttribute()
|
public function getBeginAttribute()
|
||||||
{
|
{
|
||||||
$begin = $this->getRawOriginal('begin');
|
$begin = $this->getRawOriginal('begin');
|
||||||
$end = $this->getRawOriginal('end');
|
if ($begin) {
|
||||||
if ($begin && $end) {
|
|
||||||
do_log(sprintf('examUser: %s, begin from self: %s', $this->id, $begin));
|
do_log(sprintf('examUser: %s, begin from self: %s', $this->id, $begin));
|
||||||
return $begin;
|
return $begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
$exam = $this->exam;
|
$exam = $this->exam;
|
||||||
$begin = $exam->getRawOriginal('begin');
|
$begin = $exam->getRawOriginal('begin');
|
||||||
$end = $exam->getRawOriginal('end');
|
if ($begin) {
|
||||||
if ($begin && $end) {
|
|
||||||
do_log(sprintf('examUser: %s, begin from exam(%s): %s', $this->id, $exam->id, $begin));
|
do_log(sprintf('examUser: %s, begin from exam(%s): %s', $this->id, $exam->id, $begin));
|
||||||
return $begin;
|
return $begin;
|
||||||
}
|
}
|
||||||
@@ -90,17 +88,15 @@ class ExamUser extends NexusModel
|
|||||||
|
|
||||||
public function getEndAttribute()
|
public function getEndAttribute()
|
||||||
{
|
{
|
||||||
$begin = $this->getRawOriginal('begin');
|
|
||||||
$end = $this->getRawOriginal('end');
|
$end = $this->getRawOriginal('end');
|
||||||
if ($begin && $end) {
|
if ($end) {
|
||||||
do_log(sprintf('examUser: %s, end from self: %s', $this->id, $end));
|
do_log(sprintf('examUser: %s, end from self: %s', $this->id, $end));
|
||||||
return $end;
|
return $end;
|
||||||
}
|
}
|
||||||
|
|
||||||
$exam = $this->exam;
|
$exam = $this->exam;
|
||||||
$begin = $exam->getRawOriginal('begin');
|
|
||||||
$end = $exam->getRawOriginal('end');
|
$end = $exam->getRawOriginal('end');
|
||||||
if ($begin && $end) {
|
if ($end) {
|
||||||
do_log(sprintf('examUser: %s, end from exam(%s): %s', $this->id, $exam->id, $end));
|
do_log(sprintf('examUser: %s, end from exam(%s): %s', $this->id, $exam->id, $end));
|
||||||
return $end;
|
return $end;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1018,6 +1018,8 @@ class ExamRepository extends BaseRepository
|
|||||||
$size = 1000;
|
$size = 1000;
|
||||||
$minId = 0;
|
$minId = 0;
|
||||||
$result = 0;
|
$result = 0;
|
||||||
|
$begin = $exam->begin;
|
||||||
|
$end = $exam->end;
|
||||||
while (true) {
|
while (true) {
|
||||||
$logPrefix = sprintf('[%s], exam: %s, size: %s', __FUNCTION__, $exam->id , $size);
|
$logPrefix = sprintf('[%s], exam: %s, size: %s', __FUNCTION__, $exam->id , $size);
|
||||||
$users = (clone $baseQuery)->where("$userTable.id", ">", $minId)->limit($size)->get();
|
$users = (clone $baseQuery)->where("$userTable.id", ">", $minId)->limit($size)->get();
|
||||||
@@ -1033,6 +1035,8 @@ class ExamRepository extends BaseRepository
|
|||||||
$insert = [
|
$insert = [
|
||||||
'uid' => $user->id,
|
'uid' => $user->id,
|
||||||
'exam_id' => $exam->id,
|
'exam_id' => $exam->id,
|
||||||
|
'begin' => $begin,
|
||||||
|
'end' => $end,
|
||||||
'created_at' => $now,
|
'created_at' => $now,
|
||||||
'updated_at' => $now,
|
'updated_at' => $now,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.8.12');
|
defined('VERSION_NUMBER') || define('VERSION_NUMBER', '1.8.12');
|
||||||
defined('RELEASE_DATE') || define('RELEASE_DATE', '2024-04-09');
|
defined('RELEASE_DATE') || define('RELEASE_DATE', '2024-04-10');
|
||||||
defined('IN_TRACKER') || define('IN_TRACKER', false);
|
defined('IN_TRACKER') || define('IN_TRACKER', false);
|
||||||
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
|
defined('PROJECTNAME') || define("PROJECTNAME","NexusPHP");
|
||||||
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");
|
defined('NEXUSPHPURL') || define("NEXUSPHPURL","https://nexusphp.org");
|
||||||
|
|||||||
Reference in New Issue
Block a user