diff --git a/app/Console/Commands/Test.php b/app/Console/Commands/Test.php index 919707b5..2a0379f8 100644 --- a/app/Console/Commands/Test.php +++ b/app/Console/Commands/Test.php @@ -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(); } } diff --git a/app/Models/ExamUser.php b/app/Models/ExamUser.php index 31bacdcb..35d0d259 100644 --- a/app/Models/ExamUser.php +++ b/app/Models/ExamUser.php @@ -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; diff --git a/app/Repositories/ExamRepository.php b/app/Repositories/ExamRepository.php index 8cf616ef..ef4989e1 100644 --- a/app/Repositories/ExamRepository.php +++ b/app/Repositories/ExamRepository.php @@ -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;