ifnex/04_Laravel/scripts/one-off/update_all_calling_codes.php
Kazem Alghasi 78d21942db docs(architecture): document shipment review workflow and ADRs
Add comprehensive Architecture Decision Records (ADRs) detailing the
new shipment review state machine, review history domain, and customer
resubmission logic. This documentation establishes the separation
between operational shipment status and the review lifecycle.

Additionally, perform repository cleanup by removing obsolete Postman
collections, environment files, test scripts, and unused migrations.

- Add ADR-001 through ADR-005 regarding review workflow and state.
- Add shipment review handoff documentation.
- Remove redundant Postman resources and local environment configs.
- Remove `test_pdf_generation.php` and `resubmit-test.json`.
- Remove unused `shipment_packages` migration.
- Rename and reorganize one-off maintenance scripts.
2026-10-03 06:20:32 +03:30

80 lines
4.3 KiB
PHP

<?php
// اسکریپت آپدیت پیش‌شماره تمام کشورهای استاندارد ISO 3166-1
// منبع: ITU-T E.164
$map = [
'AF' => '+93', 'AL' => '+355', 'DZ' => '+213', 'AS' => '+1', 'AD' => '+376',
'AO' => '+244', 'AG' => '+1', 'AR' => '+54', 'AM' => '+374', 'AU' => '+61',
'AT' => '+43', 'AZ' => '+994', 'BS' => '+1', 'BH' => '+973', 'BD' => '+880',
'BB' => '+1', 'BY' => '+375', 'BE' => '+32', 'BZ' => '+501', 'BJ' => '+229',
'BT' => '+975', 'BO' => '+591', 'BA' => '+387', 'BW' => '+267', 'BR' => '+55',
'BN' => '+673', 'BG' => '+359', 'BF' => '+226', 'BI' => '+257', 'KH' => '+855',
'CM' => '+237', 'CA' => '+1', 'CV' => '+238', 'CF' => '+236', 'TD' => '+235',
'CL' => '+56', 'CN' => '+86', 'CO' => '+57', 'KM' => '+269', 'CG' => '+242',
'CD' => '+243', 'CR' => '+506', 'CI' => '+225', 'HR' => '+385', 'CU' => '+53',
'CY' => '+357', 'CZ' => '+420', 'DK' => '+45', 'DJ' => '+253', 'DM' => '+1',
'DO' => '+1', 'EC' => '+593', 'EG' => '+20', 'SV' => '+503', 'GQ' => '+240',
'ER' => '+291', 'EE' => '+372', 'ET' => '+251', 'FJ' => '+679', 'FI' => '+358',
'FR' => '+33', 'GA' => '+241', 'GM' => '+220', 'GE' => '+995', 'DE' => '+49',
'GH' => '+233', 'GR' => '+30', 'GD' => '+1', 'GT' => '+502', 'GN' => '+224',
'GW' => '+245', 'GY' => '+592', 'HT' => '+509', 'HN' => '+504', 'HK' => '+852',
'HU' => '+36', 'IS' => '+354', 'IN' => '+91', 'ID' => '+62', 'IR' => '+98',
'IQ' => '+964', 'IE' => '+353', 'IL' => '+972', 'IT' => '+39', 'JM' => '+1',
'JP' => '+81', 'JO' => '+962', 'KZ' => '+7', 'KE' => '+254', 'KI' => '+686',
'KP' => '+850', 'KR' => '+82', 'KW' => '+965', 'KG' => '+996', 'LA' => '+856',
'LV' => '+371', 'LB' => '+961', 'LS' => '+266', 'LR' => '+231', 'LY' => '+218',
'LI' => '+423', 'LT' => '+370', 'LU' => '+352', 'MO' => '+853', 'MK' => '+389',
'MG' => '+261', 'MW' => '+265', 'MY' => '+60', 'MV' => '+960', 'ML' => '+223',
'MT' => '+356', 'MH' => '+692', 'MR' => '+222', 'MU' => '+230', 'MX' => '+52',
'FM' => '+691', 'MD' => '+373', 'MC' => '+377', 'MN' => '+976', 'ME' => '+382',
'MA' => '+212', 'MZ' => '+258', 'MM' => '+95', 'NA' => '+264', 'NR' => '+674',
'NP' => '+977', 'NL' => '+31', 'NZ' => '+64', 'NI' => '+505', 'NE' => '+227',
'NG' => '+234', 'NO' => '+47', 'OM' => '+968', 'PK' => '+92', 'PW' => '+680',
'PA' => '+507', 'PG' => '+675', 'PY' => '+595', 'PE' => '+51', 'PH' => '+63',
'PL' => '+48', 'PT' => '+351', 'QA' => '+974', 'RO' => '+40', 'RU' => '+7',
'RW' => '+250', 'KN' => '+1', 'LC' => '+1', 'VC' => '+1', 'WS' => '+685',
'SM' => '+378', 'ST' => '+239', 'SA' => '+966', 'SN' => '+221', 'RS' => '+381',
'SC' => '+248', 'SL' => '+232', 'SG' => '+65', 'SK' => '+421', 'SI' => '+386',
'SB' => '+677', 'SO' => '+252', 'ZA' => '+27', 'SS' => '+211', 'ES' => '+34',
'LK' => '+94', 'SD' => '+249', 'SR' => '+597', 'SZ' => '+268', 'SE' => '+46',
'CH' => '+41', 'SY' => '+963', 'TW' => '+886', 'TJ' => '+992', 'TZ' => '+255',
'TH' => '+66', 'TL' => '+670', 'TG' => '+228', 'TO' => '+676', 'TT' => '+1',
'TN' => '+216', 'TR' => '+90', 'TM' => '+993', 'TV' => '+688', 'UG' => '+256',
'UA' => '+380', 'AE' => '+971', 'GB' => '+44', 'US' => '+1', 'UY' => '+598',
'UZ' => '+998', 'VU' => '+678', 'VA' => '+379', 'VE' => '+58', 'VN' => '+84',
'YE' => '+967', 'ZM' => '+260', 'ZW' => '+263', 'PS' => '+970',
];
require __DIR__ . '/vendor/autoload.php';
$app = require_once __DIR__ . '/bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
use App\Models\Country;
$updated = 0;
$skipped = 0;
foreach ($map as $iso => $code) {
$cnt = Country::where('iso_code', $iso)->update(['calling_code' => $code]);
if ($cnt > 0) {
$updated += $cnt;
} else {
$skipped++;
}
}
echo "\n=== Done ===\n";
echo "Total in map: " . count($map) . "\n";
echo "Updated: {$updated}\n";
echo "Skipped (country not in DB): {$skipped}\n";
echo "Countries with calling_code in DB: " . Country::whereNotNull('calling_code')->count() . "\n";
echo "Total countries in DB: " . Country::count() . "\n";
// لیست کشورهایی که calling_code ندارن
$missing = Country::whereNull('calling_code')->pluck('name', 'iso_code')->toArray();
if (!empty($missing)) {
echo "\nCountries still missing calling_code:\n";
foreach ($missing as $iso => $name) {
echo " - {$iso}: {$name}\n";
}
}