diff --git a/Modules/Location/Database/Seeders/LocationSeeder.php b/Modules/Location/Database/Seeders/LocationSeeder.php index 0ce628513..a911fa91c 100644 --- a/Modules/Location/Database/Seeders/LocationSeeder.php +++ b/Modules/Location/Database/Seeders/LocationSeeder.php @@ -1,45 +1,207 @@ 'Turkey', 'code' => 'TR', 'phone_code' => '+90'], - ['name' => 'United States', 'code' => 'US', 'phone_code' => '+1'], - ['name' => 'Germany', 'code' => 'DE', 'phone_code' => '+49'], - ['name' => 'France', 'code' => 'FR', 'phone_code' => '+33'], - ['name' => 'United Kingdom', 'code' => 'GB', 'phone_code' => '+44'], - ['name' => 'Spain', 'code' => 'ES', 'phone_code' => '+34'], - ['name' => 'Italy', 'code' => 'IT', 'phone_code' => '+39'], - ['name' => 'Russia', 'code' => 'RU', 'phone_code' => '+7'], - ['name' => 'China', 'code' => 'CN', 'phone_code' => '+86'], - ['name' => 'Japan', 'code' => 'JP', 'phone_code' => '+81'], + foreach ($this->countries() as $country) { + Country::updateOrCreate( + ['code' => $country['code']], + [ + 'name' => $country['name'], + 'phone_code' => $country['phone_code'], + 'is_active' => true, + ] + ); + } + + $turkey = Country::query()->where('code', 'TR')->first(); + + if (! $turkey) { + return; + } + + $turkeyCities = $this->turkeyCities(); + + foreach ($turkeyCities as $city) { + City::updateOrCreate( + ['country_id' => (int) $turkey->id, 'name' => $city], + ['is_active' => true] + ); + } + + City::query() + ->where('country_id', (int) $turkey->id) + ->whereNotIn('name', $turkeyCities) + ->delete(); + } + + /** + * @return array + */ + private function countries(): array + { + $countries = []; + + foreach (CountriesEnum::cases() as $countryEnum) { + $value = $countryEnum->value; + $phoneCode = $this->normalizePhoneCode($countryEnum->getCountryCode()); + + if ($value === 'us_ca') { + $countries['US'] = [ + 'code' => 'US', + 'name' => 'Amerika Birleşik Devletleri', + 'phone_code' => $phoneCode, + ]; + $countries['CA'] = [ + 'code' => 'CA', + 'name' => 'Kanada', + 'phone_code' => $phoneCode, + ]; + + continue; + } + + if ($value === 'ru_kz') { + $countries['RU'] = [ + 'code' => 'RU', + 'name' => 'Rusya', + 'phone_code' => $phoneCode, + ]; + $countries['KZ'] = [ + 'code' => 'KZ', + 'name' => 'Kazakistan', + 'phone_code' => $phoneCode, + ]; + + continue; + } + + $key = 'filament-country-code-field::countries.' . $value; + $labelTr = trim((string) trans($key, [], 'tr')); + $labelEn = trim((string) trans($key, [], 'en')); + + $name = $labelTr !== '' && $labelTr !== $key + ? $labelTr + : ($labelEn !== '' && $labelEn !== $key ? $labelEn : strtoupper($value)); + + $iso2 = strtoupper(explode('_', $value)[0] ?? $value); + + $countries[$iso2] = [ + 'code' => $iso2, + 'name' => $name, + 'phone_code' => $phoneCode, + ]; + } + + return collect($countries) + ->sortBy('name', SORT_NATURAL | SORT_FLAG_CASE) + ->values() + ->all(); + } + + private function normalizePhoneCode(string $phoneCode): string + { + $normalized = trim(explode(',', $phoneCode)[0]); + $normalized = str_replace(' ', '', $normalized); + + return substr($normalized, 0, 10); + } + + /** + * @return array + */ + private function turkeyCities(): array + { + return [ + 'Adana', + 'Adıyaman', + 'Afyonkarahisar', + 'Ağrı', + 'Aksaray', + 'Amasya', + 'Ankara', + 'Antalya', + 'Ardahan', + 'Artvin', + 'Aydın', + 'Balıkesir', + 'Bartın', + 'Batman', + 'Bayburt', + 'Bilecik', + 'Bingöl', + 'Bitlis', + 'Bolu', + 'Burdur', + 'Bursa', + 'Çanakkale', + 'Çankırı', + 'Çorum', + 'Denizli', + 'Diyarbakır', + 'Düzce', + 'Edirne', + 'Elazığ', + 'Erzincan', + 'Erzurum', + 'Eskişehir', + 'Gaziantep', + 'Giresun', + 'Gümüşhane', + 'Hakkari', + 'Hatay', + 'Iğdır', + 'Isparta', + 'İstanbul', + 'İzmir', + 'Kahramanmaraş', + 'Karabük', + 'Karaman', + 'Kars', + 'Kastamonu', + 'Kayseri', + 'Kilis', + 'Kırıkkale', + 'Kırklareli', + 'Kırşehir', + 'Kocaeli', + 'Konya', + 'Kütahya', + 'Malatya', + 'Manisa', + 'Mardin', + 'Mersin', + 'Muğla', + 'Muş', + 'Nevşehir', + 'Niğde', + 'Ordu', + 'Osmaniye', + 'Rize', + 'Sakarya', + 'Samsun', + 'Siirt', + 'Sinop', + 'Sivas', + 'Şanlıurfa', + 'Şırnak', + 'Tekirdağ', + 'Tokat', + 'Trabzon', + 'Tunceli', + 'Uşak', + 'Van', + 'Yalova', + 'Yozgat', + 'Zonguldak', ]; - - foreach ($countries as $country) { - Country::firstOrCreate(['code' => $country['code']], array_merge($country, ['is_active' => true])); - } - - $tr = Country::where('code', 'TR')->first(); - if ($tr) { - $cities = ['Istanbul', 'Ankara', 'Izmir', 'Bursa', 'Antalya']; - foreach ($cities as $city) { - City::firstOrCreate(['name' => $city, 'country_id' => $tr->id]); - } - } - - $us = Country::where('code', 'US')->first(); - if ($us) { - $cities = ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']; - foreach ($cities as $city) { - City::firstOrCreate(['name' => $city, 'country_id' => $us->id]); - } - } } } diff --git a/Modules/Location/database/seeders/LocationSeeder.php b/Modules/Location/database/seeders/LocationSeeder.php deleted file mode 100644 index a911fa91c..000000000 --- a/Modules/Location/database/seeders/LocationSeeder.php +++ /dev/null @@ -1,207 +0,0 @@ -countries() as $country) { - Country::updateOrCreate( - ['code' => $country['code']], - [ - 'name' => $country['name'], - 'phone_code' => $country['phone_code'], - 'is_active' => true, - ] - ); - } - - $turkey = Country::query()->where('code', 'TR')->first(); - - if (! $turkey) { - return; - } - - $turkeyCities = $this->turkeyCities(); - - foreach ($turkeyCities as $city) { - City::updateOrCreate( - ['country_id' => (int) $turkey->id, 'name' => $city], - ['is_active' => true] - ); - } - - City::query() - ->where('country_id', (int) $turkey->id) - ->whereNotIn('name', $turkeyCities) - ->delete(); - } - - /** - * @return array - */ - private function countries(): array - { - $countries = []; - - foreach (CountriesEnum::cases() as $countryEnum) { - $value = $countryEnum->value; - $phoneCode = $this->normalizePhoneCode($countryEnum->getCountryCode()); - - if ($value === 'us_ca') { - $countries['US'] = [ - 'code' => 'US', - 'name' => 'Amerika Birleşik Devletleri', - 'phone_code' => $phoneCode, - ]; - $countries['CA'] = [ - 'code' => 'CA', - 'name' => 'Kanada', - 'phone_code' => $phoneCode, - ]; - - continue; - } - - if ($value === 'ru_kz') { - $countries['RU'] = [ - 'code' => 'RU', - 'name' => 'Rusya', - 'phone_code' => $phoneCode, - ]; - $countries['KZ'] = [ - 'code' => 'KZ', - 'name' => 'Kazakistan', - 'phone_code' => $phoneCode, - ]; - - continue; - } - - $key = 'filament-country-code-field::countries.' . $value; - $labelTr = trim((string) trans($key, [], 'tr')); - $labelEn = trim((string) trans($key, [], 'en')); - - $name = $labelTr !== '' && $labelTr !== $key - ? $labelTr - : ($labelEn !== '' && $labelEn !== $key ? $labelEn : strtoupper($value)); - - $iso2 = strtoupper(explode('_', $value)[0] ?? $value); - - $countries[$iso2] = [ - 'code' => $iso2, - 'name' => $name, - 'phone_code' => $phoneCode, - ]; - } - - return collect($countries) - ->sortBy('name', SORT_NATURAL | SORT_FLAG_CASE) - ->values() - ->all(); - } - - private function normalizePhoneCode(string $phoneCode): string - { - $normalized = trim(explode(',', $phoneCode)[0]); - $normalized = str_replace(' ', '', $normalized); - - return substr($normalized, 0, 10); - } - - /** - * @return array - */ - private function turkeyCities(): array - { - return [ - 'Adana', - 'Adıyaman', - 'Afyonkarahisar', - 'Ağrı', - 'Aksaray', - 'Amasya', - 'Ankara', - 'Antalya', - 'Ardahan', - 'Artvin', - 'Aydın', - 'Balıkesir', - 'Bartın', - 'Batman', - 'Bayburt', - 'Bilecik', - 'Bingöl', - 'Bitlis', - 'Bolu', - 'Burdur', - 'Bursa', - 'Çanakkale', - 'Çankırı', - 'Çorum', - 'Denizli', - 'Diyarbakır', - 'Düzce', - 'Edirne', - 'Elazığ', - 'Erzincan', - 'Erzurum', - 'Eskişehir', - 'Gaziantep', - 'Giresun', - 'Gümüşhane', - 'Hakkari', - 'Hatay', - 'Iğdır', - 'Isparta', - 'İstanbul', - 'İzmir', - 'Kahramanmaraş', - 'Karabük', - 'Karaman', - 'Kars', - 'Kastamonu', - 'Kayseri', - 'Kilis', - 'Kırıkkale', - 'Kırklareli', - 'Kırşehir', - 'Kocaeli', - 'Konya', - 'Kütahya', - 'Malatya', - 'Manisa', - 'Mardin', - 'Mersin', - 'Muğla', - 'Muş', - 'Nevşehir', - 'Niğde', - 'Ordu', - 'Osmaniye', - 'Rize', - 'Sakarya', - 'Samsun', - 'Siirt', - 'Sinop', - 'Sivas', - 'Şanlıurfa', - 'Şırnak', - 'Tekirdağ', - 'Tokat', - 'Trabzon', - 'Tunceli', - 'Uşak', - 'Van', - 'Yalova', - 'Yozgat', - 'Zonguldak', - ]; - } -}