File: /var/www/html/dashboard.orbiwheels.com/app/Console/Commands/CheckDocumentExpiry.php
<?php
namespace App\Console\Commands;
use App\Jobs\SendDocumentExpiryMail;
use App\Mail\DocumentExpiryMail;
use App\Models\Document;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
class CheckDocumentExpiry extends Command
{
protected $signature = 'documents:check-expiry';
protected $description = 'Check for documents expiring in next 5 days and send email alerts';
public function handle()
{
$today = Carbon::today();
$fiveDaysLater = Carbon::today()->addDays(5);
$documents = Document::whereDate('expiry_date', '>=', $today)
->whereDate('expiry_date', '<=', $fiveDaysLater)
->get();
foreach ($documents as $document) {
$owner = $document->owner;
if ($owner instanceof \App\Models\Driver) {
// Driver
if ($owner->email) {
SendDocumentExpiryMail::dispatch($document, $owner->email);
$this->info("Mail sent to Driver: {$owner->email}");
// sleep(10);
}
// Transporter
if ($owner->transporter && $owner->transporter->email) {
SendDocumentExpiryMail::dispatch($document, $owner->transporter->email);
$this->info("Mail sent to Transporter: {$owner->transporter->email}");
// sleep(10);
}
}
if ($owner instanceof \App\Models\Vehicle && $owner->transporter && $owner->transporter->email) {
SendDocumentExpiryMail::dispatch($document, $owner->transporter->email);
$this->info("Mail sent to Transporter: {$owner->transporter->email}");
// sleep(10);
}
}
return Command::SUCCESS;
}
}