<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\App;

class ContactController extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function index(Request $request)
    {
        // Page GET simple : on lit juste les flash messages dans la vue
        return view('contact');
    }

    public function sendMail(Request $request)
    {
        // 1) Honeypot simple : champ caché qui doit rester vide
        if (filled($request->input('nice_field'))) {
            return back()
                ->with('message_error', "Merci d'accepter les conditions avant de procéder à l'envoi de votre demande.")
                ->withInput();
        }

        // 2) Validation (email, required, accept, pas de lien http/https)
        $validated = $request->validate([
            'fullname' => ['required', 'string', 'min:2', 'max:160'],
            'email'    => ['required', 'email:rfc,dns', 'max:190'],
            'phone'    => ['nullable', 'string', 'max:50'],
            'message'  => ['required', 'string', 'max:5000', 'not_regex:/(https?:\/\/|www\.|ftp:\/\/|mailto:|@[a-z0-9._-]+\.[a-z]{2,})/i'],
            'accept'   => ['accepted'], // case à cocher RGPD/conditions
        ], [
            'fullname.required' => __('form.field.required'),
            'email.required' => "L'adresse email est obligatoire.",
            'email.email'    => "L'adresse email doit être au format <strong>adresse@domaine.com</strong>.",
            'email.max'      => "L'adresse email ne peut pas dépasser 190 caractères.",
            'message.required' => 'Le message est obligatoire.',
            'message.not_regex' => "Le contenu de votre message ne doit pas contenir de lien ou de contenu assimilable à du SPAM.",
            'accept.accepted'   => "Merci d'accepter les conditions avant de procéder à l'envoi de votre demande.",
        ]);

        // 3) Envoi (Mailjet tel que tu l’avais)
        try {
            $mj = new \Mailjet\Client(env('MJ_APIKEY_PUBLIC'), env('MJ_APIKEY_PRIVATE'), true, ['version' => 'v3.1']);

            $contact = (object)[
                'fullname' => $validated['fullname'],
                'email'    => $validated['email'],
                'phone'    => $validated['phone'] ?? null,
                'message'  => $validated['message'],
            ];

            $body = [
                'Messages' => [[
                    'From' => [ 'Email' => "contact@lcrh.fr", 'Name' => "Cabinet RH - LCRH" ],
                    'To'   => [[ 'Email' => "arnaud.bogillot@lcrh.fr", 'Name' => "Arnaud Bogillot" ]],
                    'Bcc'   => [[ 'Email' => "jeremy@pluma-dev.com" ]],
                    'Subject' => "Message provenant de votre site internet lcrh.fr",
                    'HTMLPart' => view('email.contact-submited', ['contact' => $contact])->render(),
                ]],
            ];

            $response = $mj->post(\Mailjet\Resources::$Email, ['body' => $body]);

            if (!$response->success()) {
                return back()
                    ->with('message_error', "Nous sommes désolés, votre demande n'a pas pu être envoyée.<br/>Merci de réessayer ultérieurement ou de <a href=\"mailto:arnaud.bogillot@lcrh.fr?subject=Message%20depuis%20le%20site%20internet\">nous contacter directement</a>.")
                    ->withInput();
            }
        } catch (\Exception $ex) {
            if (App::hasDebugModeEnabled()) {
                throw $ex;
            }
            return back()
                ->with('message_error', "Votre demande n'a pas pu être envoyée.<br/>Merci de réessayer ultérieurement.")
                ->withInput();
        }

        // 4) Succès → flash + redirect (PRG)
        return redirect()
            ->route('contact', app()->getLocale())
            ->with('message_success', "Merci pour votre demande.<br/>Nous vous recontacterons dans les plus brefs délais !<br/><br/><em><strong>LE CABINET RH - LCRH</strong></em>");
    }
}
