Files
FlightsAPI/app/Console/Commands/UpdateDepartedFlights.php
T
2026-07-02 00:33:28 +10:00

62 lines
1.8 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Models\Aircraft;
use App\Models\Notification;
use App\Models\User;
use App\Models\UserFlight;
use Illuminate\Console\Attributes\Description;
use Illuminate\Console\Attributes\Signature;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
#[Signature('app:update-departed-flights')]
#[Description('Command description')]
class UpdateDepartedFlights extends Command
{
/**
* Execute the console command.
*/
public function handle(): void
{
$now = now()->utc();
$userFlights = UserFlight::where('departure_date', '<=', $now->toDateTimeString())
->where(function ($query) {
$query->whereNull('departure_processed_at')
->orWhereColumn('departure_processed_at', '<', 'departure_date');
})
->get();
foreach ($userFlights as $flight) {
$flight->update(['departure_processed_at' => $now]);
}
}
protected function notifyFollowersOnDeparture(UserFlight $flight): void
{
$user = $flight->user;
$title = "{$user->name} is taking off!";
$flightNumber = $flight->flight_number ? "On {$flight->flight_number} from" : 'From';
$body = "{$flightNumber} {$flight->departureAirport->municipality}{$flight->arrivalAirport->municipality}";
$url = route('profile.flight', [$flight->id]);
$user->followers()->get()->each(function (User $follower) use ($title, $body, $url) {
$notify = $follower->getSetting('notify_on_flight_departure');
if ($notify) {
Notification::create([
'user_id' => $follower->id,
'title' => $title,
'body' => $body,
'url' => $url,
]);
}
}
);
}
}