<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\MessageTemplate;
use Illuminate\Http\Request;

class MessageTemplateController extends Controller
{
    public function index()
    {
        $templates = MessageTemplate::orderBy('id')->get();
        return view('admin.message-templates.index', compact('templates'));
    }

    public function edit(MessageTemplate $template)
    {
        return view('admin.message-templates.edit', compact('template'));
    }

    public function update(Request $request, MessageTemplate $template)
    {
        $request->validate([
            'email_subject' => 'required|string|max:255',
            'email_body' => 'required|string',
            'wa_body' => 'required|string',
        ]);

        $template->update([
            'email_subject' => $request->email_subject,
            'email_body' => $request->email_body,
            'wa_body' => $request->wa_body,
        ]);

        return redirect()->route('admin.message-templates.index')
            ->with('success', 'Template pesan "' . $template->label . '" berhasil diperbarui.');
    }

    public function resetToDefault(MessageTemplate $template)
    {
        $defaults = $this->getDefaults();

        if (isset($defaults[$template->type])) {
            $template->update($defaults[$template->type]);
            return redirect()->route('admin.message-templates.index')
                ->with('success', 'Template "' . $template->label . '" berhasil direset ke default.');
        }

        return redirect()->route('admin.message-templates.index')
            ->with('error', 'Default template tidak ditemukan.');
    }

    private function getDefaults(): array
    {
        return [
            'applied' => [
                '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}.",
            ],
            'accepted' => [
                '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.",
            ],
            'rejected' => [
                '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}",
            ],
            'stage_passed' => [
                '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.",
            ],
            'stage_form_filled' => [
                '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.",
            ],
            'password_reset' => [
                'email_subject' => 'Reset Password - {site_name}',
                'email_body' => 'Kami menerima permintaan untuk mereset password akun Anda di <strong>{site_name}</strong>.<br><br>Klik link berikut untuk membuat password baru:<br><a href="{reset_url}">{reset_url}</a><br><br><em>Link ini hanya berlaku selama 60 menit.</em><br><br>Jika Anda tidak merasa meminta reset password, abaikan email ini.',
                'wa_body' => "Halo {applicant_name},\n\nKami menerima permintaan reset password untuk akun Anda di *{site_name}*.\n\nKlik link berikut untuk membuat password baru:\n{reset_url}\n\n⏰ Link berlaku 60 menit.\n\nJika Anda tidak merasa meminta reset password, abaikan pesan ini.",
            ],
            'broadcast' => [
                'email_subject' => 'Info Terbaru dari {site_name}',
                'email_body' => 'Halo <strong>{applicant_name}</strong>,<br><br>Kami ingin menginformasikan bahwa ada lowongan pekerjaan terbaru yang mungkin cocok untuk Anda.<br><br>Silakan kunjungi website kami untuk melihat lowongan terbaru:<br><a href="{site_url}">{site_url}</a><br><br>Terima kasih,<br>{site_name}',
                'wa_body' => "Halo {applicant_name},\n\nKami ingin menginformasikan bahwa ada lowongan pekerjaan terbaru yang mungkin cocok untuk Anda.\n\nSilakan kunjungi website kami: {site_url}\n\nTerima kasih,\n{site_name}",
            ],
        ];
    }
}
