mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 12:30:49 +08:00
exam checkout support duration
This commit is contained in:
@@ -55,10 +55,8 @@ class Test extends Command
|
||||
// ]);
|
||||
// dd($r);
|
||||
// $rep->assignCronjob();
|
||||
// $rep->cronjobCheckout();
|
||||
$r = DB::select(DB::raw('select version() as info'))[0]->info;
|
||||
$r = $rep->cronjobCheckout();
|
||||
dd($r);
|
||||
Carbon::now()->toDateTimeString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ class ExamUser extends NexusModel
|
||||
$begin = $this->getRawOriginal('begin');
|
||||
$end = $this->getRawOriginal('end');
|
||||
if ($begin && $end) {
|
||||
do_log(sprintf('examUser: %s, begin from self', $this->id));
|
||||
do_log(sprintf('examUser: %s, begin from self: %s', $this->id, $begin));
|
||||
return $begin;
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@ class ExamUser extends NexusModel
|
||||
$begin = $exam->getRawOriginal('begin');
|
||||
$end = $exam->getRawOriginal('end');
|
||||
if ($begin && $end) {
|
||||
do_log(sprintf('examUser: %s, begin from exam: %s', $this->id, $exam->id));
|
||||
do_log(sprintf('examUser: %s, begin from exam(%s): %s', $this->id, $exam->id, $begin));
|
||||
return $begin;
|
||||
}
|
||||
|
||||
if ($exam->duration > 0) {
|
||||
do_log(sprintf('examUser: %s, begin from self created_at', $this->id));
|
||||
do_log(sprintf('examUser: %s, begin from self created_at(%s)', $this->id, $this->getRawOriginal('created_at')));
|
||||
return $this->created_at->toDateTimeString();
|
||||
}
|
||||
return null;
|
||||
@@ -58,7 +58,7 @@ class ExamUser extends NexusModel
|
||||
$begin = $this->getRawOriginal('begin');
|
||||
$end = $this->getRawOriginal('end');
|
||||
if ($begin && $end) {
|
||||
do_log(sprintf('examUser: %s, end from self', $this->id));
|
||||
do_log(sprintf('examUser: %s, end from self: %s', $this->id, $end));
|
||||
return $end;
|
||||
}
|
||||
|
||||
@@ -66,13 +66,13 @@ class ExamUser extends NexusModel
|
||||
$begin = $exam->getRawOriginal('begin');
|
||||
$end = $exam->getRawOriginal('end');
|
||||
if ($begin && $end) {
|
||||
do_log(sprintf('examUser: %s, end from exam: %s', $this->id, $exam->id));
|
||||
do_log(sprintf('examUser: %s, end from exam(%s): %s', $this->id, $exam->id, $end));
|
||||
return $end;
|
||||
}
|
||||
|
||||
$duration = $exam->duration;
|
||||
if ($duration > 0) {
|
||||
do_log(sprintf('examUser: %s, end from self created_at + exam: %s %s days', $this->id, $exam->id, $duration));
|
||||
do_log(sprintf('examUser: %s, end from self created_at + exam(%s) created_at: %s + %s days', $this->id, $exam->id, $this->getRawOriginal('created_at'), $duration));
|
||||
return $this->created_at->addDays($duration)->toDateTimeString();
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -494,8 +494,11 @@ class ExamRepository extends BaseRepository
|
||||
->with(['exam', 'user', 'user.language'])
|
||||
->orderBy("$examUserTable.id", "asc");
|
||||
if (!$ignoreTimeRange) {
|
||||
// $baseQuery->whereRaw("if($examUserTable.end is not null, $examUserTable.end < '$now', $examTable.end < '$now')");
|
||||
$baseQuery->whereRaw("case when $examUserTable.end is not null then $examUserTable.end < '$now' case when $examTable.end is not null then $examTable.end < '$now' case when $examTable.duration > 0 then date_add($examUserTable.created_at, interval $examTable.duration day) < '$now' else true end");
|
||||
$whenThens = [];
|
||||
$whenThens[] = "when $examUserTable.`end` is not null then $examUserTable.`end` < '$now'";
|
||||
$whenThens[] = "when $examTable.`end` is not null then $examTable.`end` < '$now'";
|
||||
$whenThens[] = "when $examTable.duration > 0 then date_add($examUserTable.created_at, interval $examTable.duration day) < '$now'";
|
||||
$baseQuery->whereRaw(sprintf("case %s else false end", implode(" ", $whenThens)));
|
||||
}
|
||||
|
||||
$size = 100;
|
||||
|
||||
Reference in New Issue
Block a user