connect_error) { error_log("Erreur connexion DB submitLeaveRequest: " . $conn->connect_error); echo json_encode([ "success" => false, "message" => "Erreur de connexion DB : " . $conn->connect_error ]); exit(); } // Lecture du JSON envoyé $input = file_get_contents('php://input'); error_log("submitLeaveRequest - Input reçu: " . $input); $data = json_decode($input, true); if (!isset( $data['EmployeeId'], $data['TypeConge'], $data['DateDebut'], $data['DateFin'], $data['NumDays'] )) { error_log("submitLeaveRequest - Données manquantes: " . print_r($data, true)); echo json_encode([ "success" => false, "message" => "Données manquantes pour la demande de congé." ]); exit(); } // Récupération des champs $employeeId = (int) $data['EmployeeId']; $typeCongeNom= $data['TypeConge']; $dateDebut = $data['DateDebut']; $dateFin = $data['DateFin']; $commentaire = $data['Commentaire'] ?? ''; $numDays = (int) $data['NumDays']; error_log("submitLeaveRequest - Données parsées: EmployeeId=$employeeId, Type=$typeCongeNom, Début=$dateDebut, Fin=$dateFin"); $statut = 'En attente'; $validateur = null; $currentDate= date('Y-m-d H:i:s'); // date complète pour DateDemande // Mapping frontend → DB switch ($typeCongeNom) { case 'CP': $dbTypeCongeName = 'Congé payé'; break; case 'RTT': $dbTypeCongeName = 'RTT'; break; case 'ABS': $dbTypeCongeName = 'Congé maladie'; break; default: error_log("submitLeaveRequest - Type de congé inconnu: $typeCongeNom"); echo json_encode([ "success" => false, "message" => "Type de congé inconnu." ]); $conn->close(); exit(); } error_log("submitLeaveRequest - Type DB mappé: $dbTypeCongeName"); // Récupération de l'ID du type de congé $stmt = $conn->prepare("SELECT Id FROM TypeConge WHERE Nom = ?"); if (!$stmt) { error_log("submitLeaveRequest - Erreur préparation requête TypeConge: " . $conn->error); echo json_encode([ "success" => false, "message" => "Erreur préparation requête TypeConge" ]); $conn->close(); exit(); } $stmt->bind_param("s", $dbTypeCongeName); $stmt->execute(); $res = $stmt->get_result(); if ($row = $res->fetch_assoc()) { $typeCongeId = (int) $row['Id']; error_log("submitLeaveRequest - TypeCongeId trouvé: $typeCongeId"); } else { error_log("submitLeaveRequest - Type de congé non trouvé en DB: $dbTypeCongeName"); echo json_encode([ "success" => false, "message" => "Type de congé non trouvé en DB : $dbTypeCongeName" ]); $stmt->close(); $conn->close(); exit(); } $stmt->close(); // Requête d'insertion dans DemandeConge $query = " INSERT INTO DemandeConge (EmployeeId, DateDebut, DateFin, TypeCongeId, Statut, DateDemande, Commentaire, Validateur, NombreJours) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) "; error_log("submitLeaveRequest - Requête d'insertion: $query"); // Préparation de la requête $stmt = $conn->prepare($query); if (!$stmt) { error_log("Erreur prepare insert : " . $conn->error); echo json_encode([ "success" => false, "message" => "Erreur interne lors de la préparation de la requête." ]); $conn->close(); exit(); } // Pour la colonne Validateur, on passe '' si null $validParam = $validateur ?? ''; error_log("submitLeaveRequest - Paramètres bind: $employeeId, $dateDebut, $dateFin, $typeCongeId, $statut, $currentDate, $commentaire, $validParam, $numDays"); // Bind des paramètres (types : i=integer, s=string, d=decimal) $stmt->bind_param( "ississssi", $employeeId, // i $dateDebut, // s $dateFin, // s $typeCongeId, // i $statut, // s $currentDate, // s - DateDemande $commentaire, // s $validParam, // s $numDays // i - NombreJours ); // Exécution if ($stmt->execute()) { $insertId = $conn->insert_id; error_log("submitLeaveRequest - Insertion réussie, ID: $insertId"); echo json_encode([ "success" => true, "message" => "Demande de congé soumise avec succès.", "request_id" => $insertId ]); } else { error_log("Erreur execute insert : " . $stmt->error); echo json_encode([ "success" => false, "message" => "Erreur lors de l'enregistrement : " . $stmt->error ]); } $stmt->close(); $conn->close(); error_log("submitLeaveRequest - Script terminé"); ?>