contact.php 16.2 KB
Newer Older
N. Peraldi's avatar
N. Peraldi committed
1
<?php
2 3 4
 /*
 Template Name: Test
 */
N. Peraldi's avatar
N. Peraldi committed
5 6


7
/*get_header(); */?>
N. Peraldi's avatar
N. Peraldi committed
8 9 10 11 12


<?php

$fichier = fopen('grille.csv', 'r');
13
$ligne = fgetcsv($fichier, 1024, ";");
N. Peraldi's avatar
N. Peraldi committed
14 15

//on effectue de nouveau cette instruction pour sauter les titres du tableau
16
$ligne = fgetcsv($fichier, 1024, ";");
17

18
//------------------------Variables-------------------
N. Peraldi's avatar
N. Peraldi committed
19

20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
$listeGrilleEntiere = [];       //contiendra l'intégralité des données dans grille.csv
$textsSelectMenu = [];         //contiendra les textes du premier select option gérés automatiquement
$textsSelectMenuExtended = []; //même rôle qu'au dessus mais en ajoutant les options gérées automatiquement + manuellement

$classSelectMenu = [];           //contiendra les classes des option menu gérés automatiquement
$classSelectMenuExtended = [];   //contiendra les classes des option menu gérés automatiquement + manuellement

function createFirstSelectionList($liste)
{
    //fonction qui crée la première liste de sélection sans modifier les textes
    $listeTempo = [];
    for ($a = 0; $a < count($liste); $a++) {
        $mot = $liste[$a][0];


        if (!isWordIn($mot, $listeTempo)) {
            $listeTempo[] = $mot;
N. Peraldi's avatar
N. Peraldi committed
37 38 39
        }
    }

40
    return $listeTempo;
N. Peraldi's avatar
N. Peraldi committed
41 42
}

43 44
function createNameClass($variable)
{
45
    //fonction qui nettoie la chaine pour pouvoir l'utiliser en tant que nom de classe
46 47 48 49 50
    $variable = str_replace("é", "e", $variable);
    $variable = str_replace("è", "e", $variable);
    $variable = str_replace("à", "a", $variable);
    $variable = str_replace("ç", "c", $variable);
    $variable = str_replace("ù", "u", $variable);
N. Peraldi's avatar
N. Peraldi committed
51

52
    $variable = str_replace(" ", "_", $variable);
53

N. Peraldi's avatar
N. Peraldi committed
54 55 56
    return $variable;
}

57
function createSizeSelectList($liste)
58 59
{
    //fonction qui crée la liste des classes qui sert pour le 2e select
N. Peraldi's avatar
N. Peraldi committed
60
    $resultList = [];
61
    for ($a = 0; $a < count($liste); $a++) {
62 63
        $mot = createNameClass($liste[$a][0]);

N. Peraldi's avatar
N. Peraldi committed
64

N. Peraldi's avatar
N. Peraldi committed
65 66
        if (!isWordIn($mot, $resultList)) {
            $resultList[] = $mot;
N. Peraldi's avatar
N. Peraldi committed
67 68 69 70
        }

    }

N. Peraldi's avatar
N. Peraldi committed
71
    return $resultList;
N. Peraldi's avatar
N. Peraldi committed
72 73 74

}

75 76 77 78 79 80
function isWordIn($word, $list)
{
    //on vérifie si word est contenu dans list
    for ($a = 0; $a < count($list); $a++) {
        if ($word == $list[$a]) {
            return true;
81 82 83
        }
    }

84
    return false;
85 86
}

87 88 89 90
while ($ligne) {
    //boucle qui va récupérer tout le contenu du fichier pour le stocker dans listeGrilleEntiere
    $listeGrilleEntiere[] = ($ligne);
    $ligne = fgetcsv($fichier, 1024, ";");
N. Peraldi's avatar
N. Peraldi committed
91 92
}

93

N. Peraldi's avatar
N. Peraldi committed
94 95
fclose($fichier);

96 97
//on crée la première liste qui gère les textes de la première liste, avec accents et espaces
$textsSelectMenu = createFirstSelectionList($listeGrilleEntiere);
98

99 100 101 102 103
//on ajoute "association", epci mutualisant et "individu" qui possèdent un traitement différent
$textsSelectMenuExtended = $textsSelectMenu;
$textsSelectMenuExtended[] = ("Association");
$textsSelectMenuExtended[] = ("Individu");
$textsSelectMenuExtended[] = ("EPCI Mutualisant");
104

105
//on crée la liste pour le 2e select qui contient le nom des classes gérés automatiquement
106
$classSelectMenu = createSizeSelectList($listeGrilleEntiere);
107

108 109
//classes gérées automatiquement + manuellement
$classSelectMenuExtended = $classSelectMenu;
110

111 112 113 114 115 116 117 118 119
$classSelectMenuExtended[] = ("Association");
$classSelectMenuExtended[] = ("Individu");
$classSelectMenuExtended[] = ("EPCIMutualisant");

//on trie par ordre alphabétique
sort($textsSelectMenu);
sort($textsSelectMenuExtended);
sort($classSelectMenu);
sort($classSelectMenuExtended);
120 121


122
?>
123

124 125 126
<script>
    var secondSelectList = [
        <?php
127

128
        //on génère la variable secondSelectList avec php
129
        for ($a = 0; $a < count($classSelectMenu); $a++) {
130

131 132
            echo "'" . $classSelectMenu[$a] . "'";
            if (($a + 1) < $classSelectMenu) {
133 134 135 136 137 138 139
                echo ",\n";
            }
        }
        ?>

    ];

140

141
    //liste des blocs qui peuvent être affichés / cachés
142
    var blocks = ["link", "paraSecondSelection", "cotisation", "informationsCollectivite", "formulaireEPCIMutualisant", "boutonEnvoyer"];
143 144


145
    function displayMask(display) {
146
        //fonction qui affiche / cache les formulaires / informations en fonction des données entrées dans les formulaires
147

148 149
        for (var h = 0; h < blocks.length; h++) {
            if (isWordIn(blocks[h], display)) {
150
                document.getElementById(blocks[h]).style.display = "block";
151
            } else {
152
                document.getElementById(blocks[h]).style.display = "none";
153 154 155
            }


156 157
        }
    }
158

159
    function displayMaskOptions(display) {
160
        //sert à afficher / cacher les options du 2e select menu
161

162
        var tousLesElements = undefined;
163 164


165
        for (var j = 0; j < secondSelectList.length; j++) {
166
            //boucle for qui va parcourir la liste des classes des options disponibles
167

168
            if (display === secondSelectList[j]) {
169
                //si l'element en cours est celui de la classe recherchée
170

171
                tousLesElements = document.getElementsByClassName(display);
172

173 174
                for (var g = 0; g < tousLesElements.length; g++) {
                    if (g === 0) {
175
                        //on passe la première option disponible en selected pour éviter un bug d'affichage
176
                        tousLesElements[g].selected = true;
177 178
                    }

179
                    tousLesElements[g].hidden = false;
180 181 182


                }
183
            } else {
184 185


186
                tousLesElements = document.getElementsByClassName(secondSelectList[j]);
187

188
                for (var h = 0; h < tousLesElements.length; h++) {
189 190
                    tousLesElements[h].hidden = true;
                }
191
            }
192
        }
193

194
    }
195

196 197
    function firstAction() {
        //fonction effectuée lorsque le premier select est validé
198

199 200 201
        //on recup ce qui a été cliqué
        var e = document.getElementById("firstSelect");
        var strUser = e.options[e.selectedIndex].value;
202

203
        //on reagit en fonction
204

205
        //si il a cliqué sur individu, redirigé vers helloasso
206 207
        if (strUser === "Individu") {
            linkRedirection("https://helloasso.com", "Redirection vers HelloAsso");
208 209
            displayMask(["link"]);
        }
210

211
        //si il a cliqué sur association
212
        else if (strUser === "Association") {
213

214
            setCotisation("Association");
215 216


217 218 219 220 221
            displayMask(["cotisation", "informationsCollectivite", "boutonEnvoyer"]);
            document.getElementById("secondSelection").required = false;
            setEPCIRequired(false);

        } else if (strUser === "EPCIMutualisant") {
222 223 224
            //formulaire contenant la formule spécifique à EPCI mutualisant
            displayMask(["formulaireEPCIMutualisant"]);
            setEPCIRequired(true);
225

226
        } else if (strUser === "none") {
227 228 229
            //premier choix avec des tirets
            displayMask([""]);
        }
230

231
        //si il a cliqué sur autre chose : on cherche à connaitre la taille de la collectivité, on affiche le 2e select
232
        else {
233

234 235
            displayMaskOptions(strUser);
            document.getElementById("secondSelection").required = true;
236

237 238
            displayMask(["paraSecondSelection"]);
            setEPCIRequired(false);
239 240

        }
241
    }
242

243
    function isWordIn(word, list) {
244
        //le word est il contenu dans list ?
245 246
        for (a = 0; a < list.length; a++) {
            if (word === list[a]) {
247
                return true
248 249 250
            }
        }

251 252
        return false
    }
253

254
    function linkRedirection(link, title) {
255
        //définit le lien de redirection et son titre
256 257
        document.getElementById("linkRedirection").setAttribute("href", link);
        document.getElementById("linkRedirection").setAttribute("title", title);
258
    }
259

260
    function secondAction() {
261 262
        //fonction exécutée lorsque le 2e select est cliqué
        var e = document.getElementById("secondSelection");
263

264 265 266 267 268 269 270 271 272 273
        if (e.options[e.selectedIndex].value !== "none") {
            //s'il a sélectionné autre chose que les tirets
            var selectedTranch = e.options[e.selectedIndex].getAttribute("id");

            setCotisation(selectedTranch);

            displayMask(["paraSecondSelection", "cotisation", "informationsCollectivite", "boutonEnvoyer"]);
        } else {
            displayMask(["paraSecondSelection"]);
        }
274

275
    }
276

277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299
    function setCotisation(id, x = 0) {
        //définit la cotisation à afficher, l'option x sert uniquement pour le tarif EPCI mutualisant qui varie.


        var paragraphCotList = document.getElementsByClassName("PCOT");
        var research = "PCOT-" + id;


        for (var b = 0; b < paragraphCotList.length; b++) {

            if (paragraphCotList[b].getAttribute("id") === research) {
                console.log(paragraphCotList[b].getAttribute("id") + "===" + research);

                paragraphCotList[b].style.display = "block";
                if (x > 0) {
                    document.getElementById("montantCotisation").innerHTML = x;
                }
            } else {
                paragraphCotList[b].style.display = "none";
                console.log(paragraphCotList[b].getAttribute("id") + "=/=" + research);
            }
        }

300
    }
301

302
    function setEPCIRequired(boolean) {
303 304 305 306
        //le formulaire EPCI est il requis ? cela varie selon les choix faits par l'utilisateur
        document.getElementById("nombreHabitantsEPCI").required = boolean;
        document.getElementById("nombreCommunesMembresEPCI").required = boolean;
    }
307 308


309
    function traitementEPCIMutualisant() {
310 311 312
        //lorsque l'utilisateur valide les 2 nombres entrés pour l'EPCI, les traitements nécessaires sont ici
        var nombreHabitants = document.getElementById("nombreHabitantsEPCI").value;
        var nombreCommunesMembres = document.getElementById("nombreCommunesMembresEPCI").value;
313 314


315 316
        if (nombreHabitants !== "") {
            if (nombreCommunesMembres !== "") {
317
                var resultat = (0.035 * nombreHabitants) + (15 * nombreCommunesMembres) + 1200;
318

319 320 321 322 323
                resultat = Math.round(resultat);
                //cette fonction arrondit le nombre en fonction du nombre après la virgule.
                //exemple :
                // Math.round(20,4999) donnera 20
                // Math.round(20,5) donnera 21
324 325


326
                if (resultat > 15000) {
327 328
                    //le plafond est fixé à 15000
                    resultat = 15000;
329
                }
330

331 332
                setCotisation("EPCIMutualisant", resultat);
                displayMask(["cotisation", "informationsCollectivite", "formulaireEPCIMutualisant", "boutonEnvoyer"]);
333

334 335
            }
        }
336
    }
337

338
</script>
N. Peraldi's avatar
N. Peraldi committed
339

340 341 342 343 344
<h1>Formulaire de renouvellement d'adhésion</h1>
<p>
    <b>Votre catégorie :</b>

</p>
345
<form action="contact.php" method="post">
346 347 348 349 350
    <p>
        <label for="firstSelect">Veuillez sélectionner le type de collectivité :</label>

        <select id="firstSelect" required="" name="firstSelection">
            <option value="none">---</option>
351 352 353 354 355 356 357 358 359 360 361 362 363

            <?php
            //on génère les options en fonction du fichier et des valeurs par défaut.
            for ($i = 0; $i < count($textsSelectMenuExtended); $i++) {
                ?>
                <option class="optionFirstSelect"
                        value="<?php echo $classSelectMenuExtended[$i] ?>"><?php echo $textsSelectMenuExtended[$i] ?></option>
                <?php
            }


            ?>

364 365 366 367 368

        </select>
    </p>

    <div id="link">
369
        <a href="contact.php" id="linkRedirection" title="Page par défaut">Valider</a>
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386
    </div>

    <div id="formulaireEPCIMutualisant">
        <label for="nombreHabitantsEPCI">Nombre d'habitants de l'EPCI :</label>
        <input type="number" name="nombreHabitantsEPCI" id="nombreHabitantsEPCI"><br>

        <label for="nombreCommunesMembresEPCI">Nombre de communes membres :</label>
        <input type="number" name="nombreCommunesMembresEPCI" id="nombreCommunesMembresEPCI"><br>

        <input type="button" value="Valider" id="boutonValiderNombresEPCI">


    </div>

    <p id="paraSecondSelection">
        <label for="secondSelection">Veuillez sélectionner la taille :</label>

N. Peraldi's avatar
N. Peraldi committed
387
        <select id="secondSelection" name="secondSelection">
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417

            <?php
            $classInTreatment = "";
            $counter = 1;

            for ($a = 0; $a < count($listeGrilleEntiere); $a++) {
                //boucle qui génère les options du second select

                //on récupère la ligne
                $actualLine = $listeGrilleEntiere[$a];
                $actualClass = createNameClass($actualLine[0]);

                //on vérifie si on change de classe ou non pour remettre le compteur à 1
                if ($classInTreatment != $actualClass) {

                    $counter = 1;
                    $classInTreatment = $actualClass;

                    ?>
                    <option class="<?php echo $classInTreatment ?>" value="none">---</option>
                    <?php
                }

                //la tranche pour la cotisation
                $tranch = $classInTreatment . "-T" . $counter;

                ?>
                <option class="<?php echo $classInTreatment ?>" id="<?php echo $tranch ?>"
                        value="<?php echo $actualLine[1] ?>"><?php echo $actualLine[1] ?></option>
                <?php
418 419


420 421 422 423 424 425 426
                $counter += 1;


            }

            ?>

427 428 429 430 431

        </select>
    </p>

    <div id="cotisation">
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467

        <?php
        $classInTreatment = "";
        $counter = 1;

        for ($a = 0; $a < count($listeGrilleEntiere); $a++) {
            //boucle qui génère les montants des cotisations

            //on récupère la ligne
            $actualLine = $listeGrilleEntiere[$a];
            $actualClass = createNameClass($actualLine[0]);

            //on vérifie si on change de classe ou non pour remettre le compteur à 1
            if ($classInTreatment != $actualClass) {

                $counter = 1;
                $classInTreatment = $actualClass;
            }

            //la tranche pour la cotisation
            $id = "PCOT-" . $classInTreatment . "-T" . $counter;

            ?>
            <p id="<?php echo $id ?>" class="PCOT">Montant de la cotisation : <?php echo $actualLine[2] ?></p>
            <?php

            $counter += 1;


        }

        ?>

        <p id="PCOT-EPCIMutualisant" class="PCOT">Montant de la cotisation : <span id="montantCotisation"></span></p>
        <p id="PCOT-Association" class="PCOT">Montant de la cotisation : 15€</p>

468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512
    </div>


    <div id="informationsCollectivite">
        <h3>Informations obligatoires :</h3>

        <label for="nomCollectivite">Nom de la collectivité :</label>
        <input type="text" name="nomCollectivite" id="nomCollectivite" required=""><br>

        <label for="adresseCollectivite">Adresse :</label>
        <input type="text" name="adresseCollectivite" id="adresseCollectivite" required=""><br>

        <label for="codePostalCollectivite">Code postal :</label>
        <input type="text" name="codePostalCollectivite" id="codePostalCollectivite" required=""><br>

        <label for="villeCollectivite">Ville :</label>
        <input type="text" name="villeCollectivite" id="villeCollectivite" required=""><br>

        <label for="telCollectivite">Téléphone :</label>
        <input type="tel" name="telCollectivite" id="telCollectivite" required=""><br>

        <label for="siteCollectivite">Site internet :</label>
        <input type="url" name="siteCollectivite" id="siteCollectivite" required=""><br>

        <h3>Informations relatives à Chorus Pro</h3>

        <label for="siretCollectivite">SIRET :</label>
        <input type="text" name="siretCollectivite" id="siretCollectivite" required=""><br>

        <label for="numeroEngagementCollectivite">N° d'engagement :</label>
        <input type="text" name="numeroEngagementCollectivite" id="numeroEngagementCollectivite" required=""><br>

        <label for="codeCollectivite">Code :</label>
        <input type="text" name="codeCollectivite" id="codeCollectivite" required=""><br>


    </div>


    <input type="submit" id="boutonEnvoyer">
</form>

<script>

    displayMask([""]);
513 514 515 516
    document.getElementById("firstSelect").setAttribute("onchange", "firstAction()");
    document.getElementById("boutonValiderNombresEPCI").setAttribute("onclick", "traitementEPCIMutualisant()");
    document.getElementById("secondSelection").setAttribute("onchange", "secondAction()");
    setCotisation("");
517 518

</script>
N. Peraldi's avatar
N. Peraldi committed
519

520
<?php /*get_footer(); */?>