/**
 * Fonction faisant quitter le groupe d'activité que l'user possédait si il essaye de changer d'activité. Si il était chef
 * de groupe, il passe le lead à un autre membre du groupe ou le supprimer si il était le seul membre de ce groupe.
 */
function leaveGroupe()
{
    require "../Manager/Groupe_InvitationManager.manager.php";
    $ugm = new User_GroupeManager(connexionDb());
    $gmm = new Groupe_MessageManager(connexionDb());
    $gim = new Groupe_InvitationManager(connexionDb());
    $idGr = $ugm->getGroupeIdByUserId($_SESSION['User']);
    if (isset($idGr[0]['id_groupe'])) {
        $groupe = new Groupe(array("id_groupe" => $idGr[0]['id_groupe']));
        if (hasGroupe()) {
            $nom = $_SESSION['User']->getUserName();
            $desc = "L'utilisateur {$nom} a quitté le groupe suite à un changement d'activité.";
            $gmm->addMess($groupe, $_SESSION['User'], $desc);
            $ugm->deleteUserGroupe($_SESSION['User']);
        }
        if (isLeader()) {
            $autreMembre = false;
            $gm = new GroupeManager(connexionDb());
            $tabUser = $ugm->getUserIdByGroupeId($groupe);
            foreach ($tabUser as $elem) {
                if ($elem['id_user'] != $_SESSION['User']->getId()) {
                    if (isset($elem['id_user']) && $elem['id_user'] != 0) {
                        $autreMembre = true;
                        $idNewLeader = $elem['id_user'];
                        $nom = $_SESSION['User']->getUserName();
                        $um = new UserManager(connexionDb());
                        $newLead = $um->getUserById($idNewLeader);
                        $userName = $newLead->getUserName();
                        $desc = "L'utilisateur {$nom} a quitté le groupe suite à un changement d'activité. {$userName} est dorénavant votre nouveau chef de groupe.";
                        $gmm->addMess($groupe, $_SESSION['User'], $desc);
                    }
                }
            }
            if ($autreMembre) {
                $gm->updateLeader($groupe, $idNewLeader);
            } else {
                $ugm->deleteGroupe($groupe);
                $gmm->deleteMessByGroupe($groupe);
                $gim->deleteInvitByGroupeId($groupe);
                $gm->deleteGroupe($_SESSION['User']->getId());
            }
        }
    }
}
/**
 * Fonction permettant d'afficher la liste des membres premium ayant la même activité que moi. Cela indique aussi
 * si ils ont un groupe ou non.
 */
function afficherMembres()
{
    $um = new UserManager(connexionDb());
    $uam = new User_ActivityManager(connexionDb());
    $ugm = new User_GroupeManager(connexionDb());
    $act = $uam->getActIdByUserId($_SESSION['User']);
    $groupeUser = $ugm->getGroupeIdByUserId($_SESSION['User']);
    $tab = $um->getAllUser();
    $lenght = count($tab);
    $existant = false;
    ?>
    <div class="table-responsive">
        <table class="table table-striped">
            <caption> <h2> Membres premium ayant la même activité que vous</h2></caption>
            <tr>
                <th> Nom d'utilisateur</th>
                <th> Dernière connexion</th>
                <th> Date d'inscription</th>
                <th> Action</th>
            </tr>
            <?php 
    foreach ($tab as $elem) {
        #TODO TEST QUAND LA BASE DE DONNEES SERA CLEAN CAR BUG
        $id = $elem->getId();
        $actUser = $uam->getActIdByUserId($elem);
        if (isset($id) && $id != $_SESSION['User']->getId()) {
            if (isset($elem->getDroit()[0]) && ($elem->getDroit()[0]->getId() == 3 || $elem->getDroit()[0]->getId() == 2 || $elem->getDroit()[0]->getId() == 1)) {
                if ($actUser != NULL) {
                    if ($actUser[0]['id_activity'] == $act[0]['id_activity']) {
                        $groupe = $ugm->getGroupeIdByUserId($elem);
                        echo "<tr> <td>" . $elem->getUserName() . " </td><td>" . $elem->getDateLastConnect() . "</td><td>" . $elem->getDateInscription() . "</td>";
                        if ($groupeUser != NULL && dejaInvite($id, $groupeUser[0]['id_groupe'])) {
                            echo "<td> Cette personne a déjà été invitée dans votre groupe !</td>";
                        } else {
                            if ($groupeUser != NULL && sameGroupe($elem, $groupeUser[0]['id_groupe'])) {
                                echo "<td> Cette personne est déjà dans votre groupe !</td>";
                            } else {
                                if ($groupe != NULL && hasGroupe()) {
                                    echo "<td> Cette personne est déjà dans un groupe, tout comme vous !</td>";
                                } else {
                                    if ($groupe != NULL) {
                                        echo "<td><a href='groupe.page.php?to=rejoindre&groupe=" . $groupe[0]['id_groupe'] . "'> Rejoindre le groupe </a></td>";
                                    } else {
                                        if (hasGroupe()) {
                                            echo "<td><a href='groupe.page.php?to=ajouter&membre={$id}'> Ajouter dans mon groupe </a></td>";
                                        } else {
                                            echo "<td> Vous n'avez pas de groupe, tout comme la personne !</td>";
                                        }
                                    }
                                }
                            }
                        }
                        echo "<tr>";
                        $existant = true;
                    }
                }
            }
        }
    }
    if ($tab == NULL || !$existant) {
        echo "<tr> <td> Aucun utilisateur trouvé !</td></tr>";
    }
    ?>
        </table>
    </div>
    <?php 
}
                            if (isset($_GET['to']) && $_GET['to'] == 'voirGroupe' && hasGroupe()) {
                                if (gererActionMembre()) {
                                } else {
                                    if (isset($_POST['Acceptersupprimer']) || isset($_POST['Refusersupprimer'])) {
                                        supprimerMembre();
                                    } else {
                                        if (isset($_POST['Accepterlead']) || isset($_POST['Refuserlead'])) {
                                            nommerLeader();
                                        } else {
                                            envoiMessage();
                                            voirGroupe();
                                        }
                                    }
                                }
                            } else {
                                if (isset($_GET['to']) && $_GET['to'] == 'invitation' && !hasGroupe()) {
                                    gererReponseInvitation();
                                    afficherInvitation();
                                } else {
                                    header("Location:groupe.page.php");
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
?>
        </article>