?php
declare (strict_types=1);

//variable qui sert à ajouter les contributions de chaque joueurs
(int)$additioncontribution = 0;

//déclarer les variables (age, nom, prénom, temps de course, catégorie d'age)


const DON_PAR_MINUTE = 0.1;
// define("DON", 0.1); A bannir !!!!!

//liste participant stock infoparticipants
(array) $ListeParticipants = [
];

// Variable qui determine si la course est en cours (true = en cours / false = fin de le course)
(bool) $courseActive = true;

while ($courseActive):
    (array) $infoparticipant = [
        "prenom" => "",
        "nom" => "",
        "age" => 0,
        "heure" => 0,
        "minute" => 0,
        "seconde" => 0,
        "tempstotal" => 0.0,
        "contribution" => 0.0
    
    ];


    (string) $saisieTexte="";
    //demander/stocker le prénom
    while(!$saisieTexte):
        print("Bonjour quel est votre prénom ? ");
        $saisieTexte = trim(strval(fgets(STDIN)));
    endwhile;
    $infoparticipant["prenom"] = $saisieTexte;

    //demander/stocker le nom
    (string) $saisieNom="";
    while(!$saisieNom):

        print("Quel est votre nom ? ");
        
        $saisieNom= trim(strval(fgets(STDIN)));
        endwhile;
        $infoparticipant["nom"] = $saisieNom;

    //demander/stocker l'age
    (int) $saisieAge= 0;

    while(!$saisieAge):
        print("Quel est votre age ? ");
        $saisieAge = intval(trim(strval(fgets(STDIN))));
    endwhile;

    $infoparticipant["age"] = $saisieAge;

    // on verifie que la durée de la course n'est pas 00:00:00
    while ($infoparticipant["heure"] == 0 && $infoparticipant["minute"] == 0 && $infoparticipant["seconde"] == 0):
        
        // Saisie et Stockage des données temps
        (int) $saisieHeure = -1;
        while ($saisieHeure < 0): 
            print('saisir heure ? ');
            $saisieHeure =  intval(trim(strval(fgets(STDIN))));
        endwhile;
        

        // Pour stocker la valeur de la variable saisieHeure dans le tableau listeTemps 
        $infoparticipant ["heure"]= $saisieHeure;

        (int) $saisieMinute= -1;
        while (!($saisieMinute >=0 && $saisieMinute <= 59)):
            print('saisir minute ? ');
            $saisieMinute =  intval(trim(strval(fgets(STDIN))));
        endwhile;

        // Pour stocker la valeur de la variable saisieMinute dans le tableau listeTemps
        $infoparticipant ["minute"]= $saisieMinute;

        (int) $saisieSeconde= -1;
        while (!($saisieSeconde >=0 && $saisieSeconde <= 59)):
            print('saisir seconde ? ');
            $saisieSeconde =  intval(trim(strval(fgets(STDIN))));
        endwhile;
        // Pour stocker la valeur de la variable saisieSeconde dans le tableau listeTemps
        $infoparticipant ["seconde"]= $saisieSeconde;
    endwhile;
    
    // Conversion heure et seconde en minute + envoie a key(tempstotal)
    $infoparticipant["tempstotal"] = $infoparticipant["heure"]*60 + $infoparticipant["minute"] + $infoparticipant["seconde"]/60;
    $infoparticipant["contribution"] = $infoparticipant["tempstotal"]*DON_PAR_MINUTE;
    printf(" Le participant %s %s contribue de: %g euros". PHP_EOL ,$infoparticipant["nom"] ,$infoparticipant["prenom"] , $infoparticipant["contribution"]);
    
    $additioncontribution =  $additioncontribution + $infoparticipant["contribution"];
    printf("La contribution totale est actuellement de %g euros". PHP_EOL  ,$additioncontribution);
    // Stock les données saisies par l'utilisateur dans le tableau $ListeParticipants[]
    $ListeParticipants[]= $infoparticipant;
    print_r($ListeParticipants);

    //il faut une liste classée par tranche d'age et par le temps décroissant

    // TRANCHES D'AGES
    switch ($infoparticipant["age"]) :
        case ($infoparticipant ["age"] < 8) :       //equivalent à case ($infoparticipant["age"] == ($infoparticipant["age"] < 8))
            print('Vous êtes dans la tranche d\'âge 8 ans ou moins.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 10) :
            print('Vous êtes dans la tranche d\'âge 8 - 10 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 14) :
            print('Vous êtes dans la tranche d\'âge 10 - 14 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 17) :
            print('Vous êtes dans la tranche d\'âge 14 - 18 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 25) :
            print('Vous êtes dans la tranche d\'âge 18 - 25 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 45) :
            print('Vous êtes dans la tranche d\'âge 25 - 45 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 60) :
            print('Vous êtes dans la tranche d\'âge 45 - 60 ans.'). PHP_EOL;
            break;
        case ($infoparticipant ["age"] < 70) :
            print('Vous êtes dans la tranche d\'âge 60 - 70 ans.'). PHP_EOL;
            break;
        default : 
        print('Vous êtes dans la tranche d\'âge 70 ans et plus.'). PHP_EOL;
    endswitch;

    (array) $SPONSORS = [
        "Super U" =>	0.15,
        "Garage Moulin" =>	0.045,
        "Bijouterie Excelior" => 0.045,
        "Boucherie Sanzos" => 0.025,
        "Carrefour Market"  => 0.075,
        "Boulangerie Giraud" => 0.02,
        "Cabinet comptable AGC" => 0.045,
        "Lambert et Colin avocats associés" => 0.055,
        "Chez Romain (épicerie)" => 0.05,
        "Le café de la gare (bar-restaurant)" => 0.05,
        "Cinéma Le Plaza" => 0.04,
        "Lions Club" => 0.125,
        "Relai H" => 0.055,
        "Mc Donalds (SARL Bernard)" => 0.095,
        "Starbuck café" => 0.08,
        "La page blanche (libraire-papeterie)" => 0.045
    ];

    (array)$partsponsor = [
        "Super U"                               => $SPONSORS[ "Super U"]*$additioncontribution,
        "Garage Moulin"                         => $SPONSORS["Garage Moulin"]*$additioncontribution,
        "Bijouterie Excelior"                   => $SPONSORS["Bijouterie Excelior"]*$additioncontribution,
        "Boucherie Sanzos"                      => $SPONSORS["Boucherie Sanzos"]*$additioncontribution,
        "Carrefour Market"                      => $SPONSORS["Carrefour Market"]*$additioncontribution,
        "Boulangerie Giraud"                    => $SPONSORS["Boulangerie Giraud"]*$additioncontribution,
        "Cabinet comptable AGC"                 => $SPONSORS["Cabinet comptable AGC"]*$additioncontribution,
        "Lambert et Colin avocats associés"     => $SPONSORS["Lambert et Colin avocats associés"]*$additioncontribution,
        "Chez Romain (épicerie)"                => $SPONSORS["Chez Romain (épicerie)"]*$additioncontribution,
        "Le café de la gare (bar-restaurant)"   => $SPONSORS["Le café de la gare (bar-restaurant)"]*$additioncontribution,
        "Cinéma Le Plaza"                       => $SPONSORS["Cinéma Le Plaza"]*$additioncontribution,
        "Lions Club"                            => $SPONSORS["Lions Club"]*$additioncontribution,
        "Relai H"                               => $SPONSORS["Relai H"]*$additioncontribution ,
        "Mc Donalds (SARL Bernard)"             => $SPONSORS["Mc Donalds (SARL Bernard)"]*$additioncontribution,
        "Starbuck café"                         => $SPONSORS["Starbuck café"]*$additioncontribution,
        "La page blanche (libraire-papeterie)"  => $SPONSORS["La page blanche (libraire-papeterie)"]*$additioncontribution
    
    ];
    
    print_r($partsponsor);

    $odre = [

    ];

    foreach ( $ListeParticipants as $participant ) {
        $participant = $participant["tempstotal"] .$participant["nom"];
        $odre[] = $participant;
    }

    arsort ($odre);

    print_r ($odre);
 

    
    
    
    (string) $choixFin = '';
    
    while ( $choixFin != 'n' && $choixFin != 'y'):
        print('Voulez vous continuer la course (y / n) ?');
        $choixFin = trim(strval(fgets(STDIN)));
    endwhile;

    $courseActive = ($choixFin == 'y');

    // Version sans forme ternaire
    // if ($choixFin == 'n') {
    //     $courseActive = true;
    // } else {
    //     $courseActive = false;
    // }
endwhile;