From 40edd93fa51c36ae5e523705c55202e50c76d0d8 Mon Sep 17 00:00:00 2001 From: SajjadMahmoody <117562560+SajjadMahmoody@users.noreply.github.com> Date: Wed, 29 Apr 2026 00:26:14 +0330 Subject: [PATCH] fix patient sync --- scripts/fix_patient_updated_at.bat | 47 +++++++++++++++++++++++ scripts/fix_patient_updated_at.php | 61 ++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 scripts/fix_patient_updated_at.bat create mode 100644 scripts/fix_patient_updated_at.php diff --git a/scripts/fix_patient_updated_at.bat b/scripts/fix_patient_updated_at.bat new file mode 100644 index 0000000..b4efcd3 --- /dev/null +++ b/scripts/fix_patient_updated_at.bat @@ -0,0 +1,47 @@ +@echo off +setlocal EnableDelayedExpansion +set "SCRIPTS=%~dp0" +set "SCRIPTS=!SCRIPTS:~0,-1!" +for %%F in ("!SCRIPTS!\..") do set "PROJECT_DIR=%%~fF" +set "PHP=!SCRIPTS!\php\php.exe" + +echo ============================================= +echo Fix Patient updated_at - Sync Repair +echo ============================================= +echo. +echo این اسکریپت زمان ویرایش بیماران رو در صف sync +echo قرار میده تا دفعه بعد sync درست منتقل بشه. +echo. + +if not exist "!PHP!" ( + echo [ERROR] php.exe پیدا نشد: !PHP! + pause & exit /b 1 +) + +if not exist "!SCRIPTS!\fix_patient_updated_at.php" ( + echo [ERROR] fix_patient_updated_at.php پیدا نشد. + pause & exit /b 1 +) + +echo [1/2] Dry run - بررسی بیماران... +echo. +"!PHP!" "!SCRIPTS!\fix_patient_updated_at.php" +echo. + +set /p CONFIRM="آیا اعمال کنم؟ (y/n): " +if /i "!CONFIRM!" neq "y" ( + echo لغو شد. + pause & exit /b 0 +) + +echo. +echo [2/2] در حال نوشتن در sync_log... +echo. +"!PHP!" "!SCRIPTS!\fix_patient_updated_at.php" --apply +echo. + +echo ============================================= +echo Done! حالا از صفحه همگام سازی sync بزن. +echo ============================================= +echo. +pause \ No newline at end of file diff --git a/scripts/fix_patient_updated_at.php b/scripts/fix_patient_updated_at.php new file mode 100644 index 0000000..61d1b08 --- /dev/null +++ b/scripts/fix_patient_updated_at.php @@ -0,0 +1,61 @@ +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"; \ No newline at end of file