<?php
/**
 * send-devis-pac.php
 * Traitement du formulaire de demande de devis — Pompe à chaleur (PAC)
 * Conformité France 2026 : consentement RGPD + consentement téléphonique explicite,
 * preuve de consentement horodatée, backup log même en cas d'échec d'envoi email.
 *
 * ⚠️ À COMPLÉTER avant mise en production : voir bloc "CONFIGURATION" ci-dessous.
 */

// ============================================================
// CONFIGURATION — À COMPLÉTER PAR L'INTÉGRATEUR
// ============================================================
define('EMAIL_DESTINATAIRE', 'info@renovermaison.be');
define('EMAIL_FROM', 'no-reply@conseil-artisan.fr');
define('SERVICE_NOM', 'Pompe à chaleur');
define('SERVICE_SLUG', 'pac');
define('DOMAINE_SITE', 'https://www.conseil-artisan.fr');

// Identifiants partenaires — REMPLACER les valeurs XXXX par les vrais identifiants fournis par chaque partenaire
define('CAT_ID_VITEDEVIS', '40');
define('CAT_ID_HELLOARTISAN', '206');
define('CODE_METIER_DEVISPLUS', 'C13');
define('LEAD_FORM_ID_LEADVALUE', '1');
define('LEADVALUE_SECRET', 'CaRenoLeadvalue2026!'); // doit correspondre au ?secret= de send-leadvalue-pac.php

define('LOG_FILE', __DIR__ . '/leads-pac.log');
define('CONFIRMATION_URL', 'confirmation-pac.html');

// ============================================================
// FONCTIONS UTILITAIRES
// ============================================================
function clean($val) {
    return htmlspecialchars(strip_tags(trim($val ?? '')), ENT_QUOTES, 'UTF-8');
}

function write_log(array $entry): void {
    file_put_contents(LOG_FILE,
        json_encode($entry, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n",
        FILE_APPEND | LOCK_EX
    );
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    die('Méthode non autorisée.');
}

// ============================================================
// RÉCUPÉRATION DES CHAMPS
// ============================================================
$prenom          = clean($_POST['prenom'] ?? '');
$nom             = clean($_POST['nom'] ?? '');
$adresse         = clean($_POST['adresse'] ?? '');
$codePostal      = clean($_POST['codePostal'] ?? '');
$ville           = clean($_POST['ville'] ?? '');
$email           = clean($_POST['email'] ?? '');
$telephone       = clean($_POST['telephone'] ?? '');
$typePac         = clean($_POST['typePac'] ?? '');
$typeLogement    = clean($_POST['typeLogement'] ?? '');
$energieActuelle = clean($_POST['energieActuelle'] ?? '');
$statutOccupant  = clean($_POST['statutOccupant'] ?? '');
$delai           = clean($_POST['delai'] ?? '');
$surface         = clean($_POST['surface'] ?? '');
$descProjet      = clean($_POST['descProjet'] ?? '');

// Champs de preuve
$form_timestamp     = clean($_POST['form_timestamp'] ?? '');
$page_url           = clean($_POST['page_url'] ?? '');
$page_referrer      = clean($_POST['page_referrer'] ?? '');
$user_agent         = clean($_POST['user_agent'] ?? '');
$consent_rgpd_texte = clean($_POST['consent_rgpd_texte'] ?? '');
$consent_tel_texte  = clean($_POST['consent_tel_texte'] ?? '');
$rgpd               = isset($_POST['rgpd']) ? 'Oui' : 'Non';
$consent_tel        = isset($_POST['consentTel']) ? 'Oui' : 'Non';
$consent_tel_texte  = clean($_POST['consent_tel_texte'] ?? '');

// ============================================================
// VALIDATION SERVEUR (obligatoire même si validation JS déjà passée côté client)
// ============================================================
$erreurs = [];
if ($prenom === '') $erreurs[] = 'Prénom manquant';
if ($nom === '') $erreurs[] = 'Nom manquant';
if ($adresse === '') $erreurs[] = 'Adresse manquante';
if (!preg_match('/^[0-9]{5}$/', $codePostal)) $erreurs[] = 'Code postal invalide';
if ($ville === '') $erreurs[] = 'Ville manquante';
if ($typePac === '') $erreurs[] = 'Type de pompe à chaleur manquant';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $erreurs[] = 'Email invalide';
if (strlen(preg_replace('/[^0-9]/', '', $telephone)) < 9) $erreurs[] = 'Téléphone invalide';
if ($statutOccupant === '') $erreurs[] = 'Statut occupant manquant';
if ($rgpd !== 'Oui') $erreurs[] = 'Consentement RGPD non coché';
if ($consent_tel !== 'Oui') $erreurs[] = 'Consentement téléphonique non coché';

if (!empty($erreurs)) {
    http_response_code(400);
    die('Formulaire incomplet ou invalide : ' . implode(', ', $erreurs));
}

// ============================================================
// CONSTRUCTION DES URLS WEBHOOKS (générées mais NON appelées automatiquement)
// ============================================================
$telChiffres = preg_replace('/[^0-9]/', '', $telephone);
$descProjetEnrichi = trim('Type de PAC souhaité : ' . $typePac . '. ' . $descProjet);

$energie_map_dataopp = [
    'Fioul' => 'fioul', 'Gaz' => 'gaz', 'Electrique' => 'electrique', 'Bois' => 'bois', 'Aucun' => 'autre'
];
$logement_map_dataopp = [
    'Maison individuelle' => 'Maison', 'Maison de ville' => 'Maison',
    'Appartement' => 'Appartement', 'Local commercial' => 'Autre'
];
$statut_map_dataopp = [
    'Proprietaire' => 'proprietaire', 'Locataire' => 'locataire'
];

$refExt = 'PAC-' . date('Ymd-His') . '-' . substr(md5($email), 0, 6);
// Données de consentement pour Vite un Devis
$consent_timestamp = time(); // timestamp Unix serveur
$consent_ip_raw    = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';

$urlViteDevis = 'https://www.renovermaison.be/devis/vitedevis.php?' . http_build_query([
    'cat_id' => CAT_ID_VITEDEVIS, 'language' => 'fr', 'aff' => 'renomaison',
    'XML_country' => 'FR', 'acceptTerms' => 'true', 'utm_source' => 'AF',
    'XML_email' => $email, 'firstName' => $prenom, 'lastName' => $nom,
    'address1' => $adresse, 'companyCity' => $ville, 'XML_postcode' => $codePostal,
    'XML_telephone' => $telChiffres, 'XML_remarks' => $descProjetEnrichi,
	'consent_date' => $consent_timestamp,
    'consent_ip'=> urlencode($consent_ip_raw),
    'consent_texte'=> urlencode($consent_tel_texte),
    'consent_url' => urlencode($page_url),
]);

$urlHelloArtisan = 'https://www.renovermaison.be/devis/hello.php?' . http_build_query([
    'cat_id' => CAT_ID_HELLOARTISAN, 'language' => 'fr', 'aff' => 'renomaison',
    'XML_country' => 'FR', 'acceptTerms' => 'true', 'utm_source' => 'AF',
    'XML_remarks' => SERVICE_NOM, 'XML_email' => $email, 'firstName' => $prenom,
    'lastName' => $nom, 'address1' => $adresse, 'companyCity' => $ville,
    'XML_postcode' => $codePostal, 'XML_telephone' => $telChiffres,
]);

$urlDevisPlus = 'https://infos.devis-plus.com/devis-plus.nsf/DevisPost?openagent&' . http_build_query([
    'nomPartenaire' => 'conseilartisan_trans', 'cleAcces' => 'csl090221',
    'codeMetier' => CODE_METIER_DEVISPLUS, 'idfiche' => '1', 'Profil' => 'Particulier',
    'Situation' => $statutOccupant, 'typeDhabitat' => 'Maison / Pavillon',
    'typeTravaux' => 'Rénovation', 'delai' => $delai !== '' ? $delai : '2 à 3 mois',
    'civilite' => 'M', 'AccOffre' => 'oui', 'eMail' => $email, 'prenom' => $prenom,
    'nom' => $nom, 'adresse' => $adresse, 'ville' => $ville, 'codePostal' => $codePostal,
    'telephone' => $telChiffres, 'descProjet' => $descProjetEnrichi,
]);

$urlPingDevisPlus = 'https://infos.devis-plus.com/devis-plus.nsf/PingLead?openagent&' . http_build_query([
    'metier' => CODE_METIER_DEVISPLUS, 'eMail' => $email, 'prenom' => $prenom,
    'nom' => $nom, 'codePostal' => $codePostal,
]);

$urlDataopp = 'https://api.ma-transition-energetique.com/duro/pac.php?' . http_build_query([
    'pubid' => '366', 'cid' => '8', 'subdomain' => 'renov', 'scheme' => 'https',
    'terms' => '1', 'bases' => '1', 'apidl' => '1', 'apilf' => '1',
    'EXTUSER[statut-immobilier]' => $statut_map_dataopp[$statutOccupant] ?? $statutOccupant,
    'EXTUSER[logement]' => $logement_map_dataopp[$typeLogement] ?? $typeLogement,
    'EXTUSER[chauffage]' => $energie_map_dataopp[$energieActuelle] ?? 'autre',
    'EXTUSER[depenses-energetiques]' => 'Entre 1500 et 2000',
    'EXTUSER[situation]' => 'En activite',
    'firstname' => $prenom, 'lastname' => $nom, 'email' => $email,
    'address' => $adresse, 'city' => $ville, 'zipcode' => $codePostal,
    'phone' => $telChiffres,
    'dobDay' => '25', 'dobMonth' => '09', 'dobYear' => '1981',
    'ip' => $_SERVER['REMOTE_ADDR'] ?? '',
]);

$urlLeadvalue = DOMAINE_SITE . '/send-leadvalue-pac.php?' . http_build_query([
    'secret' => LEADVALUE_SECRET,
    'ref_ext' => $refExt,
    'prenom' => $prenom, 'nom' => $nom, 'email' => $email,
    'adresse' => $adresse, 'codePostal' => $codePostal, 'ville' => $ville,
    'telephone' => $telChiffres, 'typeLogement' => $typeLogement,
    'typePac' => $typePac,
    'statutOccupant' => $statutOccupant, 'energieActuelle' => $energieActuelle,
    'delai' => $delai, 'surface' => $surface, 'descProjet' => $descProjetEnrichi,
]);

// ============================================================
// ENVOI EMAIL
// ============================================================
$sujet = "Nouvelle demande de devis PAC FR";

$corps = "NOUVELLE DEMANDE DE DEVIS — " . strtoupper(SERVICE_NOM) . "\n";
$corps .= "=================================================\n\n";
$corps .= "COORDONNÉES DU LEAD\n";
$corps .= "-------------------------\n";
$corps .= "Prénom              : {$prenom}\n";
$corps .= "Nom                 : {$nom}\n";
$corps .= "Adresse             : {$adresse}\n";
$corps .= "Code postal         : {$codePostal}\n";
$corps .= "Ville               : {$ville}\n";
$corps .= "Email               : {$email}\n";
$corps .= "Téléphone           : {$telephone}\n";
$corps .= "Type de PAC voulu   : {$typePac}\n";
$corps .= "Type de logement    : {$typeLogement}\n";
$corps .= "Énergie actuelle    : {$energieActuelle}\n";
$corps .= "Statut occupant     : {$statutOccupant}\n";
$corps .= "Délai souhaité      : {$delai}\n";
$corps .= "Surface             : {$surface}\n";
$corps .= "Description projet  : {$descProjet}\n\n";

$corps .= "PREUVE DE CONSENTEMENT\n";
$corps .= "-------------------------\n";
$corps .= "Consentement RGPD       : {$rgpd}\n";
$corps .= "Consentement téléphone  : {$consent_tel}\n";
$corps .= "Date/heure formulaire   : {$form_timestamp}\n";
$corps .= "Date/heure serveur      : " . date('Y-m-d H:i:s') . "\n";
$corps .= "IP                      : " . ($_SERVER['REMOTE_ADDR'] ?? 'inconnue') . "\n";
$corps .= "Page origine            : {$page_url}\n";
$corps .= "Referrer                : {$page_referrer}\n";
$corps .= "User-Agent              : {$user_agent}\n";
$corps .= "Texte case RGPD affiché : \"{$consent_rgpd_texte}\"\n";
$corps .= "Texte case tél. affiché : \"{$consent_tel_texte}\"\n";
$corps .= "Cases précochées        : Non (vérification technique)\n\n";

$corps .= "WEBHOOKS PARTENAIRES (à déclencher manuellement, non appelés automatiquement)\n";
$corps .= "-------------------------\n";
$corps .= "Vite un Devis    : {$urlViteDevis}\n\n";
$corps .= "Hello Artisan    : {$urlHelloArtisan}\n\n";
$corps .= "Devis+           : {$urlDevisPlus}\n\n";
$corps .= "Ping Devis+      : {$urlPingDevisPlus}\n\n";
$corps .= "Dataopp          : {$urlDataopp}\n\n";
$corps .= "Leadvalue (via script intermédiaire) : {$urlLeadvalue}\n";

$headers  = "From: " . EMAIL_FROM . "\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

$sent = @mail(EMAIL_DESTINATAIRE, $sujet, $corps, $headers);

// ============================================================
// BACKUP LOG — écrit systématiquement, même si l'email échoue
// ============================================================
write_log([
    'timestamp'        => date('Y-m-d H:i:s'),
    'timestamp_client' => $form_timestamp,
    'mail_sent'        => $sent,
    'lead'             => [
        'prenom' => $prenom, 'nom' => $nom, 'adresse' => $adresse,
        'codePostal' => $codePostal, 'ville' => $ville, 'email' => $email,
        'telephone' => $telephone, 'typePac' => $typePac, 'typeLogement' => $typeLogement,
        'energieActuelle' => $energieActuelle, 'statutOccupant' => $statutOccupant,
        'delai' => $delai, 'surface' => $surface, 'descProjet' => $descProjet,
        'service' => SERVICE_NOM, 'ref_ext' => $refExt,
    ],
    'consentement'     => [
        'rgpd'             => $rgpd,
        'telephone'        => $consent_tel,
        'texte_rgpd'       => $consent_rgpd_texte,
        'texte_tel'        => $consent_tel_texte,
        'cases_precochees' => false,
    ],
    'technique'        => [
        'ip'         => $_SERVER['REMOTE_ADDR'] ?? 'inconnue',
        'page_url'   => $page_url,
        'referrer'   => $page_referrer,
        'user_agent' => $user_agent,
    ],
    'webhooks'         => [
        'vite_un_devis'  => $urlViteDevis,
        'hello_artisan'  => $urlHelloArtisan,
        'devis_plus'     => $urlDevisPlus,
        'ping_devis_plus'=> $urlPingDevisPlus,
        'dataopp'        => $urlDataopp,
        'leadvalue'      => $urlLeadvalue,
    ],
]);

// ============================================================
// REDIRECTION VERS LA PAGE DE CONFIRMATION
// ============================================================
header('Location: ' . CONFIRMATION_URL);
exit;
