Ajout des nouveaux dossiers et fichiers, nettoyage des fichiers générés ensuite les nouveaux fichiers consiste à avoir la page de connexion et le dashboard

This commit is contained in:
2025-07-01 16:58:39 +02:00
parent fb719d95d7
commit 9f2669ec90
62 changed files with 19665 additions and 391 deletions

157
api/getLeaveCounters.php Normal file
View File

@@ -0,0 +1,157 @@
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type");
// Gère la requête OPTIONS (pré-vol CORS)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
http_response_code(200);
exit();
}
header("Content-Type: application/json");
$host = "192.168.0.4";
$dbname = "DemandeConge";
$username = "wpuser";
$password = "-2b/)ru5/Bi8P[7_";
// Crée une nouvelle connexion à la base de données
$conn = new mysqli($host, $username, $password, $dbname);
// Vérifie la connexion
if ($conn->connect_error) {
// En cas d'erreur de connexion, renvoie un JSON d'échec
echo json_encode(["success" => false, "message" => "Erreur de connexion à la base de données : " . $conn->connect_error]);
exit();
}
// Récupère l'ID utilisateur depuis les paramètres de requête GET
$userId = $_GET['user_id'] ?? null;
if ($userId === null) {
echo json_encode(["success" => false, "message" => "ID utilisateur manquant."]);
exit();
}
$currentYear = date('Y'); // Année actuelle pour CompteurConges
$currentDate = date('Y-m-d'); // Date actuelle pour les filtres de demandes
// Variables pour les soldes disponibles
$cpSolde = 0;
$rttSolde = 0;
$absSolde = 0; // Solde pour 'Congé maladie'
// Variables pour les demandes en cours/validées
$rttInProcess = 0;
$absenteism = 0;
$queryCPSolde = "SELECT cc.Solde FROM CompteurConges cc
JOIN TypeConge tc ON cc.TypeCongeId = tc.Id
WHERE cc.EmployeeId = ? AND tc.Nom = 'Congé payé' AND cc.Annee = ?";
$stmtCPSolde = $conn->prepare($queryCPSolde);
if ($stmtCPSolde === false) {
error_log("Erreur de préparation de la requête CP Solde : " . $conn->error);
} else {
$stmtCPSolde->bind_param("ii", $userId, $currentYear);
$stmtCPSolde->execute();
$resultCPSolde = $stmtCPSolde->get_result();
if ($rowCPSolde = $resultCPSolde->fetch_assoc()) {
$cpSolde = $rowCPSolde['Solde'];
}
$stmtCPSolde->close();
}
$queryRTTSolde = "SELECT cc.Solde FROM CompteurConges cc
JOIN TypeConge tc ON cc.TypeCongeId = tc.Id
WHERE cc.EmployeeId = ? AND tc.Nom = 'RTT' AND cc.Annee = ?";
$stmtRTTSolde = $conn->prepare($queryRTTSolde);
if ($stmtRTTSolde === false) {
error_log("Erreur de préparation de la requête RTT Solde : " . $conn->error);
} else {
$stmtRTTSolde->bind_param("ii", $userId, $currentYear);
$stmtRTTSolde->execute();
$resultRTTSolde = $stmtRTTSolde->get_result();
if ($rowRTTSolde = $resultRTTSolde->fetch_assoc()) {
$rttSolde = $rowRTTSolde['Solde'];
}
$stmtRTTSolde->close();
}
$queryABSSolde = "SELECT cc.Solde FROM CompteurConges cc
JOIN TypeConge tc ON cc.TypeCongeId = tc.Id
WHERE cc.EmployeeId = ? AND tc.Nom = 'Congé maladie' AND cc.Annee = ?";
$stmtABSSolde = $conn->prepare($queryABSSolde);
if ($stmtABSSolde === false) {
error_log("Erreur de préparation de la requête ABS Solde : " . $conn->error);
} else {
$stmtABSSolde->bind_param("ii", $userId, $currentYear);
$stmtABSSolde->execute();
$resultABSSolde = $stmtABSSolde->get_result();
if ($rowABSSolde = $resultABSSolde->fetch_assoc()) {
$absSolde = $rowABSSolde['Solde'];
}
$stmtABSSolde->close();
}
// --- Calcul des RTT en cours (somme des jours DATEDIFF à partir de DemandeConge) ---
$queryRTTInProcess = "SELECT SUM(DATEDIFF(dc.DateFin, dc.DateDebut) + 1) AS total_rtt_en_cours FROM DemandeConge dc
JOIN TypeConge tc ON dc.TypeCongeId = tc.Id
WHERE dc.EmployeeId = ?
AND tc.Nom = 'RTT'
AND dc.Statut IN ('En attente', 'Validée')
AND dc.DateFin >= ?";
$stmtRTTInProcess = $conn->prepare($queryRTTInProcess);
if ($stmtRTTInProcess === false) {
error_log("Erreur de préparation de la requête RTT en cours : " . $conn->error);
} else {
$stmtRTTInProcess->bind_param("is", $userId, $currentDate);
$stmtRTTInProcess->execute();
$resultRTTInProcess = $stmtRTTInProcess->get_result();
if ($rowRTTInProcess = $resultRTTInProcess->fetch_assoc()) {
$rttInProcess = $rowRTTInProcess['total_rtt_en_cours'] ?? 0;
}
$stmtRTTInProcess->close();
}
// --- Calcul des jours d'absence (ABS) (somme des jours DATEDIFF à partir de DemandeConge) ---
$queryABSInProcess = "SELECT SUM(DATEDIFF(dc.DateFin, dc.DateDebut) + 1) AS total_abs FROM DemandeConge dc
JOIN TypeConge tc ON dc.TypeCongeId = tc.Id
WHERE dc.EmployeeId = ?
AND tc.Nom = 'Congé maladie'
AND dc.Statut = 'Validée'";
$stmtABSInProcess = $conn->prepare($queryABSInProcess);
if ($stmtABSInProcess === false) {
error_log("Erreur de préparation de la requête ABS en cours : " . $conn->error);
} else {
$stmtABSInProcess->bind_param("i", $userId);
$stmtABSInProcess->execute();
$resultABSInProcess = $stmtABSInProcess->get_result();
if ($rowABSInProcess = $resultABSInProcess->fetch_assoc()) {
$absenteism = $rowABSInProcess['total_abs'] ?? 0;
}
$stmtABSInProcess->close();
}
// Renvoie les compteurs sous format JSON
echo json_encode([
"success" => true,
"message" => "Compteurs récupérés avec succès.",
"counters" => [
"availableCP" => (int)$cpSolde,
"availableRTT" => (int)$rttSolde,
"availableABS" => (int)$absSolde,
"rttInProcess" => (int)$rttInProcess,
"absenteism" => (int)$absenteism
]
]);
$conn->close();
?>