feat: automatically end absences that expired
This commit is contained in:
parent
06df0e7906
commit
a9c2617713
@ -22,6 +22,7 @@
|
|||||||
namespace App\Console;
|
namespace App\Console;
|
||||||
|
|
||||||
use App\Jobs\ProcessDueSuspensions;
|
use App\Jobs\ProcessDueSuspensions;
|
||||||
|
use App\Jobs\ProcessExpiredAbsences;
|
||||||
use Illuminate\Console\Scheduling\Schedule;
|
use Illuminate\Console\Scheduling\Schedule;
|
||||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||||
|
|
||||||
@ -54,6 +55,11 @@ class Kernel extends ConsoleKernel
|
|||||||
->daily();
|
->daily();
|
||||||
// Production value: Every day
|
// Production value: Every day
|
||||||
// Development value: Every minute
|
// 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\Absence;
|
||||||
use App\Exceptions\AbsenceNotActionableException;
|
use App\Exceptions\AbsenceNotActionableException;
|
||||||
use App\User;
|
use App\User;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Contracts\Auth\Authenticatable;
|
use Illuminate\Contracts\Auth\Authenticatable;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
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