feat: automatically end absences that expired
This commit is contained in:
parent
06df0e7906
commit
a9c2617713
@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
39
app/Jobs/ProcessExpiredAbsences.php
Normal file
39
app/Jobs/ProcessExpiredAbsences.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use App\Services\AbsenceService;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class ProcessExpiredAbsences implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle(AbsenceService $absenceService)
|
||||
{
|
||||
Log::info('(absence cleaner) Ending all expired absences.');
|
||||
|
||||
$absenceService->endExpired();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user