HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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;
    }
}