Files
2026-06-06 13:00:47 +10:00

48 lines
1.3 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Models\UserAction;
use App\Models\UserFlight;
use Illuminate\Console\Attributes\Description;
use Illuminate\Console\Attributes\Signature;
use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Collection;
#[Signature('app:flight-feed-update')]
#[Description('Command description')]
class FlightFeedUpdate extends Command
{
public function handle()
{
$time = now('UTC')->startOfMinute();
$this->logFlightActions('flight_departing', UserFlight::where('departure_date', $time)->get());
$this->logFlightActions('flight_arriving', UserFlight::where('arrival_date', $time)->get());
}
/**
* @param string $type
* @param Collection<UserFlight> $flights
* @return void
*/
private function logFlightActions(string $type, Collection $flights): void
{
foreach ($flights as $flight) {
UserAction::create([
'user_id' => $flight->user_id,
'type' => $type,
'data' => [
'flight' => $flight->snapshot($flight->id),
]
]);
if($type === 'flight_departing'){
$flight->user->calculateAchievements();
}
}
}
}