File: /var/www/html/laravel/app/Console/Commands/RemoveOld.php
<?php
namespace App\Console\Commands;
use App\Models\Notam;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class RemoveOld extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'notam:remove-old-notams {preview}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Remove duplicates from notams table';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
ini_set('max_execution_time', -1);
$allNotams = Notam::query()
->whereNull('correct_response')
->get();
$toKeep = [];
$toRemove = [];
/** @var Notam $notam */
foreach ($allNotams as $notam) {
$output = null;
try {
if ($notam->correct_response) {
$output = json_decode($notam->correct_response);
} else {
$output = json_decode($notam->output);
}
} catch (\Exception $e) {
echo 'Error decoding JSON: ' . $e->getMessage() . PHP_EOL;
continue;
}
if ($output) {
if (!$output->C_Line || strtotime($output->C_Line) > strtotime('now') || $output->C_Line == 'PERM') {
$toKeep[] = $notam->id;
echo "Keeping: " . $notam->id . ' ' . $output->C_Line . PHP_EOL;
} else {
$toRemove[] = $notam->id;
echo "Removing: " . $notam->id . ' ' . $output->C_Line . PHP_EOL;
}
} else {
echo "No output for Notam ID: " . $notam->id . PHP_EOL;
}
}
echo count($toKeep) . ' to keep' . PHP_EOL;
echo count($toRemove) . ' to remove' . PHP_EOL;
if (!empty($toRemove) && !$this->argument('preview') && count($toRemove) > 0) {
Notam::query()
->whereIn('id', $toRemove)
->delete();
}
}
}