<?php

namespace App\Http\Controllers;

use App\Http\Requests\ContactRequest;
use App\Jobs\SendContactEmailJob;
use Inertia\Inertia;
use Inertia\Response;

class ContactConfirmController extends Controller
{
    /**
     * Handle contact form submission and show confirmation page.
     */
    public function show(ContactRequest $request): Response
    {
        $contactData = $request->validated();

        // Store contact data in session for confirmation page
        session(['contact_data' => $contactData]);

        return Inertia::render('ContactConfirm', [
            'contactData' => $contactData,
        ]);
    }

    /**
     * Process the confirmed contact submission.
     */
    public function store(ContactRequest $request): Response
    {
        $contactData = $request->validated();

        try {
            // Dispatch job to send emails via queue
            SendContactEmailJob::dispatch($contactData);

            // Clear contact data from session
            session()->forget('contact_data');

            // Redirect to success result page
            return Inertia::render('ContactResult', [
                'status'      => 'success',
                'message'     => 'お問い合わせありがとうございます。1営業日以内にご返信いたします。',
                'contactData' => $contactData,
            ]);

        } catch (\Exception $e) {
            \Log::error('Contact form submission failed', [
                'error'        => $e->getMessage(),
                'contact_data' => $contactData,
            ]);

            // Redirect to error result page
            return Inertia::render('ContactResult', [
                'status'      => 'error',
                'message'     => 'システムエラーが発生いたしました。しばらく時間をおいて再度お試しください。',
                'contactData' => $contactData,
            ]);
        }
    }
}
