<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;

/**
 * レンタル注文の3メール（決済完了(銀行振込)・発送完了・フォロー）を追加する。
 * - orders に伝票番号(tracking_number)カラムを追加（発送完了メール用）
 * - templates / settings に3メールを登録（管理画面で編集・ON/OFF可能に）
 */
class AddOrderStatusEmails extends Migration
{
    public function up()
    {
        if (!Schema::hasColumn('orders', 'tracking_number')) {
            Schema::table('orders', function (Blueprint $table) {
                $table->string('tracking_number')->nullable()->after('note');
            });
        }

        $contactFooter = "--------------------------------------------------------------------------<br>"
            . "【お問い合わせ先】<br>"
            . "　株式会社もろふじ「{{ site_name }}」<br>"
            . "（ホームページ URL）{{ site_url }}<br>"
            . "　メール：kirei@0944724272.com<br>"
            . "　電話：0944-75-1755<br>"
            . "　受付時間：月・火・木・金・土　(10：00 ～ 18:00)<br>"
            . "--------------------------------------------------------------------------";

        // 1. 決済完了通知（銀行振込）
        $bankPaymentContent = "{{ full_name }} 様<br><br>"
            . "この度は、「{{ site_name }}」をご利用いただき、誠にありがとうございます。<br><br>"
            . "本日お客様のご入金を確認いたしました。<br>"
            . "お忙しい中、お支払いにご対応いただきありがとうございました。<br><br>"
            . "商品の発送は {{ shipping_date }} 頃 を予定しております。<br>"
            . "※当店営業日の兼ね合いで発送日は予定より早まることがございます。<br><br>"
            . "発送が完了しましたら、伝票番号とともに発送完了メールをお送りいたします。<br>"
            . "商品発送まで今しばらくお待ちください。<br>"
            . "その他、ご不明な点がありましたらいつでもお気軽にお問い合わせください。<br><br>"
            . "■ご注文内容<br>"
            . "［受注番号] {{ order_code }}<br>"
            . "［ご注文者] {{ full_name }} 様<br><br>"
            . "［着用予定日] {{ wear_date }}<br>"
            . "［レンタル期間：5泊6日] {{ rental_period }}<br><br>"
            . "［着物番号] {{ product_code }}<br>"
            . "［決済方法] 銀行振り込み<br>"
            . "［商品価格] {{ product_price }}<br>"
            . "［オプション価格] {{ option_price }}<br>"
            . "［送料] {{ shipping_cost }}<br>"
            . "［合計金額] {{ total_price }}<br><br>"
            . "ご注文内容に誤りがございましたら、お手数ですがお問い合わせください。<br><br>"
            . "■レンタルの流れ（現在のステータス：【お支払い完了】）<br>"
            . "ご注文確認<br>▼<br>ご注文確定<br>▼<br>【 お支払い完了 】<br>▼<br>"
            . "当店発送予定日： {{ shipping_date }} 頃<br>▼<br>"
            . "着物到着日： {{ arrival_date }}<br>▼<br>"
            . "ご着用予定日： {{ wear_date }}<br>▼<br>"
            . "返却期日： {{ return_date }}<br>▼<br>"
            . "当店到着予定日： {{ store_arrival_date }}<br>▼<br>お取引完了<br><br>"
            . $contactFooter;

        // 2. 発送完了通知
        $shippingContent = "{{ full_name }} 様<br><br>"
            . "この度は、「{{ site_name }}」をご利用いただき、誠にありがとうございます。<br><br>"
            . "本日ヤマト運輸にて、商品を発送いたしました。<br>"
            . "商品の配送状況につきましては、下記のURLからご確認いただけます。<br><br>"
            . "■配送状況のご確認はこちらから<br>"
            . "URL：{{ tracking_url }}<br>"
            . "（配送データの反映に時間がかかる場合がございます。）<br><br>"
            . "■お荷物の出荷情報<br>"
            . "お荷物伝票番号：{{ tracking_number }}<br>"
            . "配送会社：{{ delivery_company }}<br>"
            . "お届け予定日：{{ delivery_date }}<br>"
            . "お届け予定時間：{{ delivery_time }}<br><br>"
            . "お届け先：〒{{ delivery_post_code }}<br>"
            . "{{ delivery_address }}<br>"
            . "お届け先名：{{ delivery_name }} 様<br>"
            . "お電話番号：{{ delivery_phone }}<br><br>"
            . "■ご注文内容<br>"
            . "［受注番号] {{ order_code }}<br>"
            . "［ご注文者] {{ full_name }} 様<br><br>"
            . "［着用予定日] {{ wear_date }}<br>"
            . "［レンタル期間：5泊6日] {{ rental_period }}<br><br>"
            . "［着物番号] {{ product_code }}<br>"
            . "［決済方法] {{ payment_method }}<br>"
            . "［商品価格] {{ product_price }}<br>"
            . "［オプション価格] {{ option_price }}<br>"
            . "［送料] {{ shipping_cost }}<br>"
            . "［合計金額] {{ total_price }}<br><br>"
            . "ご注文内容に誤りがございましたら、お手数ですがお問い合わせください。<br><br>"
            . "■レンタルの流れ（現在のステータス：【当店発送】）<br>"
            . "ご注文確認<br>▼<br>ご注文確定<br>▼<br>お支払い<br>▼<br>"
            . "【 当店発送 】： {{ shipping_date }} 頃<br>▼<br>"
            . "着物到着日： {{ arrival_date }}<br>▼<br>"
            . "ご着用予定日： {{ wear_date }}<br>▼<br>"
            . "返却期日： {{ return_date }}<br>▼<br>"
            . "当店到着予定日： {{ store_arrival_date }}<br>▼<br>お取引完了<br><br>"
            . $contactFooter;

        // 3. フォローメール（取引完了）
        $followContent = "{{ full_name }} 様<br><br>"
            . "「{{ site_name }}」をご利用いただきありがとうございます。<br><br>"
            . "当店のお着物はいかがでしたでしょうか。<br>"
            . "お客様のすてきな思い出に、彩りを添えられましたら幸いです。<br><br>"
            . "先日お客様よりご返送いただきましたレンタル品が当店に到着し、品物を確認させていただきました。<br>"
            . "これにて今回のお取引は完了となります。<br><br>"
            . "この度は当店をご利用いただき、誠にありがとうございました。<br>"
            . "今後ともよりよいショップ作りに努めてまいりますので、当店をよろしくお願いいたします。<br><br>"
            . "またのご利用をスタッフ一同、心よりお待ちしております。<br><br>"
            . "■ご注文内容<br>"
            . "［受注番号] {{ order_code }}<br>"
            . "［ご注文者] {{ full_name }} 様<br><br>"
            . "［着用予定日] {{ wear_date }}<br>"
            . "［レンタル期間：5泊6日] {{ rental_period }}<br><br>"
            . "■レンタルの流れ（現在のステータス：【お取引完了】）<br>"
            . "ご注文確認<br>▼<br>ご注文確定<br>▼<br>お支払い<br>▼<br>"
            . "当店発送予定日： {{ shipping_date }} 頃<br>▼<br>"
            . "着物到着日： {{ arrival_date }}<br>▼<br>"
            . "ご着用予定日： {{ wear_date }}<br>▼<br>"
            . "返却期日： {{ return_date }}<br>▼<br>"
            . "当店到着予定日： {{ store_arrival_date }}<br>▼<br>"
            . "【お取引完了】← ご利用ありがとうございました！<br><br>"
            . $contactFooter;

        $templates = [
            [
                'slug' => 'u_payment_bank_completed',
                'name' => '決済完了通知メール（銀行振込）',
                'title' => 'お支払いありがとうございます。「{{ site_name }}」(着物レンタル)',
                'content' => $bankPaymentContent,
                'setting_name' => '決済完了通知（銀行振込）',
                'setting_type' => 'select|template:user:payment_bank_completed',
            ],
            [
                'slug' => 'u_shipping_completed',
                'name' => '発送完了通知メール',
                'title' => '商品を発送いたしました。「{{ site_name }}」(着物レンタル)',
                'content' => $shippingContent,
                'setting_name' => '発送完了通知',
                'setting_type' => 'select|template:user:shipping_completed',
            ],
            [
                'slug' => 'u_rental_follow_up',
                'name' => 'フォローメール',
                'title' => 'レンタルのご利用ありがとうございました。「{{ site_name }}」(着物レンタル)',
                'content' => $followContent,
                'setting_name' => 'フォローメール',
                'setting_type' => 'select|template:user:rental_follow_up',
            ],
        ];

        foreach ($templates as $tpl) {
            $existing = DB::table('templates')->where('name', $tpl['name'])->first();
            if ($existing) {
                $templateId = $existing->id;
            } else {
                $templateId = DB::table('templates')->insertGetId([
                    'name' => $tpl['name'],
                    'type' => 0,
                    'title' => $tpl['title'],
                    'content' => $tpl['content'],
                    'user_id' => 1,
                    'group' => 0,
                    'is_activated' => 1,
                    'is_deleted' => 0,
                    'created_at' => now(),
                    'updated_at' => now(),
                ]);
            }

            $existingSetting = DB::table('settings')->where('slug', $tpl['slug'])->first();
            if (!$existingSetting) {
                DB::table('settings')->insert([
                    'group' => 'u_email',
                    'tab' => 'email',
                    'slug' => $tpl['slug'],
                    'name' => $tpl['setting_name'],
                    'content' => (string) $templateId,
                    'example' => null,
                    'rule' => '',
                    'type' => $tpl['setting_type'],
                    'is_publish' => 1,
                    'is_activated' => 1,
                    'is_deleted' => 0,
                    'created_at' => now(),
                    'updated_at' => now(),
                ]);
            }
        }
    }

    public function down()
    {
        $slugs = ['u_payment_bank_completed', 'u_shipping_completed', 'u_rental_follow_up'];
        DB::table('settings')->whereIn('slug', $slugs)->delete();

        $names = ['決済完了通知メール（銀行振込）', '発送完了通知メール', 'フォローメール'];
        DB::table('templates')->whereIn('name', $names)->delete();

        if (Schema::hasColumn('orders', 'tracking_number')) {
            Schema::table('orders', function (Blueprint $table) {
                $table->dropColumn('tracking_number');
            });
        }
    }
}
