| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 |
- <?php
- /**
- * Classe lottery
- *
- * Cette classe gère les opérations liées aux loteries, telles que la récupération des données, l'inscription, la mise à jour et la suppression.
- */
- class lottery
- {
- /**
- * Récupère les informations des loteries.
- *
- * @return array Résultats des loteries.
- */
- public static function getLotterys()
- {
- db::query("SELECT "
- . "" . DB_T_LOTTERY . ".id, "
- . "" . DB_T_LOTTERY . ".md5, "
- . "" . DB_T_LOTTERY . ".titre, "
- . "" . DB_T_LOTTERY . ".description, "
- . "" . DB_T_LOTTERY . ".sortDate, "
- . "COUNT(" . DB_T_LOTTERY_INSCRITS . ".login) AS m_inscrits, "
- . "SUM(IF(" . DB_T_LOTTERY_INSCRITS . ".valide = 1, 1, 0)) AS m_eligible, "
- . "SUM(IF(" . DB_T_LOTTERY_INSCRITS . ".valide = 0, 1, 0)) AS m_ineligible, "
- . "COUNT(" . DB_T_LOTTERY_INSCRITS . ".selected) AS m_selected, "
- . "" . DB_T_LOTTERY . ".cree, "
- . "" . DB_T_LOTTERY . ".maj, "
- . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'user' "
- . "FROM " . DB_T_LOTTERY . " "
- . "LEFT JOIN " . DB_T_LOTTERY_INSCRITS . " ON " . DB_T_LOTTERY_INSCRITS . ".id_lottery = " . DB_T_LOTTERY . ".id "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_LOTTERY . ".id_user = " . DB_T_USER . ".id "
- . "GROUP BY 1");
- return db::resultset();
- }
- /**
- * Récupère les inscriptions pour une loterie donnée.
- *
- * @param int $_id Identifiant de la loterie.
- * @return array Résultats des inscriptions.
- */
- public static function getInscription(int $_id){
- db::query("SELECT "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_lottery, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_salarie, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_presta, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_dossier, "
- . "IF(" . DB_T_SALARIES . ".actif = 1, 'ACTIF', IF(" . DB_T_SALARIES . ".actif = 0, 'INACTIF', 'ABSENT')) AS actif , "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".login) AS login, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".prenom) AS prenom, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".nom) AS nom, "
- . "UCASE(" . DB_T_SALARIES . ".lieu) AS lieu, "
- . "IF(" . DB_T_LOTTERY_INSCRITS . ".valide = 1, 'OUI', 'NON') AS valide, "
- . "" . DB_T_LOTTERY_INSCRITS . ".selected, "
- . "" . DB_T_LOTTERY_INSCRITS . ".cree, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_user, "
- . "CONCAT(" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom ) AS admin, "
- . "" . DB_T_LOTTERY_INSCRITS . ".cree "
- . "FROM " . DB_T_LOTTERY_INSCRITS . " "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_LOTTERY_INSCRITS . ".id_user = " . DB_T_USER . ".id "
- . "LEFT JOIN " . DB_T_SALARIES . " ON " . DB_T_LOTTERY_INSCRITS . ".id_salarie = " . DB_T_SALARIES . ".id "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_lottery = :id_lottery");
- db::bind(':id_lottery', $_id);
- return db::resultset();
- }
- /**
- * Récupère les gagnants d'une loterie donnée.
- *
- * @param int $_id Identifiant de la loterie.
- * @return array Résultats des gagnants.
- */
- public static function getWinners(int $_id){
- db::query("SELECT "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_salarie, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_dossier, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".login) AS login, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".prenom) AS prenom, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".nom) AS nom, "
- . "" . DB_T_LOTTERY_INSCRITS . ".selected "
- . "FROM " . DB_T_LOTTERY_INSCRITS . " "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_lottery = :id_lottery AND " . DB_T_LOTTERY_INSCRITS . ".selected IS NOT NULL");
- db::bind(':id_lottery', $_id);
- return db::resultset();
- }
- /**
- * Récupère les informations de clôture d'une loterie.
- *
- * @param int $_id Identifiant de la loterie.
- * @return array Informations de clôture.
- */
- public static function getCloture(int $_id){
- db::query("SELECT "
- . DB_T_LOTTERY . ".sortDate, "
- . DB_T_LOTTERY . ".sortNb, "
- . "CONCAT (" . DB_T_USER . ".prenom, ' ', " . DB_T_USER . ".nom) AS 'sortBy' "
- . "FROM " . DB_T_LOTTERY . " "
- . "INNER JOIN " . DB_T_USER . " ON " . DB_T_LOTTERY . ".id_user = " . DB_T_USER . ".id "
- . "WHERE " . DB_T_LOTTERY . ".id = :id");
- db::bind(':id', $_id);
- return db::single();
- }
- /**
- * Récupère les inscriptions triées pour une loterie donnée.
- *
- * @param int $_id Identifiant de la loterie.
- * @param int $_sort Nombre d'inscriptions à trier (0 pour tout).
- * @return array Résultats triés.
- */
- public static function getSortInscription(int $_id, int $_sort = 0)
- {
- if($_sort == 0){
- $sqlSort = "";
- } else {
- $sqlSort = " ORDER BY RAND() LIMIT " . $_sort;
- }
-
- db::query("SELECT "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_lottery, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_salarie, "
- . "" . DB_T_LOTTERY_INSCRITS . ".id_dossier, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".login) AS login, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".prenom) AS prenom, "
- . "UCASE(" . DB_T_LOTTERY_INSCRITS . ".nom) AS nom "
- . "FROM " . DB_T_LOTTERY_INSCRITS . " "
- . "INNER JOIN " . DB_T_SALARIES . " ON " . DB_T_LOTTERY_INSCRITS . ".id_salarie = " . DB_T_SALARIES . ".id "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_lottery = :id_lottery AND " . DB_T_SALARIES . ".actif = 1" . $sqlSort);
- db::bind(':id_lottery', $_id);
- return db::resultset();
- }
- /**
- * Insère une nouvelle loterie dans la base de données.
- *
- * @return bool Succès ou échec de l'insertion.
- */
- public static function insert()
- {
- db::query("INSERT INTO " . DB_T_LOTTERY . " (md5, titre, description, id_user) VALUES (:md5, :titre, :description, :id_user)");
- db::bind(':md5', md5(time().rand(1000000000, 9999999999)));
- db::bind(':titre', core::getPost("titre"));
- db::bind(':description', core::getPost("description"));
- db::bind(':id_user', session::getId());
-
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- /**
- * Met à jour une loterie existante.
- *
- * @return bool Succès ou échec de la mise à jour.
- */
- public static function update()
- {
- db::query("UPDATE " . DB_T_LOTTERY . " SET "
- . "titre = :titre, "
- . "description = :description, "
- . "sortDate = :sortDate, "
- . "id_user = :id_user "
- . "WHERE id = :id");
-
- db::bind(':titre', core::getPost("titre"));
- db::bind(':description', core::getPost("description"));
- db::bind(':sortDate', core::getPost("sortDate"));
- db::bind(':id_user', session::getId());
- db::bind(':id', core::getPost("id"));
-
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- /**
- * Insère une inscription pour une loterie.
- *
- * @param array $_lottery Données de l'inscription.
- * @return bool Succès ou échec de l'insertion.
- */
- public static function insertInscription(array $_lottery)
- {
- db::query("INSERT INTO " . DB_T_LOTTERY_INSCRITS . "
- (
- id_lottery,
- id_salarie,
- id_presta,
- id_dossier,
- login,
- prenom,
- nom,
- valide,
- id_user
- )
- VALUES
- (
- :id_lottery,
- :id_salarie,
- :id_presta,
- :id_dossier,
- :login,
- :prenom,
- :nom,
- :valide,
- :id_user
- )");
- db::bind(':id_lottery', core::getPost("lottery"));
- db::bind(':id_salarie', $_lottery["id_salarie"]);
- db::bind(':id_presta', $_lottery["id_presta"]);
- db::bind(':id_dossier', $_lottery["id_dossier"]);
- db::bind(':login', $_lottery["login"]);
- db::bind(':prenom', $_lottery["prenom"]);
- db::bind(':nom', $_lottery["nom"]);
- db::bind(':valide', $_lottery["valide"]);
- db::bind(':id_user', session::getId());
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- /**
- * Met à jour une inscription pour une loterie.
- *
- * @param array $_lottery Données de l'inscription.
- * @return bool Succès ou échec de la mise à jour.
- */
- public static function updateInscription(array $_lottery)
- {
- db::query("UPDATE " . DB_T_LOTTERY_INSCRITS . " "
- . "SET " . DB_T_LOTTERY_INSCRITS . ".login = :login, "
- . DB_T_LOTTERY_INSCRITS . ".prenom = :prenom, "
- . DB_T_LOTTERY_INSCRITS . ".nom = :nom, "
- . DB_T_LOTTERY_INSCRITS . ".valide = :valide, "
- . DB_T_LOTTERY_INSCRITS . ".id_user = :id_user, "
- . DB_T_LOTTERY_INSCRITS . ".id_salarie = :id_salarie "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_dossier = :id_dossier AND " . DB_T_LOTTERY_INSCRITS . ".id_lottery = :id_lottery");
-
- db::bind(':login', $_lottery["login"]);
- db::bind(':prenom', $_lottery["prenom"]);
- db::bind(':nom', $_lottery["nom"]);
- db::bind(':valide', $_lottery["valide"]);
- db::bind(':id_user', session::getId());
- db::bind(':id_salarie', $_lottery["id_salarie"]);
- db::bind(':id_dossier', $_lottery["id_dossier"]);
- db::bind(':id_lottery', core::getPost("lottery"));
- db::bind(':id_user', session::getId());
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- return FALSE;
- }
- }
- /**
- * Définit un tirage au sort pour une loterie.
- *
- * @param int $_idDossier Identifiant du dossier.
- * @return bool Succès ou échec de l'opération.
- */
- public static function setSortLottery(int $_idDossier)
- {
- db::query("UPDATE " . DB_T_LOTTERY_INSCRITS . " "
- . "SET " . DB_T_LOTTERY_INSCRITS . ".selected = CURRENT_TIMESTAMP() "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_dossier = :id_dossier");
- db::bind(':id_dossier', $_idDossier);
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- alert::recError("ERREUR TECHNIQUE : Au niveau de l'écriture en base de données lors du tirage au sort");
- return FALSE;
- }
- }
- /**
- * Supprime une loterie.
- *
- * @param int $_id Identifiant de la loterie.
- * @return bool Succès ou échec de la suppression.
- */
- public static function deleteLottery(int $_id)
- {
- db::query("DELETE FROM " . DB_T_LOTTERY . " WHERE id = :id");
- db::bind(':id', $_id);
- return db::execute();
- }
- /**
- * Supprime les inscriptions d'une loterie.
- *
- * @param int $_id Identifiant de la loterie.
- * @return bool Succès ou échec de la suppression.
- */
- public static function deleteInscriptionLottery(int $_id)
- {
- db::query("DELETE FROM " . DB_T_LOTTERY_INSCRITS . " WHERE id_lottery = :id_lottery");
- db::bind(':id_lottery', $_id);
- return db::execute();
- }
- /**
- * Définit la date et le nombre de tirages pour une loterie.
- *
- * @param int $_id Identifiant de la loterie.
- * @param int $_nb Nombre de tirages.
- * @return bool Succès ou échec de l'opération.
- */
- public static function setDateLottery(int $_id, int $_nb)
- {
- db::query("UPDATE " . DB_T_LOTTERY . " "
- . "SET " . DB_T_LOTTERY . ".sortDate = CURRENT_TIMESTAMP(), "
- . DB_T_LOTTERY . ".sortNb = :sortNb, "
- . DB_T_LOTTERY . ".sortBy = :sortBy "
- . "WHERE " . DB_T_LOTTERY . ".id = :id");
- db::bind(':sortNb', $_nb);
- db::bind(':sortBy', session::getId());
- db::bind(':id', $_id);
- try {
- db::execute();
- return TRUE;
- } catch (Exception $ex) {
- alert::recError("ERREUR TECHNIQUE : Au niveau de l'écriture en base de données lors de la datation");
- return FALSE;
- }
- }
- /**
- * Récupère les données d'inscription pour une loterie.
- *
- * @param int $_id Identifiant de la loterie.
- * @return array Données d'inscription.
- */
- public static function getInscriptionData(int $_id)
- {
- db::query("SELECT "
- . "COUNT(" . DB_T_LOTTERY_INSCRITS . ".login) AS inscrits, "
- . "SUM(IF(" . DB_T_LOTTERY_INSCRITS . ".valide = 1, 1, 0)) AS eligible, "
- . "SUM(IF(" . DB_T_LOTTERY_INSCRITS . ".valide = 0, 1, 0)) AS ineligible "
- . "FROM " . DB_T_LOTTERY_INSCRITS . " "
- . "WHERE " . DB_T_LOTTERY_INSCRITS . ".id_lottery = :id_lottery");
- db::bind(':id_lottery', $_id);
- return db::single();
- }
- /**
- * Récupère les informations d'une loterie spécifique.
- *
- * @param int $_id Identifiant de la loterie.
- * @return array Informations de la loterie.
- */
- public static function getFiche(int $_id)
- {
- db::query("SELECT * FROM " . DB_T_LOTTERY . " WHERE id = :id");
- db::bind(':id', $_id);
- return db::single();
- }
- /**
- * Récupère l'identifiant de la dernière loterie.
- *
- * @return int Identifiant de la dernière loterie.
- */
- public static function lastLottery()
- {
- db::query("SELECT MAX(id) AS id FROM " . DB_T_LOTTERY);
- return db::single()["id"];
- }
- /**
- * Recherche une loterie par dossier.
- *
- * @param int $_id Identifiant du dossier.
- * @return int|null Identifiant de la loterie ou NULL si non trouvé.
- */
- public static function searchDossier(int $_id)
- {
- db::query("SELECT id_lottery FROM " . DB_T_LOTTERY_INSCRITS. " WHERE id_dossier = :id_dossier");
- db::bind(':id_dossier', $_id);
- $return = db::single();
- if($return == FALSE){
- return NULL;
- } else {
- return $return["id_lottery"];
- }
- }
- }
|