$dateDataProWeb) { $_return["contrat"] = $_return["actif"] = $_return["RHBase"] = $_return["loginIdRH"] = $_return["jourEntreeRH"] = "N/A"; array_push($_return["errorJson"], "absent"); } else { $_return["loginIdRH"] = (empty($verifRH["loginId"]) or $verifRH["loginId"] == $_return["loginId"]) ? NULL : $verifRH["loginId"]; $_return["jourEntreeRH"] = (empty($verifRH["jourEntree"]) or self::convertDateMoisAnJour($verifRH["jourEntree"]) == $_return["jourEntree"]) ? NULL : self::convertDateMoisAnJour($verifRH["jourEntree"]); $_return["jourSortie"] = (isset($verifRH["jourSortie"])) ? $verifRH["jourSortie"] : $_return["jourSortie"]; $_return["RHBase"] = (isset($verifRH["jourSortie"]) or empty($verifRH["id"])) ? 0 : 1; $_return["actif"] = ($_return["meyclubSubv"] == 1 or $_return["meyclubAccess"] == 1 or $_return["Webaccess"] == 1) ? 1 : 0; $_return["contrat"] = (isset($verifRH["contrat"])) ? $verifRH["contrat"] : 0; // ---- if (!self::checkValuesNom($_return["nom"])) { $_return["error"] = 1; array_push($_return["errorJson"], "nom"); } if (!self::checkValuesPrenom($_return["prenom"])) { $_return["error"] = 1; array_push($_return["errorJson"], "prenom"); } if (!self::checkValuesloginId($_return["loginId"], $_return["loginIdRH"])) { $_return["error"] = 1; array_push($_return["errorJson"], "loginId"); } if (!self::checkValuesNaissance($_return["dateNaissance"])) { $_return["error"] = 1; array_push($_return["errorJson"], "dateNaissance"); } if (!self::checkValuesJourEntree($_return["jourEntree"])) { $_return["error"] = 1; array_push($_return["errorJson"], "jourEntree"); } if ($_return["jourEntreeRH"] != NULL and $_return["jourEntree"] != "N/A") { $_return["error"] = 1; array_push($_return["errorJson"], "jourEntree"); } if ($_return["jourSortie"] != "N/A" and $_return["RHBase"] == 1) { $_return["error"] = 1; array_push($_return["errorJson"], "jourSortie"); } if ($_return["jourEntree"] != "N/A") { // On ignore les nouveaux salariés qui se sont inscrits post import du fichier RH if ($dateDataRH > $dateDataProWeb) { if (!self::checkValuesRHBase($_return["RHBase"], $_return["actif"])) { $_return["error"] = 1; array_push($_return["errorJson"], "RHBase"); } } } } $_return["errorJson"] = (!empty($_return["errorJson"][0])) ? json_encode($_return["errorJson"]) : NULL; return $_return; } /** * Vérifie les données d'un salarié par son identifiant de connexion. * * @param string $_loginId Identifiant de connexion du salarié. * @param string|null $_nom Nom du salarié (optionnel). * @param string|null $_prenom Prénom du salarié (optionnel). * @return array Données du salarié vérifié. */ public static function checkSalarieByLoginId(string $_loginId, ?string $_nom = NULL, ?string $_prenom = NULL) { // Récupération des données de l'excel au format Json if ($_nom == NULL) { db::query("SELECT id, loginId, jourEntree, jourSortie, contrat FROM " . DB_T_SALARIES . " WHERE loginId = :loginId"); } else { db::query("SELECT id, loginId, jourEntree, jourSortie, contrat FROM " . DB_T_SALARIES . " WHERE loginId = :loginId OR (nom = :nom AND prenom = :prenom)"); db::bind(':nom', $_nom); db::bind(':prenom', $_prenom); } db::bind(':loginId', $_loginId); return db::single(); } /** * Télécharge un fichier Excel Proweb par son identifiant. * * @param int $_id Identifiant du fichier Excel. * @param string $_file Nom du fichier temporaire. * @return string Chemin du fichier téléchargé. */ public static function downloadExcel(int $_id, string $_file) { $data = base64_decode(self::getExcelById($_id)["file"]); $fileTemp = fopen(DIR_TEMP . $_file, "w"); file_put_contents(DIR_TEMP . $_file, $data); fclose($fileTemp); return DIR_TEMP . $_file; } /** * Convertit une date en format approprié pour l'archivage. * * @param string $_string La date à convertir. * @return string La date convertie ou "N/A" si invalide. */ private static function archiveExcelValuesDate(string $_string) { if(!isset($_string) or $_string == "00-00-0000"){ return "N/A"; } else { return str_replace(" 00:00:00", "", $_string); } } /** * Convertit le sexe en format approprié pour l'archivage. * * @param string $_string Le sexe à convertir. * @return string Le sexe converti ou "N/A" si invalide. */ private static function archiveExcelValuesSexe(string $_string) { return (empty($_string)) ? "N/A" : $_string; } /** * Nettoie et convertit un identifiant de connexion pour l'archivage. * * @param string $_string L'identifiant à convertir. * @return string L'identifiant nettoyé. */ private static function archiveExcelValuesloginId(string $_string) { return core::cleanAccent($_string); } /** * Nettoie et convertit un nom pour l'archivage. * * @param string $_string Le nom à convertir. * @return string Le nom nettoyé. */ private static function archiveExcelValuesNom(string $_string) { return core::cleanAccent($_string); } /** * Nettoie et convertit un prénom pour l'archivage. * * @param string $_string Le prénom à convertir. * @return string Le prénom nettoyé. */ private static function archiveExcelValuesPrenom(string $_string) { return core::cleanAccent($_string); } /** * Convertit une valeur d'activité pour l'archivage. * * @param string $_string La valeur à convertir. * @return int|string La valeur convertie ou "N/A" si invalide. */ private static function archiveExcelValuesActif(string $_string) { if ($_string == "O") { return 1; } elseif ($_string == "N") { return 0; } else { return "N/A"; } } /** * Nettoie et convertit un lieu pour l'archivage. * * @param string $_string Le lieu à convertir. * @return string Le lieu nettoyé ou "N/A" si invalide. */ private static function archiveExcelValuesLieu(string $_string) { return (empty($_string)) ? "N/A" : $_string; } /** * Vérifie si une valeur d'activité est valide. * * @param string $_string La valeur à vérifier. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesActif(string $_string) { return ($_string == "N/A") ? FALSE : TRUE; } /** * Vérifie si un identifiant de connexion est valide. * * @param string $_idLogin Identifiant de connexion. * @param string|null $_idLoginRH Identifiant RH (optionnel). * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesloginId(string $_idLogin, ?string $_idLoginRH = NULL) { if ($_idLoginRH != NULL) { if (empty(self::checkSalarieByLoginId($_idLogin)["id"])) { return FALSE; } elseif (core::checkStringOnly($_idLogin)) { return FALSE; } elseif (strlen($_idLogin) > 10) { return FALSE; } elseif (empty($_idLogin)) { return FALSE; } else { return TRUE; } } else { return TRUE; } } /** * Vérifie si une valeur RHBase est valide. * * @param int $_RH Valeur RHBase. * @param int $_actif Valeur actif. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesRHBase(int $_RH, int $_actif) { return ($_RH == 0 and $_actif == 1) ? FALSE : TRUE; } /** * Vérifie si une date d'entrée est valide. * * @param string $_string La date d'entrée. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesJourEntree(string $_string) { return ($_string == "N/A") ? FALSE : TRUE; } /** * Vérifie si une date de sortie est valide. * * @param string $_string La date de sortie. * @param int $_actif Valeur actif. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesJourSortie(string $_string, int $_actif) { return ($_string != "N/A" and $_actif == 1) ? FALSE : TRUE; } /** * Vérifie si un nom est valide. * * @param string $_string Le nom à vérifier. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesNom(string $_string) { return (empty($_string)) ? FALSE : TRUE; } /** * Vérifie si un prénom est valide. * * @param string $_string Le prénom à vérifier. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesPrenom(string $_string) { return (empty($_string)) ? FALSE : TRUE; } /** * Vérifie si un sexe est valide. * * @param string $_string Le sexe à vérifier. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesSexe(string $_string) { return ($_string == NULL or ($_string != "M." and $_string != "Mme")) ? FALSE : TRUE; } /** * Vérifie si un lieu est valide. * * @param string $_string Le lieu à vérifier. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesLieu(string $_string) { return (empty($_string)) ? FALSE : TRUE; } /** * Vérifie si une date de naissance est valide. * * @param string $_string La date de naissance. * @return bool TRUE si valide, FALSE sinon. */ private static function checkValuesNaissance(string $_string) { if(empty($_string) OR $_string == "N/A") { return FALSE; } elseif(self::calculAge($_string) > core::getConfig("AGE_MAX_ERROR")) { return FALSE; } else { return TRUE; } } /** * Calcule l'âge à partir d'une date de naissance. * * @param string $_date La date de naissance. * @return int L'âge calculé. */ private static function calculAge(string $_date) { $pieces = explode(" ", $_date); $birthDate = explode("-", $pieces[0]); return (date("md", date("U", mktime(0, 0, 0, $birthDate[2], $birthDate[1], $birthDate[0]))) > date("md") ? ((date("Y") - $birthDate[0]) - 1) : (date("Y") - $birthDate[0])); } }