182 lines
5.1 KiB
PHP
182 lines
5.1 KiB
PHP
<?php
|
|
// Active l'affichage des erreurs pour le dev
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
header("Access-Control-Allow-Origin: *");
|
|
header("Access-Control-Allow-Methods: POST, OPTIONS");
|
|
header("Access-Control-Allow-Headers: Content-Type");
|
|
|
|
// Gère le pré-vol CORS
|
|
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
|
http_response_code(200);
|
|
exit();
|
|
}
|
|
|
|
header("Content-Type: application/json");
|
|
|
|
// --- Paramètres de connexion ---
|
|
$host = "192.168.0.4";
|
|
$dbname = "DemandeConge";
|
|
$username = "wpuser";
|
|
$password = "-2b/)ru5/Bi8P[7_";
|
|
|
|
// Connexion
|
|
$conn = new mysqli($host, $username, $password, $dbname);
|
|
if ($conn->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é");
|
|
|
|
?>
|