| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- <?php
 - 
 - namespace App\Models\Locale;
 - 
 - use DateTime;
 - use DateTimeZone;
 - use Exception;
 - use Illuminate\Database\Eloquent\Relations\BelongsTo;
 - use Squire\Model;
 - 
 - /**
 -  * @property int $id
 -  * @property int $country_id
 -  * @property string $country_code
 -  * @property string $name
 -  * @property int $gmt_offset
 -  * @property string $gmt_offset_name
 -  * @property string $abbreviation
 -  * @property string $tz_name
 -  */
 - class Timezone extends Model
 - {
 -     public static array $schema = [
 -         'id' => 'integer',
 -         'country_id' => 'integer',
 -         'country_code' => 'string',
 -         'name' => 'string',
 -         'gmt_offset' => 'integer',
 -         'gmt_offset_name' => 'string',
 -         'abbreviation' => 'string',
 -         'tz_name' => 'string',
 -     ];
 - 
 -     public function country(): BelongsTo
 -     {
 -         return $this->belongsTo(Country::class, 'country_id');
 -     }
 - 
 -     public static function getTimezoneOptions(?string $countryCode = null): array
 -     {
 -         if (empty($countryCode)) {
 -             return [];
 -         }
 - 
 -         $timezones = self::where('country_code', $countryCode)->get();
 - 
 -         if ($timezones->isEmpty()) {
 -             return [];
 -         }
 - 
 -         return $timezones
 -             ->mapWithKeys(static function ($timezone) {
 -                 $localTime = self::getLocalTime($timezone->name); // Adjust this as per your column name
 -                 $cityName = str_replace('_', ' ', last(explode('/', $timezone->name))); // Adjust this as per your column name
 - 
 -                 return [$timezone->name => "{$cityName} ({$timezone->abbreviation}) {$localTime}"];
 -             })
 -             ->toArray();
 -     }
 - 
 -     /**
 -      * @throws Exception
 -      */
 -     public static function getLocalTime(string $timezone): string
 -     {
 -         return (new DateTime('now', new DateTimeZone($timezone)))->format('g:i A');
 -     }
 - }
 
 
  |