diff --git a/project/public/getAllTeamRequests.php b/project/public/getAllTeamRequests.php index 54dac05..001ff29 100644 --- a/project/public/getAllTeamRequests.php +++ b/project/public/getAllTeamRequests.php @@ -1,156 +1,106 @@ connect_error) { - error_log("Erreur connexion DB getPendingRequests: " . $conn->connect_error); - echo json_encode(["success" => false, "message" => "Erreur de connexion à la base de données"]); + error_log("Erreur connexion DB: " . $conn->connect_error); + echo json_encode(["success" => false, "message" => "Erreur de connexion DB"]); exit(); } -$managerId = $_GET['manager_id'] ?? null; -if ($managerId === null) { - echo json_encode(["success" => false, "message" => "ID manager manquant"]); +// Récupération ID manager +$managerId = $_GET['SuperieurId'] ?? null; +if (!$managerId) { + echo json_encode(["success" => false, "message" => "Paramètre SuperieurId manquant"]); exit(); } -error_log("getPendingRequests - Manager ID: $managerId"); +$sql = " + SELECT + dc.Id, + dc.DateDebut, + dc.DateFin, + dc.Statut, + dc.DateDemande, + dc.Commentaire, + dc.DocumentJoint, + dc.EmployeeId, + CONCAT(u.Prenom, ' ', u.Nom) as employee_name, + u.Email as employee_email, + tc.Nom as type + FROM DemandeConge dc + JOIN Users u ON dc.EmployeeId = u.ID + JOIN TypeConge tc ON dc.TypeCongeId = tc.Id + JOIN HierarchieValidation hv ON hv.EmployeId = u.ID + WHERE hv.SuperieurId = ? + ORDER BY dc.DateDemande DESC +"; -// Fonction pour calculer les jours ouvrés -function getWorkingDays($startDate, $endDate) { - $workingDays = 0; - $current = new DateTime($startDate); - $end = new DateTime($endDate); +$stmt = $conn->prepare($sql); +$stmt->bind_param("i", $managerId); +$stmt->execute(); - while ($current <= $end) { - $dayOfWeek = (int)$current->format('N'); - if ($dayOfWeek < 6) { - $workingDays++; - } - $current->modify('+1 day'); +// ✅ Manquant dans ton code +$result = $stmt->get_result(); + +$requests = []; +while ($row = $result->fetch_assoc()) { + $startDate = new DateTime($row['DateDebut']); + $endDate = new DateTime($row['DateFin']); + $submittedDate = new DateTime($row['DateDemande']); + $days = 0; + + $tmp = clone $startDate; + while ($tmp <= $endDate) { + if ((int)$tmp->format('N') < 6) $days++; + $tmp->modify('+1 day'); } - return $workingDays; + + $requests[] = [ + "id" => (int)$row['Id'], + "employee_id" => (int)$row['EmployeeId'], + "employee_name" => $row['employee_name'], + "employee_email" => $row['employee_email'], + "type" => $row['type'], + "start_date" => $row['DateDebut'], + "end_date" => $row['DateFin'], + "date_display" => $row['DateDebut'] === $row['DateFin'] + ? $startDate->format('d/m/Y') + : $startDate->format('d/m/Y') . ' - ' . $endDate->format('d/m/Y'), + "days" => $days, + "status" => $row['Statut'], + "reason" => $row['Commentaire'] ?: '', + "file" => $row['DocumentJoint'] ?: null, + "submitted_at" => $row['DateDemande'], + "submitted_display" => $submittedDate->format('d/m/Y') + ]; } -try { - // D'abord, récupérer le service du manager - $queryManagerService = "SELECT ServiceId FROM Users WHERE ID = ?"; - $stmtManager = $conn->prepare($queryManagerService); - $stmtManager->bind_param("i", $managerId); - $stmtManager->execute(); - $resultManager = $stmtManager->get_result(); - - if ($managerRow = $resultManager->fetch_assoc()) { - $serviceId = $managerRow['ServiceId']; - error_log("getPendingRequests - Service ID du manager: $serviceId"); - - // Récupérer les demandes en attente de l'équipe - $queryRequests = " - SELECT - dc.Id, - dc.DateDebut, - dc.DateFin, - dc.Statut, - dc.DateDemande, - dc.Commentaire, - dc.EmployeeId, - CONCAT(u.Prenom, ' ', u.Nom) as employee_name, - u.Email as employee_email, - tc.Nom as type - FROM DemandeConge dc - JOIN Users u ON dc.EmployeeId = u.ID - JOIN TypeConge tc ON dc.TypeCongeId = tc.Id - WHERE u.ServiceId = ? - AND dc.Statut = 'En attente' - AND u.ID != ? - ORDER BY dc.DateDemande ASC - "; - - $stmtRequests = $conn->prepare($queryRequests); - $stmtRequests->bind_param("ii", $serviceId, $managerId); - $stmtRequests->execute(); - $resultRequests = $stmtRequests->get_result(); - - $requests = []; - while ($row = $resultRequests->fetch_assoc()) { - $workingDays = getWorkingDays($row['DateDebut'], $row['DateFin']); - - $startDate = new DateTime($row['DateDebut']); - $endDate = new DateTime($row['DateFin']); - $submittedDate = new DateTime($row['DateDemande']); - - if ($row['DateDebut'] === $row['DateFin']) { - $dateDisplay = $startDate->format('d/m/Y'); - } else { - $dateDisplay = $startDate->format('d/m/Y') . ' - ' . $endDate->format('d/m/Y'); - } - - $requests[] = [ - 'id' => (int)$row['Id'], - 'employee_id' => (int)$row['EmployeeId'], - 'employee_name' => $row['employee_name'], - 'employee_email' => $row['employee_email'], - 'type' => $row['type'], - 'start_date' => $row['DateDebut'], - 'end_date' => $row['DateFin'], - 'date_display' => $dateDisplay, - 'days' => $workingDays, - 'status' => $row['Statut'], - 'reason' => $row['Commentaire'] ?: '', - 'submitted_at' => $row['DateDemande'], - 'submitted_display' => $submittedDate->format('d/m/Y') - ]; - } - - error_log("getPendingRequests - Demandes en attente trouvées: " . count($requests)); - - echo json_encode([ - "success" => true, - "message" => "Demandes en attente récupérées avec succès", - "requests" => $requests, - "service_id" => $serviceId - ]); - - $stmtRequests->close(); - } else { - error_log("getPendingRequests - Manager non trouvé: $managerId"); - echo json_encode([ - "success" => false, - "message" => "Manager non trouvé" - ]); - } - - $stmtManager->close(); - -} catch (Exception $e) { - error_log("Erreur getPendingRequests: " . $e->getMessage()); - echo json_encode([ - "success" => false, - "message" => "Erreur lors de la récupération des demandes: " . $e->getMessage() - ]); -} +echo json_encode([ + "success" => true, + "requests" => $requests +]); +$stmt->close(); $conn->close(); -?> \ No newline at end of file +?> diff --git a/project/src/pages/Manager.jsx b/project/src/pages/Manager.jsx index 7742de2..e74b901 100644 --- a/project/src/pages/Manager.jsx +++ b/project/src/pages/Manager.jsx @@ -76,7 +76,7 @@ const Manager = () => { const fetchAllTeamRequests = async () => { try { - const response = await fetch(`http://localhost/GTA/project/public/getAllTeamRequests.php?manager_id=${user.id}`); + const response = await fetch(`http://localhost/GTA/project/public/getAllTeamRequests.php?SuperieurId=${user.id}`); const text = await response.text(); console.log('Réponse toutes demandes équipe:', text); @@ -85,7 +85,9 @@ const Manager = () => { setAllRequests(data.requests || []); } } catch (error) { + console.error('Erreur récupération toutes demandes:', error); + console.log('Réponse brute:', text); setAllRequests([]); } }; @@ -384,10 +386,9 @@ const Manager = () => { ) : (
{request.employee_name}
{request.type} @@ -397,13 +398,33 @@ const Manager = () => {{request.date_display}
-Soumis le {request.submitted_display}
+Soumis le {request.submitted_display}
+ + {request.reason && ( +Motif : {request.reason}
+ )} + + {request.file && ( +Document joint
+ +{request.days}j
+{request.days}j
-{selectedRequest.employee_name}
-{selectedRequest.type} - {selectedRequest.date_display}
++ {selectedRequest.type} - {selectedRequest.date_display} +
{selectedRequest.days} jour(s)
+ {selectedRequest.reason && ( -Motif: {selectedRequest.reason}
++ Motif: {selectedRequest.reason} +
)} + + {selectedRequest.file && ( +Document joint
+ +