modification concernant l'affichage de type de congés dans la pagedemande+Affichage du service du collabrateur et son rôle+ version mobile de la page demande
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// Récupération des demandes de congés avec gestion des exercices
|
||||
// En-têtes CORS et JSON
|
||||
header("Access-Control-Allow-Origin: *");
|
||||
header("Access-Control-Allow-Methods: GET, OPTIONS");
|
||||
header("Access-Control-Allow-Headers: Content-Type");
|
||||
@@ -9,51 +9,33 @@ if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
|
||||
exit();
|
||||
}
|
||||
|
||||
header("Content-Type: application/json");
|
||||
header("Content-Type: application/json; charset=utf-8");
|
||||
|
||||
// Affichage des erreurs PHP (utile en dev)
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
// Connexion BDD
|
||||
$host = "192.168.0.4";
|
||||
$dbname = "DemandeConge";
|
||||
$username = "wpuser";
|
||||
$password = "-2b/)ru5/Bi8P[7_";
|
||||
|
||||
$conn = new mysqli($host, $username, $password, $dbname);
|
||||
|
||||
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]);
|
||||
echo json_encode(["success" => false, "message" => "Erreur connexion DB: " . $conn->connect_error]);
|
||||
exit();
|
||||
}
|
||||
|
||||
// Récup paramètre
|
||||
$userId = $_GET['user_id'] ?? null;
|
||||
|
||||
error_log("=== DEBUT getRequests.php ===");
|
||||
error_log("getRequests - user_id reçu: " . ($userId ?? 'NULL'));
|
||||
error_log("getRequests - Toutes les variables GET: " . print_r($_GET, true));
|
||||
|
||||
if ($userId === null) {
|
||||
error_log("getRequests - user_id manquant");
|
||||
echo json_encode(["success" => false, "message" => "ID utilisateur manquant."]);
|
||||
if (!$userId) {
|
||||
echo json_encode(["success" => false, "message" => "ID utilisateur manquant"]);
|
||||
exit();
|
||||
}
|
||||
|
||||
$checkUserQuery = "SELECT ID, Nom, Prenom FROM Users WHERE ID = ?";
|
||||
$checkUserStmt = $conn->prepare($checkUserQuery);
|
||||
if ($checkUserStmt) {
|
||||
$checkUserStmt->bind_param("i", $userId);
|
||||
$checkUserStmt->execute();
|
||||
$userResult = $checkUserStmt->get_result();
|
||||
if ($userRow = $userResult->fetch_assoc()) {
|
||||
error_log("getRequests - Utilisateur trouvé: " . $userRow['Prenom'] . " " . $userRow['Nom']);
|
||||
} else {
|
||||
error_log("getRequests - ATTENTION: Utilisateur ID $userId non trouvé dans la table Users");
|
||||
}
|
||||
$checkUserStmt->close();
|
||||
}
|
||||
|
||||
// Fonction jours ouvrés
|
||||
function getWorkingDays($startDate, $endDate) {
|
||||
$workingDays = 0;
|
||||
$current = new DateTime($startDate);
|
||||
@@ -69,6 +51,7 @@ function getWorkingDays($startDate, $endDate) {
|
||||
}
|
||||
|
||||
try {
|
||||
// Requête multi-types
|
||||
$query = "
|
||||
SELECT
|
||||
dc.Id,
|
||||
@@ -78,17 +61,20 @@ try {
|
||||
dc.DateDemande,
|
||||
dc.Commentaire,
|
||||
dc.Validateur,
|
||||
dc.DocumentJoint, -- 👈 CHAMP AJOUTÉ ICI
|
||||
tc.Nom as TypeConge
|
||||
dc.DocumentJoint,
|
||||
GROUP_CONCAT(tc.Nom ORDER BY tc.Nom SEPARATOR ', ') AS TypeConges
|
||||
FROM DemandeConge dc
|
||||
JOIN TypeConge tc ON dc.TypeCongeId = tc.Id
|
||||
JOIN TypeConge tc ON FIND_IN_SET(tc.Id, dc.TypeCongeId)
|
||||
WHERE dc.EmployeeId = ?
|
||||
GROUP BY
|
||||
dc.Id, dc.DateDebut, dc.DateFin, dc.Statut, dc.DateDemande,
|
||||
dc.Commentaire, dc.Validateur, dc.DocumentJoint
|
||||
ORDER BY dc.DateDemande DESC
|
||||
";
|
||||
|
||||
$stmt = $conn->prepare($query);
|
||||
if ($stmt === false) {
|
||||
throw new Exception("Erreur de préparation de la requête : " . $conn->error);
|
||||
if (!$stmt) {
|
||||
throw new Exception("Erreur préparation SQL : " . $conn->error);
|
||||
}
|
||||
|
||||
$stmt->bind_param("i", $userId);
|
||||
@@ -96,43 +82,27 @@ try {
|
||||
$result = $stmt->get_result();
|
||||
|
||||
$requests = [];
|
||||
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$workingDays = getWorkingDays($row['DateDebut'], $row['DateFin']);
|
||||
|
||||
$displayType = $row['TypeConge'];
|
||||
switch ($row['TypeConge']) {
|
||||
case 'Congé payé':
|
||||
$displayType = 'Congés payés';
|
||||
break;
|
||||
case 'RTT':
|
||||
$displayType = 'RTT';
|
||||
break;
|
||||
case 'Congé maladie':
|
||||
$displayType = 'Congé maladie';
|
||||
break;
|
||||
}
|
||||
|
||||
// Format dates
|
||||
$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');
|
||||
}
|
||||
$dateDisplay = ($row['DateDebut'] === $row['DateFin'])
|
||||
? $startDate->format('d/m/Y')
|
||||
: $startDate->format('d/m/Y') . ' - ' . $endDate->format('d/m/Y');
|
||||
|
||||
// 👇 GÉNÉRATION DU LIEN VERS LE FICHIER
|
||||
// Lien fichier si congé maladie
|
||||
$fileUrl = null;
|
||||
if ($row['TypeConge'] === 'Congé maladie' && !empty($row['DocumentJoint'])) {
|
||||
$fileName = basename($row['DocumentJoint']);
|
||||
$fileUrl = 'http://localhost/GTA/project/uploads/'. $fileName;
|
||||
if (strpos($row['TypeConges'], 'Congé maladie') !== false && !empty($row['DocumentJoint'])) {
|
||||
$fileUrl = 'http://localhost/GTA/project/uploads/' . basename($row['DocumentJoint']);
|
||||
}
|
||||
|
||||
$requests[] = [
|
||||
'id' => (int)$row['Id'],
|
||||
'type' => $displayType,
|
||||
'type' => $row['TypeConges'], // ex: "Congé payé, RTT"
|
||||
'startDate' => $row['DateDebut'],
|
||||
'endDate' => $row['DateFin'],
|
||||
'dateDisplay' => $dateDisplay,
|
||||
@@ -142,26 +112,22 @@ try {
|
||||
'submittedAt' => $row['DateDemande'],
|
||||
'submittedDisplay' => $submittedDate->format('d/m/Y'),
|
||||
'validator' => $row['Validateur'] ?: null,
|
||||
'fileUrl' => $fileUrl
|
||||
'fileUrl' => $fileUrl
|
||||
];
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
|
||||
echo json_encode([
|
||||
"success" => true,
|
||||
"message" => "Demandes récupérées avec succès.",
|
||||
"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([
|
||||
"success" => false,
|
||||
"message" => "Erreur lors de la récupération des demandes : " . $e->getMessage()
|
||||
"message" => "Erreur: " . $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
$conn->close();
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user