|
|
@@ -1,7 +1,16 @@
|
|
|
<?php
|
|
|
|
|
|
+/**
|
|
|
+ * Classe de gestion des salariés.
|
|
|
+ *
|
|
|
+ * Cette classe fournit des méthodes pour gérer les données des salariés,
|
|
|
+ * y compris les opérations sur les fichiers Excel et les interactions avec la base de données.
|
|
|
+ */
|
|
|
class salaries
|
|
|
{
|
|
|
+ /**
|
|
|
+ * Nettoie la table temporaire des salariés.
|
|
|
+ */
|
|
|
public static function cleanTmp()
|
|
|
{
|
|
|
// Nettoyage de la table temporaire des salairés
|
|
|
@@ -9,6 +18,12 @@ class salaries
|
|
|
db::execute();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère un salarié par son identifiant local.
|
|
|
+ *
|
|
|
+ * @param int $_idLocal Identifiant local du salarié.
|
|
|
+ * @return array|null Les données du salarié ou NULL si non trouvé.
|
|
|
+ */
|
|
|
public static function getSalarieByidLocal(int $_idLocal)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -17,6 +32,12 @@ class salaries
|
|
|
return db::single();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère un salarié par son identifiant de connexion.
|
|
|
+ *
|
|
|
+ * @param string $_loginId Identifiant de connexion du salarié.
|
|
|
+ * @return array|null Les données du salarié ou NULL si non trouvé.
|
|
|
+ */
|
|
|
public static function getSalarieByLoginId(string $_loginId)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -25,6 +46,12 @@ class salaries
|
|
|
return db::single();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère un salarié par son identifiant unique.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant unique du salarié.
|
|
|
+ * @return array|null Les données du salarié ou NULL si non trouvé.
|
|
|
+ */
|
|
|
public static function getSalarieById(int $_id)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -33,6 +60,11 @@ class salaries
|
|
|
return db::single();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère la liste de tous les salariés.
|
|
|
+ *
|
|
|
+ * @return array La liste des salariés.
|
|
|
+ */
|
|
|
public static function getSalaries()
|
|
|
{
|
|
|
db::query("SELECT "
|
|
|
@@ -56,18 +88,34 @@ class salaries
|
|
|
return db::resultset();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère l'identifiant du dernier fichier Excel.
|
|
|
+ *
|
|
|
+ * @return int Identifiant du dernier fichier Excel.
|
|
|
+ */
|
|
|
public static function lastExcel()
|
|
|
{
|
|
|
db::query("SELECT MAX(id) AS id FROM " . DB_T_EXCEL);
|
|
|
return db::single()["id"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère l'identifiant du dernier fichier Excel destiné au SFTP.
|
|
|
+ *
|
|
|
+ * @return int Identifiant du dernier fichier Excel pour le SFTP.
|
|
|
+ */
|
|
|
public static function lastExcelForSFTP()
|
|
|
{
|
|
|
db::query("SELECT MAX(id) AS id FROM " . DB_T_EXCEL . " WHERE forSFTP IS NOT NULL");
|
|
|
return db::single()["id"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère le hash MD5 d'un fichier Excel par son identifiant.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return string Le hash MD5 du fichier Excel.
|
|
|
+ */
|
|
|
public static function getExcelMd5(int $_id)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -76,6 +124,12 @@ class salaries
|
|
|
return db::single()["md5"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Insère un fichier Excel dans la base de données.
|
|
|
+ *
|
|
|
+ * @param array $_data Données du fichier Excel à insérer.
|
|
|
+ * @return bool TRUE si l'insertion a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function insertExcel(array $_data)
|
|
|
{
|
|
|
db::query("INSERT INTO " . DB_T_EXCEL . " (nbSalaries, md5, json, dateData, id_user) VALUES (:nbSalaries, :md5, :json, :dateData, :id_user)");
|
|
|
@@ -93,6 +147,12 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère les données JSON d'un fichier Excel pour le SFTP.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return array Les données JSON du fichier Excel.
|
|
|
+ */
|
|
|
public static function getExcelJsonForSFTP(int $_id)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -101,6 +161,12 @@ class salaries
|
|
|
return db::single();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Supprime les données JSON d'un fichier Excel pour le SFTP.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return bool TRUE si la suppression a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function deleteExcelJsonForSFTP(int $_id)
|
|
|
{
|
|
|
db::query("UPDATE " . DB_T_EXCEL . " SET "
|
|
|
@@ -115,6 +181,12 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère les données de transfert JSON d'un fichier Excel pour le SFTP.
|
|
|
+ *
|
|
|
+ * @param string $_md5 Hash MD5 du fichier Excel.
|
|
|
+ * @return string Les données de transfert JSON.
|
|
|
+ */
|
|
|
public static function getExcelJsonTransferForSFTP(string $_md5)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -123,6 +195,12 @@ class salaries
|
|
|
return db::single()["transfertForSFTP"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère les données JSON d'un fichier Excel par son identifiant.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return string Les données JSON décodées.
|
|
|
+ */
|
|
|
public static function getExcelJson(int $_id)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -131,6 +209,12 @@ class salaries
|
|
|
return base64_decode(db::single()["json"]);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère le nom d'un fichier Excel par son identifiant.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return string Le nom du fichier Excel.
|
|
|
+ */
|
|
|
public static function getExcelName(int $_id)
|
|
|
{
|
|
|
// Récupération des données de l'excel au format Json
|
|
|
@@ -144,6 +228,13 @@ class salaries
|
|
|
return db::single()["name"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour l'état "en cours" d'un fichier Excel.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @param int $_action Action à effectuer (1 pour activer, 0 pour désactiver).
|
|
|
+ * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function excelUpdateInProgress(int $_id, int $_action = 1)
|
|
|
{
|
|
|
db::query("UPDATE
|
|
|
@@ -160,6 +251,12 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Supprime un fichier Excel par son identifiant.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return bool TRUE si la suppression a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function delete_excel(int $_id)
|
|
|
{
|
|
|
db::query("DELETE FROM " . DB_T_EXCEL . " WHERE id = :id");
|
|
|
@@ -172,6 +269,11 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère les informations du fichier Excel actuellement en cours de traitement.
|
|
|
+ *
|
|
|
+ * @return array|null Les informations du fichier Excel en cours ou NULL si aucun.
|
|
|
+ */
|
|
|
public static function excelGetInProgress()
|
|
|
{
|
|
|
db::query("SELECT
|
|
|
@@ -184,11 +286,22 @@ class salaries
|
|
|
return db::single();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Récupère les données JSON d'un fichier Excel par son identifiant sous forme de tableau.
|
|
|
+ *
|
|
|
+ * @param int $_id Identifiant du fichier Excel.
|
|
|
+ * @return array Les données JSON décodées sous forme de tableau.
|
|
|
+ */
|
|
|
public static function getExcelArray(int $_id)
|
|
|
{
|
|
|
return json_decode(self::getExcelJson($_id));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Convertit une ligne de données Excel en un format compatible avec la base de données MySQL.
|
|
|
+ * @param array $_value Ligne de données Excel.
|
|
|
+ * @return array Données formatées pour MySQL.
|
|
|
+ */
|
|
|
public static function excelToMysql(array $_value)
|
|
|
{
|
|
|
if ($_value[4] == "Actif") {
|
|
|
@@ -210,6 +323,11 @@ class salaries
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Insère les données des salariés temporaires dans la table temporaire.
|
|
|
+ *
|
|
|
+ * @param string $_excel Identifiant du fichier Excel associé.
|
|
|
+ */
|
|
|
public static function createTmp(string $_excel)
|
|
|
{
|
|
|
db::query("SELECT idLocal, loginId, nom, prenom, sexe, contrat, jourEntree, lieu, actif FROM " . DB_T_SALARIES);
|
|
|
@@ -234,6 +352,11 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour les salariés inactifs dans la table temporaire.
|
|
|
+ *
|
|
|
+ * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function updateInactiveTempSalarie()
|
|
|
{
|
|
|
db::query("UPDATE " . DB_T_TEMP_SALARIES . " SET "
|
|
|
@@ -249,6 +372,12 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour les données JSON d'un fichier Excel.
|
|
|
+ *
|
|
|
+ * @param array $_json Données JSON à mettre à jour.
|
|
|
+ * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function updateJsonExcel(array $_json)
|
|
|
{
|
|
|
db::query("UPDATE " . DB_T_EXCEL . " SET "
|
|
|
@@ -265,6 +394,13 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour les données temporaires des salariés.
|
|
|
+ *
|
|
|
+ * @param array $_new_salaries Les nouvelles données des salariés.
|
|
|
+ * @param string $_excel Identifiant du fichier Excel associé.
|
|
|
+ * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
public static function update_temp_salaries(array $_new_salaries, string $_excel)
|
|
|
{
|
|
|
$cp["INSERT"]["SUCCESS"] = 0;
|
|
|
@@ -408,6 +544,13 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Enregistre les changements de contrat pour le SFTP.
|
|
|
+ *
|
|
|
+ * @param int $_idExcel Identifiant du fichier Excel.
|
|
|
+ * @param array|null $_data Données des changements de contrat.
|
|
|
+ * @return bool TRUE si l'enregistrement a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
private static function recContratForSFTP(int $_idExcel, ?array $_data)
|
|
|
{
|
|
|
db::query("UPDATE " . DB_T_EXCEL . " SET "
|
|
|
@@ -423,6 +566,11 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour les données des salariés à partir d'un fichier Excel.
|
|
|
+ *
|
|
|
+ * @param int $_excel Identifiant du fichier Excel.
|
|
|
+ */
|
|
|
public static function updateSalaries(int $_excel)
|
|
|
{
|
|
|
$cp["INSERT"]["SUCCESS"] = 0;
|
|
|
@@ -606,6 +754,13 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Enregistre les données pour le SFTP.
|
|
|
+ *
|
|
|
+ * @param array $_array Données à enregistrer.
|
|
|
+ * @param int $_idExcel Identifiant du fichier Excel.
|
|
|
+ * @return bool TRUE si l'enregistrement a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
private static function recForSFTP(array $_array, int $_idExcel)
|
|
|
{
|
|
|
$json = json_encode($_array);
|
|
|
@@ -625,6 +780,21 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Crée un rapport des modifications des salariés à partir de la table temporaire.
|
|
|
+ *
|
|
|
+ * Cette méthode interroge la table temporaire des salariés pour récupérer les enregistrements
|
|
|
+ * ayant un champ 'log' non nul, indiquant une modification (INSERT, DISABLE ou UPDATE).
|
|
|
+ * Elle construit un tableau contenant les détails de chaque modification, puis encode ce tableau en JSON.
|
|
|
+ *
|
|
|
+ * - Pour une action "INSERT", toutes les informations du salarié sont ajoutées.
|
|
|
+ * - Pour une action "DISABLE", toutes les informations du salarié sont ajoutées.
|
|
|
+ * - Pour une action "UPDATE", seules les informations modifiées sont ajoutées selon le contenu du champ 'log'.
|
|
|
+ *
|
|
|
+ * @return array|null Un tableau associatif contenant :
|
|
|
+ * - 'json' : la liste des modifications encodée en JSON ou NULL si aucune modification.
|
|
|
+ * - 'excel' : le nom du fichier Excel associé ou NULL si aucune modification.
|
|
|
+ */
|
|
|
public static function createRapport()
|
|
|
{
|
|
|
$log = NULL;
|
|
|
@@ -692,12 +862,32 @@ class salaries
|
|
|
return $log;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Compte le nombre de salariés temporaires dans la base de données.
|
|
|
+ *
|
|
|
+ * Exécute une requête SQL pour compter tous les enregistrements dans la table temporaire des salariés
|
|
|
+ * et retourne le nombre sous forme d'entier.
|
|
|
+ *
|
|
|
+ * @return int Nombre de salariés temporaires.
|
|
|
+ */
|
|
|
public static function countTmpSalaries()
|
|
|
{
|
|
|
db::query("SELECT COUNT(*) AS nb FROM " . DB_T_TEMP_SALARIES);
|
|
|
return db::single()["nb"];
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Génère un fichier CSV pour l'export SFTP contenant les identifiants de connexion et les dates de sortie des salariés.
|
|
|
+ *
|
|
|
+ * Cette méthode effectue les étapes suivantes :
|
|
|
+ * 1. Récupère le dernier fichier Excel destiné à l'export SFTP.
|
|
|
+ * 2. Extrait et décode les données JSON du fichier Excel.
|
|
|
+ * 3. Crée un fichier CSV nommé avec la date du jour et écrit l'en-tête.
|
|
|
+ * 4. Parcourt chaque enregistrement salarié, traite et écrit ses données dans le CSV.
|
|
|
+ * 5. Enregistre la date d'export pour le suivi SFTP.
|
|
|
+ *
|
|
|
+ * @throws Exception Si les données JSON pour le SFTP sont invalides.
|
|
|
+ */
|
|
|
public static function dataForSFTP()
|
|
|
{
|
|
|
$lastExcel = self::lastExcelForSFTP();
|
|
|
@@ -719,6 +909,18 @@ class salaries
|
|
|
self::recDateForSFTP($lastExcel);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Traite un enregistrement salarié et écrit les champs sélectionnés dans un fichier CSV.
|
|
|
+ *
|
|
|
+ * Cette méthode vérifie si le tableau du salarié contient un 'loginId' non vide
|
|
|
+ * et un champ 'jourSortie'. Si c'est le cas, elle écrit ces champs dans le fichier CSV
|
|
|
+ * spécifié, en utilisant le point-virgule comme séparateur.
|
|
|
+ *
|
|
|
+ * @param array $salarie Tableau des données du salarié contenant au moins 'loginId' et 'jourSortie'.
|
|
|
+ * @param resource $tmpSFTP Ressource du fichier où écrire la ligne CSV.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
private static function processSalarie($salarie, $tmpSFTP)
|
|
|
{
|
|
|
if (isset($salarie["loginId"]) && $salarie["loginId"] != "" && isset($salarie["jourSortie"])) {
|
|
|
@@ -730,6 +932,15 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Met à jour le champ 'createForSFTP' avec la date et l'heure actuelles pour un enregistrement Excel donné.
|
|
|
+ *
|
|
|
+ * Cette méthode définit la colonne 'createForSFTP' à la date et l'heure courantes dans la base de données
|
|
|
+ * pour l'enregistrement identifié par l'ID Excel fourni. Retourne TRUE en cas de succès, FALSE sinon.
|
|
|
+ *
|
|
|
+ * @param int $_idExcel L'identifiant de l'enregistrement Excel à mettre à jour.
|
|
|
+ * @return bool TRUE si la mise à jour a réussi, FALSE sinon.
|
|
|
+ */
|
|
|
private static function recDateForSFTP(int $_idExcel)
|
|
|
{
|
|
|
db::query("UPDATE " . DB_T_EXCEL . " SET "
|
|
|
@@ -744,6 +955,11 @@ class salaries
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Vérifie si le dernier fichier Excel pour le SFTP a été soumis.
|
|
|
+ *
|
|
|
+ * @return bool TRUE si le dernier fichier Excel pour le SFTP est prêt à être soumis, FALSE sinon.
|
|
|
+ */
|
|
|
public static function ifSubmitLastForSFTP()
|
|
|
{
|
|
|
$lastExcel = self::lastExcel();
|
|
|
@@ -751,6 +967,12 @@ class salaries
|
|
|
return (@$forSFTP["md5forSFTP"] != NULL and @$forSFTP["createForSFTP"] == NULL) ? TRUE : FALSE;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Vérifie un salarié par son matricule.
|
|
|
+ *
|
|
|
+ * @param string $_string Matricule du salarié à vérifier.
|
|
|
+ * @return array Résultat de la vérification contenant des messages d'erreur ou de succès.
|
|
|
+ */
|
|
|
public static function checkSalarieByMatricule(string $_string)
|
|
|
{
|
|
|
db::query("SELECT "
|