<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class UserAddress extends Model
{
    protected $fillable = [
        'user_id',
        'shop_name',
        'governorate',
        'city',
        'address_details',
        'landmark',
        'extra_phone',
        'is_default',
    ];

    protected function casts(): array
    {
        return [
            'is_default' => 'boolean',
        ];
    }

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }

    public function getFullAddressAttribute(): string
    {
        $parts = array_filter([
            $this->shop_name,
            $this->address_details,
            $this->city,
            $this->governorate,
        ]);

        return implode('، ', $parts);
    }

    public static function getEgyptGovernorates(): array
    {
        return [
            'القاهرة' => 'القاهرة',
            'الجيزة' => 'الجيزة',
            'الإسكندرية' => 'الإسكندرية',
            'الدقهلية' => 'الدقهلية',
            'البحر الأحمر' => 'البحر الأحمر',
            'البحيرة' => 'البحيرة',
            'الفيوم' => 'الفيوم',
            'الغربية' => 'الغربية',
            'الإسماعيلية' => 'الإسماعيلية',
            'المنوفية' => 'المنوفية',
            'المنيا' => 'المنيا',
            'القليوبية' => 'القليوبية',
            'الوادي الجديد' => 'الوادي الجديد',
            'السويس' => 'السويس',
            'أسوان' => 'أسوان',
            'أسيوط' => 'أسيوط',
            'بني سويف' => 'بني سويف',
            'بورسعيد' => 'بورسعيد',
            'دمياط' => 'دمياط',
            'الشرقية' => 'الشرقية',
            'جنوب سيناء' => 'جنوب سيناء',
            'كفر الشيخ' => 'كفر الشيخ',
            'مطروح' => 'مطروح',
            'الأقصر' => 'الأقصر',
            'قنا' => 'قنا',
            'شمال سيناء' => 'شمال سيناء',
            'سوهاج' => 'سوهاج',
        ];
    }
}
