<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Storage;
use Spatie\Translatable\HasTranslations;

class EsgMain extends Model
{
    use HasTranslations;
    protected $guarded = ['id'];
    protected $appends = ["img_pc_url", "og_img_url", "img_mobile_url"];
    public $translatable = ['title', 'description', 'meta_title', 'meta_keyword', 'meta_description'];
    protected function imgPcUrl(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => is_null($this->img_pc) ? null :Storage::disk('public')->url($this->img_pc),
        );
    }
    protected function imgMobileUrl(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => is_null($this->img_mobile) ? null :Storage::disk('public')->url($this->img_mobile),
        );
    }
    protected function ogImgUrl(): Attribute
    {
        return Attribute::make(
            get: fn ($value) => is_null($this->og_img) ? null :Storage::disk('public')->url($this->og_img),
        );
    }
    public static function getMain(): self
    {
        $main = self::first();
        if(empty($main)){
            $main = self::create(self::getDefaultData());
        }
        return $main;
    }

    /**
     * ✅ 獲取預設設定值
     */
    public static function getDefaultData(): array
    {
        return [
            'title' => [
                'zh_TW' => '預設網站標題',
                'en' => 'Default Site Title'
            ],
            'description' => [
                'zh_TW' => '預設網站描述',
                'en' => 'Default Site Description'
            ],
        ];
    }

    /**
     * ✅ 安全的 toArray 方法，確保多語系欄位格式正確
     */
    public function safeToArray(): array
    {
        $array = $this->toArray();

        // 確保多語系欄位是正確的格式
        foreach ($this->translatable as $field) {
            if (isset($array[$field])) {
                // 如果是字串，轉換為多語系格式
                if (is_string($array[$field])) {
                    $array[$field] = [
                        'zh_TW' => $array[$field],
                        'en' => ''
                    ];
                }
                // 確保有必要的語言鍵
                if (is_array($array[$field])) {
                    $array[$field]['zh_TW'] = $array[$field]['zh_TW'] ?? '';
                    $array[$field]['en'] = $array[$field]['en'] ?? '';
                }
            } else {
                // 如果欄位不存在，建立預設結構
                $array[$field] = ['zh_TW' => '', 'en' => ''];
            }
        }

        return $array;
    }
}
