matab-panel/scripts/fix_patient_updated_at.php

61 lines
2.1 KiB
PHP

<?php
define('LARAVEL_START', microtime(true));
$projectRoot = dirname(__DIR__);
require $projectRoot . '/vendor/autoload.php';
$app = require_once $projectRoot . '/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();
use Illuminate\Support\Facades\DB;
$dryRun = ! in_array('--apply', $argv ?? []);
echo "\n=== Fix Patient updated_at in sync_log ===\n";
echo $dryRun
? "Mode: DRY RUN — برای اعمال واقعی با --apply اجرا کن\n\n"
: "Mode: APPLY — در حال نوشتن در sync_log...\n\n";
$patients = DB::table('patients')->get(['id', 'first_name', 'last_name', 'updated_at']);
$now = now()->format('Y-m-d H:i:s');
$count = 0;
foreach ($patients as $patient) {
if (empty($patient->updated_at)) {
echo " [SKIP] patient#{$patient->id} ({$patient->first_name} {$patient->last_name}) — updated_at خالیه\n";
continue;
}
echo " [" . ($dryRun ? 'DRY' : 'OK ') . "] patient#{$patient->id}"
. " ({$patient->first_name} {$patient->last_name})"
. " → updated_at: {$patient->updated_at}\n";
if (! $dryRun) {
DB::table('sync_log')->insert([
'datetime' => $now,
'ip' => '127.0.0.1',
'user' => 'fix_script',
'table_name' => 'patients',
'action' => 'updated',
'record_id' => $patient->id,
'changed_data' => json_encode(['updated_at' => $patient->updated_at], JSON_UNESCAPED_UNICODE),
]);
}
$count++;
}
echo "\n─────────────────────────────────\n";
echo "تعداد بیماران: {$count}\n";
if ($dryRun) {
echo "\nبرای اعمال واقعی اجرا کن:\n php scripts/fix_patient_updated_at.php --apply\n";
} else {
echo "\n{$count} entry در sync_log ایجاد شد.\n";
echo "حالا از صفحه همگام‌سازی، sync رو اجرا کن تا لپ‌تاپ دکتر به‌روز بشه.\n";
}
echo "\nDone!\n";