résumé de la demande

This commit is contained in:
2025-08-08 14:37:37 +02:00
parent b066dcd136
commit 011620fb39
5 changed files with 227 additions and 493 deletions

View File

@@ -4,7 +4,6 @@ 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();
@@ -12,7 +11,6 @@ if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header("Content-Type: application/json");
// Log des erreurs pour debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
@@ -22,17 +20,14 @@ $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) {
error_log("Erreur connexion DB getRequests: " . $conn->connect_error);
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;
error_log("=== DEBUT getRequests.php ===");
@@ -45,9 +40,6 @@ if ($userId === null) {
exit();
}
error_log("getRequests - Récupération pour user_id: $userId (type: " . gettype($userId) . ")");
// Vérifier si l'utilisateur existe
$checkUserQuery = "SELECT ID, Nom, Prenom FROM Users WHERE ID = ?";
$checkUserStmt = $conn->prepare($checkUserQuery);
if ($checkUserStmt) {
@@ -62,15 +54,13 @@ if ($checkUserStmt) {
$checkUserStmt->close();
}
// Fonction pour calculer les jours ouvrés (hors week-ends)
function getWorkingDays($startDate, $endDate) {
$workingDays = 0;
$current = new DateTime($startDate);
$end = new DateTime($endDate);
while ($current <= $end) {
$dayOfWeek = (int)$current->format('N'); // 1 (Lundi) à 7 (Dimanche)
if ($dayOfWeek < 6) { // Si ce n'est ni Samedi (6) ni Dimanche (7)
$dayOfWeek = (int)$current->format('N');
if ($dayOfWeek < 6) {
$workingDays++;
}
$current->modify('+1 day');
@@ -79,7 +69,6 @@ function getWorkingDays($startDate, $endDate) {
}
try {
// Requête pour récupérer les demandes de l'utilisateur avec les informations du type de congé
$query = "
SELECT
dc.Id,
@@ -89,47 +78,28 @@ try {
dc.DateDemande,
dc.Commentaire,
dc.Validateur,
dc.DocumentJoint, -- 👈 CHAMP AJOUTÉ ICI
tc.Nom as TypeConge
FROM DemandeConge dc
JOIN TypeConge tc ON dc.TypeCongeId = tc.Id
WHERE dc.EmployeeId = ?
ORDER BY dc.DateDemande DESC
";
error_log("getRequests - Requête SQL: $query");
$stmt = $conn->prepare($query);
if ($stmt === false) {
throw new Exception("Erreur de préparation de la requête : " . $conn->error);
}
$stmt->bind_param("i", $userId);
$stmt->execute();
$result = $stmt->get_result();
error_log("getRequests - Nombre de résultats trouvés: " . $result->num_rows);
// Debug: Afficher toutes les demandes de la table pour cet utilisateur
$debugQuery = "SELECT COUNT(*) as total FROM DemandeConge WHERE EmployeeId = ?";
$debugStmt = $conn->prepare($debugQuery);
if ($debugStmt) {
$debugStmt->bind_param("i", $userId);
$debugStmt->execute();
$debugResult = $debugStmt->get_result();
$debugRow = $debugResult->fetch_assoc();
error_log("getRequests - Total demandes en DB pour user $userId: " . $debugRow['total']);
$debugStmt->close();
}
$requests = [];
while ($row = $result->fetch_assoc()) {
error_log("getRequests - Traitement demande ID: " . $row['Id']);
// Calcul des jours ouvrés
$workingDays = getWorkingDays($row['DateDebut'], $row['DateFin']);
// Mapping des types de congés pour l'affichage
$displayType = $row['TypeConge'];
switch ($row['TypeConge']) {
case 'Congé payé':
@@ -142,19 +112,24 @@ try {
$displayType = 'Congé maladie';
break;
}
// Formatage des dates pour l'affichage
$startDate = new DateTime($row['DateDebut']);
$endDate = new DateTime($row['DateFin']);
$submittedDate = new DateTime($row['DateDemande']);
// Format d'affichage des dates
if ($row['DateDebut'] === $row['DateFin']) {
$dateDisplay = $startDate->format('d/m/Y');
} else {
$dateDisplay = $startDate->format('d/m/Y') . ' - ' . $endDate->format('d/m/Y');
}
// 👇 GÉNÉRATION DU LIEN VERS LE FICHIER
$fileUrl = null;
if ($row['TypeConge'] === 'Congé maladie' && !empty($row['DocumentJoint'])) {
$fileName = basename($row['DocumentJoint']);
$fileUrl = 'http://localhost/GTA/project/uploads/'. $fileName;
}
$requests[] = [
'id' => (int)$row['Id'],
'type' => $displayType,
@@ -166,23 +141,20 @@ try {
'reason' => $row['Commentaire'] ?: 'Aucun commentaire',
'submittedAt' => $row['DateDemande'],
'submittedDisplay' => $submittedDate->format('d/m/Y'),
'validator' => $row['Validateur'] ?: null
'validator' => $row['Validateur'] ?: null,
'fileUrl' => $fileUrl
];
}
$stmt->close();
error_log("getRequests - Demandes formatées: " . count($requests));
error_log("getRequests - Détail des demandes: " . print_r($requests, true));
error_log("=== FIN getRequests.php ===");
echo json_encode([
"success" => true,
"message" => "Demandes récupérées avec succès.",
"requests" => $requests,
"total" => count($requests)
]);
} catch (Exception $e) {
error_log("Erreur récupération demandes : " . $e->getMessage());
echo json_encode([
@@ -192,4 +164,4 @@ try {
}
$conn->close();
?>
?>