Files
athenahr/app/Jobs/InviteLifecycleCleanup.php

43 lines
1.0 KiB
PHP
Raw Normal View History

<?php
namespace App\Jobs;
use App\Invitation;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
use Illuminate\Support\Facades\Log;
// General Housekeeping Job: Drop Approved and Completed Invites
class InviteLifecycleCleanup implements ShouldQueue
{
use Queueable;
/**
* Create a new job instance.
*/
public function __construct()
{
//
}
/**
* Execute the job.
*/
public function handle(): void
{
Log::info("Invite lifecycle: processing completed invites.");
$deleted = 0;
Invitation::where('status', '=', 'completed')
->chunkById(100, function ($invites) use (&$deleted) {
foreach ($invites as $invite) {
Log::debug("Deleted invite {$invite->invitation_code} for {$invite->requestor_email}.");
$invite->delete();
$deleted++;
}
});
Log::info("Deleted {$deleted} completed invitations.");
}
}