File: /var/www/html/laravel/app/Console/Commands/UpdateCheckNeeded.php
<?php
namespace App\Console\Commands;
use App\Models\FineTuningJob;
use App\Models\Notam;
use Illuminate\Console\Command;
class UpdateCheckNeeded extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'notam:update-checkneeded-flag';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Set CheckNeeded to false if no validation errors found';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$lastFineTuningJob = FineTuningJob::query()
->orderBy('created_at', 'desc')
->first();
echo $lastFineTuningJob->created_at;
$notams = Notam::query()
->where('updated_at', '>=', $lastFineTuningJob->created_at)
->where(function ($query) {
$query->whereNull('correct_response')
->orWhere('correct_response', 'like', '%CheckNeeded":true%');
})
->orderBy('id', 'asc');
$notams->chunk(100, function ($notams) {
/** @var Notam $notam */
foreach ($notams as $notam) {
$needToSave = false;
if ($notam->correct_response) {
$validationErrors = $notam->validateDataFormat($notam->correct_response);
if (!count($validationErrors) || (count($validationErrors) == 1 && substr_count($validationErrors[0], 'CheckNeeded'))) {
$notam->correct_response = json_decode($notam->correct_response);
$notam->correct_response->CheckNeeded = false;
$notam->fine_tuning = 0;
$notam->check_required_gpt = true;
$needToSave = true;
$notam->correct_response = json_encode($notam->correct_response);
}
}
if ($needToSave) {
$notam->saveQuietly();
$notamId = $notam->id;
echo "Notam #{$notamId} updated \n";
}
}
});
}
}