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 = () => { ) : (
- {allRequests.map((request) => ( -
-
-
+ {allRequests.map((request) => ( +
+

{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

+ + + Voir le fichier + +
+ )} + +
+

{request.days}j

+
-
-

{request.days}j

-
-
- ))} + ))} +
)}
@@ -413,25 +434,51 @@ const Manager = () => {
{/* Modal de validation */} + {showValidationModal && selectedRequest && (
+ {/* Header */}

{validationAction === 'approve' ? 'Approuver' : 'Refuser'} la demande

+ {/* Corps du contenu */}

{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

+ + + Voir le fichier + +
+ )} + +
+ {/* Champ commentaire */}
+ {/* Boutons */}
); -}; +}; -export default Manager; \ No newline at end of file +export default Manager; diff --git a/project/uploads/doc_6895efd7750ba.jpg b/project/uploads/doc_6895efd7750ba.jpg new file mode 100644 index 0000000..802706b Binary files /dev/null and b/project/uploads/doc_6895efd7750ba.jpg differ diff --git a/project/uploads/doc_6895f5df5fa2c.jpg b/project/uploads/doc_6895f5df5fa2c.jpg new file mode 100644 index 0000000..70ff4fd Binary files /dev/null and b/project/uploads/doc_6895f5df5fa2c.jpg differ