195 lines
6.5 KiB
PHP
195 lines
6.5 KiB
PHP
<?php
|
|
// Récupération des demandes de congés avec gestion des exercices
|
|
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");
|
|
|
|
// Log des erreurs pour debug
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
$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) {
|
|
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 ===");
|
|
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."]);
|
|
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) {
|
|
$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 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)
|
|
$workingDays++;
|
|
}
|
|
$current->modify('+1 day');
|
|
}
|
|
return $workingDays;
|
|
}
|
|
|
|
try {
|
|
// Requête pour récupérer les demandes de l'utilisateur avec les informations du type de congé
|
|
$query = "
|
|
SELECT
|
|
dc.Id,
|
|
dc.DateDebut,
|
|
dc.DateFin,
|
|
dc.Statut,
|
|
dc.DateDemande,
|
|
dc.Commentaire,
|
|
dc.Validateur,
|
|
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é':
|
|
$displayType = 'Congés payés';
|
|
break;
|
|
case 'RTT':
|
|
$displayType = 'RTT';
|
|
break;
|
|
case 'Congé maladie':
|
|
$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');
|
|
}
|
|
|
|
$requests[] = [
|
|
'id' => (int)$row['Id'],
|
|
'type' => $displayType,
|
|
'startDate' => $row['DateDebut'],
|
|
'endDate' => $row['DateFin'],
|
|
'dateDisplay' => $dateDisplay,
|
|
'days' => $workingDays,
|
|
'status' => $row['Statut'],
|
|
'reason' => $row['Commentaire'] ?: 'Aucun commentaire',
|
|
'submittedAt' => $row['DateDemande'],
|
|
'submittedDisplay' => $submittedDate->format('d/m/Y'),
|
|
'validator' => $row['Validateur'] ?: null
|
|
];
|
|
}
|
|
|
|
$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([
|
|
"success" => false,
|
|
"message" => "Erreur lors de la récupération des demandes : " . $e->getMessage()
|
|
]);
|
|
}
|
|
|
|
$conn->close();
|
|
?>
|