<?php

namespace Database\Seeders;

use App\Setting;
use App\Template;
use Illuminate\Database\Seeder;

class AddPhase3EmailTemplates extends Seeder
{
    public function run()
    {
        // 1. Settings にメールテンプレート設定を追加
        $settings = [
            // 保管ユーザー向け
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_storage_charge_complete',    'name' => '保管料決済完了メール'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_storage_renewal_notice',     'name' => '保管料更新ご案内メール'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_storage_renewal_complete',   'name' => '保管料更新完了メール'],
            // オーナー向け
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_owner_rental_notify',        'name' => '商品貸出通知メール（オーナー向け）'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_owner_payback_confirmed',    'name' => 'ペイバック確定メール（オーナー向け）'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_owner_transfer_complete',    'name' => '振込完了メール（オーナー向け）'],
            // 申請関連
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_listing_approved',           'name' => '出品申請承認メール'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_listing_stopped',            'name' => '出品停止承認メール'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_return_shipped',             'name' => '返却発送通知メール'],
            ['group' => 'u_email', 'tab' => 'email', 'slug' => 'email_temp_return_shipped',        'name' => '一時返却発送通知メール'],
        ];

        foreach ($settings as $item) {
            $item['content'] = '';
            $item['rule'] = '';
            $item['type'] = 'select|template:user:' . str_replace('email_', '', $item['slug']);
            $item['is_publish'] = 1;
            $item['is_activated'] = 1;
            $item['is_deleted'] = 0;
            $item['created_at'] = date('Y-m-d H:i:s');
            $item['updated_at'] = date('Y-m-d H:i:s');

            $check = Setting::where('slug', $item['slug'])->first();
            if (!$check) {
                Setting::create($item);
                $this->command->info("Created Setting: {$item['slug']}");
            } else {
                $check->update(['name' => $item['name'], 'type' => $item['type']]);
                $this->command->info("Updated Setting: {$item['slug']}");
            }
        }

        // 2. テンプレートを作成
        $templates = [
            [
                'name' => 'storage_charge_complete',
                'title' => '【KIREI】保管料決済完了のお知らせ',
                'content' => "{{ user_name }} 様\n\n保管料の決済が完了いたしました。\n\n■ 商品名: {{ product_name }}\n■ 決済金額: ¥{{ amount }}（税込）\n■ 次回更新日: {{ next_renewal_date }}\n\n大切なお着物を引き続きお預かりいたします。\n\n{{ site_name }}",
                'setting_slug' => 'email_storage_charge_complete',
            ],
            [
                'name' => 'storage_renewal_notice',
                'title' => '【KIREI】保管料更新のご案内',
                'content' => "{{ user_name }} 様\n\n保管料の更新時期が近づいてまいりました。\n\n■ 商品名: {{ product_name }}\n■ 更新金額: ¥{{ amount }}（税込）\n■ 更新日: {{ next_renewal_date }}\n\n更新をご希望されない場合は、{{ cancel_deadline }}までにお問い合わせください。\n\n{{ site_name }}",
                'setting_slug' => 'email_storage_renewal_notice',
            ],
            [
                'name' => 'storage_renewal_complete',
                'title' => '【KIREI】保管料更新完了のお知らせ',
                'content' => "{{ user_name }} 様\n\n保管料の自動更新が完了いたしました。\n\n■ 商品名: {{ product_name }}\n■ 決済金額: ¥{{ amount }}（税込）\n■ 次回更新日: {{ next_renewal_date }}\n\n引き続きよろしくお願いいたします。\n\n{{ site_name }}",
                'setting_slug' => 'email_storage_renewal_complete',
            ],
            [
                'name' => 'owner_rental_notify',
                'title' => '【KIREI】お着物がレンタルされました',
                'content' => "{{ owner_name }} 様\n\nお預かりしているお着物がレンタルされました。\n\n■ 商品名: {{ product_name }}\n■ レンタル期間: {{ rental_period }}\n■ 報酬額: ¥{{ reward_amount }}\n\nレンタル終了後にペイバックについてご案内いたします。\n\n{{ site_name }}",
                'setting_slug' => 'email_owner_rental_notify',
            ],
            [
                'name' => 'owner_payback_confirmed',
                'title' => '【KIREI】ペイバック確定のお知らせ',
                'content' => "{{ owner_name }} 様\n\nレンタルが終了し、ペイバックが確定いたしました。\n\n■ 商品名: {{ product_name }}\n■ レンタル料金: ¥{{ rental_amount }}\n■ 報酬額（ペイバック）: ¥{{ reward_amount }}\n■ 振込予定: {{ transfer_schedule }}\n\n{{ site_name }}",
                'setting_slug' => 'email_owner_payback_confirmed',
            ],
            [
                'name' => 'owner_transfer_complete',
                'title' => '【KIREI】報酬振込完了のお知らせ',
                'content' => "{{ owner_name }} 様\n\n報酬のお振込みが完了いたしました。\n\n■ 商品名: {{ product_name }}\n■ 振込金額: ¥{{ reward_amount }}\n■ 振込日: {{ transferred_at }}\n\nご確認をお願いいたします。\n\n{{ site_name }}",
                'setting_slug' => 'email_owner_transfer_complete',
            ],
            [
                'name' => 'listing_approved',
                'title' => '【KIREI】出品申請承認のお知らせ',
                'content' => "{{ user_name }} 様\n\n出品申請が承認されました。\n\n■ 商品名: {{ product_name }}\n\nお着物がレンタルされますと、ペイバック（報酬）が発生いたします。\n詳細はマイページの「報酬履歴」よりご確認いただけます。\n\n{{ site_name }}",
                'setting_slug' => 'email_listing_approved',
            ],
            [
                'name' => 'listing_stopped',
                'title' => '【KIREI】出品停止承認のお知らせ',
                'content' => "{{ user_name }} 様\n\n出品停止申請が承認されました。\n\n■ 商品名: {{ product_name }}\n■ 保管開始日: {{ storage_start_date }}\n\n今後は保管サービスとして年間保管料（¥6,600/税込）が発生いたします。\nカード登録がお済みでない方は、マイページよりご登録をお願いいたします。\n\n{{ site_name }}",
                'setting_slug' => 'email_listing_stopped',
            ],
            [
                'name' => 'return_shipped',
                'title' => '【KIREI】返却商品発送のお知らせ',
                'content' => "{{ user_name }} 様\n\nご返却のお着物を発送いたしました。\n\n■ 商品名: {{ product_name }}\n\nお届けまで今しばらくお待ちください。\nこれまでのご利用ありがとうございました。\n\n{{ site_name }}",
                'setting_slug' => 'email_return_shipped',
            ],
            [
                'name' => 'temp_return_shipped',
                'title' => '【KIREI】一時返却商品発送のお知らせ',
                'content' => "{{ user_name }} 様\n\n一時返却のお着物を発送いたしました。\n\n■ 商品名: {{ product_name }}\n\nご使用後は再度お持ち込みいただくか、当社までご返送ください。\n\n{{ site_name }}",
                'setting_slug' => 'email_temp_return_shipped',
            ],
        ];

        foreach ($templates as $tpl) {
            $existing = Template::where('name', $tpl['name'])->first();
            if (!$existing) {
                $template = Template::create([
                    'name'         => $tpl['name'],
                    'title'        => $tpl['title'],
                    'content'      => $tpl['content'],
                    'user_id'      => 1,
                    'is_activated' => 1,
                    'is_deleted'   => 0,
                    'created_at'   => now(),
                    'updated_at'   => now(),
                ]);
                $this->command->info("Created Template: {$tpl['name']}");

                // Settingのcontentにテンプレートidを紐づけ
                $setting = Setting::where('slug', $tpl['setting_slug'])->first();
                if ($setting) {
                    $setting->update(['content' => $template->id]);
                    $this->command->info("  Linked to Setting: {$tpl['setting_slug']} -> template_id={$template->id}");
                }
            } else {
                $this->command->info("Template already exists: {$tpl['name']}");
            }
        }

        $this->command->info('Phase 3 email templates setup complete.');
    }
}
