From a9c2617713d557fa4c522e3262156e5d5a89046b Mon Sep 17 00:00:00 2001 From: miguel456 Date: Sun, 3 Apr 2022 20:35:55 +0100 Subject: [PATCH] feat: automatically end absences that expired --- app/Console/Kernel.php | 6 +++++ app/Jobs/ProcessExpiredAbsences.php | 39 +++++++++++++++++++++++++++++ app/Services/AbsenceService.php | 10 ++++++++ 3 files changed, 55 insertions(+) create mode 100644 app/Jobs/ProcessExpiredAbsences.php diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a447643..fa03bf4 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -22,6 +22,7 @@ namespace App\Console; use App\Jobs\ProcessDueSuspensions; +use App\Jobs\ProcessExpiredAbsences; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -54,6 +55,11 @@ class Kernel extends ConsoleKernel ->daily(); // Production value: Every day // Development value: Every minute + + $schedule->job(new ProcessExpiredAbsences) + ->daily(); + // Production value: Every day + // Development value: Every minute } /** diff --git a/app/Jobs/ProcessExpiredAbsences.php b/app/Jobs/ProcessExpiredAbsences.php new file mode 100644 index 0000000..e953f81 --- /dev/null +++ b/app/Jobs/ProcessExpiredAbsences.php @@ -0,0 +1,39 @@ +endExpired(); + } +} diff --git a/app/Services/AbsenceService.php b/app/Services/AbsenceService.php index 00d90af..f3e7376 100644 --- a/app/Services/AbsenceService.php +++ b/app/Services/AbsenceService.php @@ -5,6 +5,7 @@ namespace App\Services; use App\Absence; use App\Exceptions\AbsenceNotActionableException; use App\User; +use Carbon\Carbon; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -148,6 +149,15 @@ class AbsenceService } + public function endExpired() + { + foreach (Absence::all() as $absence) + { + if (!Carbon::parse($absence->predicted_end)->isFuture()) { + $absence->setEnded(); + } + } + }