<?php

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

return new class extends Migration
{
    public function up(): void
    {
        Schema::create('message_templates', function (Blueprint $table) {
            $table->id();
            $table->string('type')->unique(); // e.g. applied, accepted, rejected, stage_passed, stage_form_filled
            $table->string('label');          // Human-readable label
            $table->string('email_subject');
            $table->text('email_body');
            $table->text('wa_body');
            $table->text('available_variables')->nullable(); // JSON list of available placeholders
            $table->timestamps();
        });

        // Seed default templates
        $templates = [
            [
                'type' => 'applied',
                'label' => 'Lamaran Diterima',
                'email_subject' => 'Lamaran Diterima - {job_title}',
                'email_body' => 'Lamaran Anda untuk posisi <strong>{job_title}</strong> di <strong>{company}</strong> telah kami terima.<br><br>Kami akan meninjau lamaran Anda dan menghubungi Anda kembali.<br><br>Terima kasih telah melamar melalui {site_name}.',
                'wa_body' => "Halo {applicant_name},\n\nLamaran Anda untuk posisi *{job_title}* di *{company}* telah kami terima.\n\nKami akan meninjau lamaran Anda dan menghubungi Anda kembali.\n\nTerima kasih telah melamar melalui {site_name}.",
                'available_variables' => json_encode(['applicant_name', 'job_title', 'company', 'site_name', 'site_url']),
            ],
            [
                'type' => 'accepted',
                'label' => 'Diterima Kerja',
                'email_subject' => 'Selamat! Anda DITERIMA - {job_title}',
                'email_body' => 'Selamat! Anda dinyatakan <strong>DITERIMA</strong> untuk posisi <strong>{job_title}</strong> di <strong>{company}</strong>!<br><br>Silakan cek dashboard Anda untuk informasi lebih lanjut:<br><a href="{site_url}/dashboard">{site_url}/dashboard</a><br><br>Terima kasih atas partisipasi Anda.',
                'wa_body' => "Halo {applicant_name},\n\nSelamat! Anda dinyatakan *DITERIMA* untuk posisi *{job_title}* di *{company}*!\n\nSilakan cek dashboard Anda: {site_url}/dashboard\n\nTerima kasih atas partisipasi Anda.",
                'available_variables' => json_encode(['applicant_name', 'job_title', 'company', 'site_name', 'site_url']),
            ],
            [
                'type' => 'rejected',
                'label' => 'Ditolak',
                'email_subject' => 'Hasil Seleksi - {job_title}',
                'email_body' => 'Terima kasih telah mengikuti proses seleksi untuk posisi <strong>{job_title}</strong> di <strong>{company}</strong>.<br><br>Dengan berat hati kami informasikan bahwa Anda <strong>belum berhasil lolos</strong> pada seleksi kali ini.<br><br>Jangan berkecil hati! Anda masih bisa melamar posisi lainnya di:<br><a href="{site_url}">{site_url}</a>',
                'wa_body' => "Halo {applicant_name},\n\nTerima kasih telah mengikuti proses seleksi untuk posisi *{job_title}* di *{company}*.\n\nDengan berat hati kami informasikan bahwa Anda belum berhasil lolos pada seleksi kali ini.\n\nJangan berkecil hati! Anda masih bisa melamar posisi lainnya di: {site_url}",
                'available_variables' => json_encode(['applicant_name', 'job_title', 'company', 'site_name', 'site_url']),
            ],
            [
                'type' => 'stage_passed',
                'label' => 'Lolos Tahap Seleksi',
                'email_subject' => 'Selamat! Lolos {stage_name} - {job_title}',
                'email_body' => 'Selamat! Anda dinyatakan <strong>LOLOS {stage_name}</strong> untuk posisi <strong>{job_title}</strong> di <strong>{company}</strong>.<br><br>Silakan lengkapi tahap selanjutnya dengan mengakses dashboard Anda di:<br><a href="{site_url}/dashboard">{site_url}/dashboard</a><br><br>Harap segera melengkapi untuk melanjutkan proses seleksi.',
                'wa_body' => "Halo {applicant_name},\n\nSelamat! Anda dinyatakan *LOLOS {stage_name}* untuk posisi *{job_title}* di *{company}*.\n\nSilakan akses dashboard Anda: {site_url}/dashboard\n\nHarap segera melengkapi untuk melanjutkan proses seleksi.",
                'available_variables' => json_encode(['applicant_name', 'job_title', 'company', 'site_name', 'site_url', 'stage_name', 'stage_number']),
            ],
            [
                'type' => 'stage_form_filled',
                'label' => 'Formulir Tahap Diterima',
                'email_subject' => 'Formulir {stage_name} Diterima - {job_title}',
                'email_body' => 'Formulir <strong>{stage_name}</strong> Anda untuk posisi <strong>{job_title}</strong> telah kami terima.<br><br>Kami akan meninjau data Anda dan menghubungi kembali.',
                'wa_body' => "Halo {applicant_name},\n\nFormulir *{stage_name}* Anda untuk posisi *{job_title}* telah kami terima.\n\nKami akan meninjau data Anda dan menghubungi kembali.",
                'available_variables' => json_encode(['applicant_name', 'job_title', 'company', 'site_name', 'site_url', 'stage_name', 'stage_number']),
            ],
        ];

        foreach ($templates as $t) {
            $t['created_at'] = now();
            $t['updated_at'] = now();
            DB::table('message_templates')->insert($t);
        }
    }

    public function down(): void
    {
        Schema::dropIfExists('message_templates');
    }
};
