<?php

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

/**
 * 会員登録完了(u_register_confirm)・問い合わせ受付(u_contact) のメール設定/テンプレートを
 * マイグレーションで補填する。これらは従来シーダーのみで作成されていたため、
 * シーダー未実行の環境（develop等）では管理画面に項目が出ず、送信もされない可能性があった。
 *
 * 既に存在する場合は何もしない（冪等）。
 */
class EnsureRegisterContactEmailSettings extends Migration
{
    public function up()
    {
        $items = [
            [
                'slug' => 'u_register_confirm',
                'template_name' => '登録確認メール（確認URL付き）',
                'title' => '【{{ site_name }}】ご利用登録URLのご案内',
                'content' => "この度は「{{ site_name }}」をご利用いただきまして、誠にありがとうございます。<br><br>"
                    . "下記URLよりご利用登録を行なってください。<br>"
                    . "<a href=\"{{ site_url }}/register/{{ code }}\" target=\"_blank\">{{ site_url }}/register/{{ code }}</a><br>"
                    . "※メールに記載されているURLの有効時間は100分となっております。ご注意ください。<br><br>"
                    . "今後ともどうぞ「{{ site_name }}」をよろしくお願い申し上げます。<br><br>"
                    . "────────────────────────────<br>"
                    . "{{ site_name }}<br>"
                    . "<a href=\"{{ site_url }}/\" target=\"_blank\">{{ site_url }}/</a><br>"
                    . "────────────────────────────",
                'setting_name' => '会員登録確認メール（URL付き）',
                'setting_type' => 'select|template:user:register_confirm',
            ],
            [
                'slug' => 'u_contact',
                'template_name' => 'お問い合わせメール（ユーザー）',
                'title' => '【{{ site_name }}】お問い合わせを受け付けました',
                'content' => "※このメールはシステムからの自動返信です<br><br>"
                    . "{{ name }} 様<br><br>"
                    . "メールフォームでのお問い合わせありがとうございます。<br><br>"
                    . "後日、担当者よりお客様のメールアドレスにご連絡いたします。<br>"
                    . "今しばらくお待ちください。<br><br>"
                    . "━━━━━━□■□　お問い合わせ内容　□■□━━━━━━<br>"
                    . "［お問い合わせ種別］ {{ type }}<br>"
                    . "［お名前］ {{ name }}<br>"
                    . "［メールアドレス］ {{ email }}<br>"
                    . "［電話番号］ {{ phone_number }}<br>"
                    . "［お問い合わせ内容］<br>"
                    . "{{ content }}<br>"
                    . "━━━━━━━━━━━━━━━━━━━━━━━━<br><br>"
                    . "{{ site_name }}",
                'setting_name' => 'お問い合わせ受付メール',
                'setting_type' => 'select|template:user:contact',
            ],
        ];

        foreach ($items as $item) {
            // 設定が既にあれば何もしない（冪等）
            $existingSetting = DB::table('settings')->where('slug', $item['slug'])->first();
            if ($existingSetting) {
                continue;
            }

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

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

    public function down()
    {
        // 既存環境のデータを誤って消さないよう、down では何もしない（補填専用マイグレーション）
    }
}
