connect_error) { error_log("Erreur DB: " . $conn->connect_error); echo json_encode(['success' => false, 'message' => 'Erreur de connexion à la base de données']); exit; } $today = new DateTime(); $yearCurrent = (int)$today->format('Y'); $yearNMinus1 = $yearCurrent - 1; function getTypeId($conn, $nom) { $stmt = $conn->prepare("SELECT Id FROM TypeConge WHERE Nom=?"); $stmt->bind_param("s", $nom); $stmt->execute(); $result = $stmt->get_result(); $id = null; if ($row = $result->fetch_assoc()) { $id = (int)$row['Id']; } $stmt->close(); error_log("TypeConge '$nom' => Id $id"); return $id; } $cpTypeId = getTypeId($conn, 'Congé payé'); $rttTypeId = getTypeId($conn, 'RTT'); $soldeReportInitial_CP = 0.0; $soldeReportInitial_RTT = 0.0; $collaborateursResult = $conn->query("SELECT id FROM CollaborateurAD"); if (!$collaborateursResult) { error_log("Erreur récupération collaborateurs : ".$conn->error); echo json_encode(['success' => false, 'message' => 'Erreur récupération collaborateurs']); exit; } while ($collab = $collaborateursResult->fetch_assoc()) { $collabId = (int)$collab['id']; if ($cpTypeId !== null) { $existsStmt = $conn->prepare("SELECT Id FROM CompteurConges WHERE CollaborateurADId=? AND TypeCongeId=? AND Annee=?"); $existsStmt->bind_param("iii", $collabId, $cpTypeId, $yearNMinus1); $existsStmt->execute(); $existsStmt->store_result(); if ($existsStmt->num_rows === 0) { $insertStmt = $conn->prepare("INSERT INTO CompteurConges (CollaborateurADId, TypeCongeId, Annee, Solde, Total, SoldeReporte) VALUES (?, ?, ?, ?, ?, ?)"); $insertStmt->bind_param("iiiddd", $collabId, $cpTypeId, $yearNMinus1, $soldeReportInitial_CP, $soldeReportInitial_CP, $soldeReportInitial_CP); if (!$insertStmt->execute()) { error_log("Erreur insertion CP N-1 collaborateur $collabId : ".$insertStmt->error); } $insertStmt->close(); } $existsStmt->close(); } if ($rttTypeId !== null) { $existsStmt = $conn->prepare("SELECT Id FROM CompteurConges WHERE CollaborateurADId=? AND TypeCongeId=? AND Annee=?"); $existsStmt->bind_param("iii", $collabId, $rttTypeId, $yearNMinus1); $existsStmt->execute(); $existsStmt->store_result(); if ($existsStmt->num_rows === 0) { $insertStmt = $conn->prepare("INSERT INTO CompteurConges (CollaborateurADId, TypeCongeId, Annee, Solde, Total, SoldeReporte) VALUES (?, ?, ?, ?, ?, ?)"); $insertStmt->bind_param("iiiddd", $collabId, $rttTypeId, $yearNMinus1, $soldeReportInitial_RTT, $soldeReportInitial_RTT, $soldeReportInitial_RTT); if (!$insertStmt->execute()) { error_log("Erreur insertion RTT N-1 collaborateur $collabId : ".$insertStmt->error); } $insertStmt->close(); } $existsStmt->close(); } } $cpStart = new DateTime("$yearCurrent-06-01"); $cpEnd = new DateTime(($yearCurrent + 1) . "-05-31"); $rttStart = new DateTime("$yearCurrent-01-01"); $rttEnd = new DateTime("$yearCurrent-12-31"); $cpAnnualDays = 25; $rttAnnualDays = 10; $cpPeriodDays = $cpEnd->diff($cpStart)->days + 1; $rttPeriodDays = $rttEnd->diff($rttStart)->days + 1; $cpDailyIncrement = $cpAnnualDays / $cpPeriodDays; $rttDailyIncrement = $rttAnnualDays / $rttPeriodDays; error_log("Incrément CP jour : $cpDailyIncrement"); error_log("Incrément RTT jour : $rttDailyIncrement"); if ($today >= $cpStart && $today <= $cpEnd && $cpTypeId !== null) { $exerciseYear = (int)$cpStart->format('Y'); $stmt = $conn->prepare("UPDATE CompteurConges SET Solde = Solde + ? WHERE TypeCongeId = ? AND Annee = ?"); $stmt->bind_param("dii", $cpDailyIncrement, $cpTypeId, $exerciseYear); if (!$stmt->execute()) { error_log("Erreur incrément CP N : ".$stmt->error); } $stmt->close(); } if ($today >= $rttStart && $today <= $rttEnd && $rttTypeId !== null) { $exerciseYear = $yearCurrent; $stmt = $conn->prepare("UPDATE CompteurConges SET Solde = Solde + ? WHERE TypeCongeId = ? AND Annee = ?"); $stmt->bind_param("dii", $rttDailyIncrement, $rttTypeId, $exerciseYear); if (!$stmt->execute()) { error_log("Erreur incrément RTT N : ".$stmt->error); } $stmt->close(); } // Récupérer les compteurs actuels de l'utilisateur demandé en GET $userId = isset($_GET['user_id']) ? (int)$_GET['user_id'] : 0; $data = []; if ($userId > 0) { $stmt = $conn->prepare( "SELECT tc.Nom, cc.Annee, cc.Solde, cc.Total, cc.SoldeReporte FROM CompteurConges cc JOIN TypeConge tc ON cc.TypeCongeId = tc.Id WHERE cc.CollaborateurADId = ?" ); $stmt->bind_param("i", $userId); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { $data[$row['Nom']] = [ 'Annee' => $row['Annee'], 'Solde' => (float)$row['Solde'], 'Total' => (float)$row['Total'], 'SoldeReporte' => (float)$row['SoldeReporte'], ]; } $stmt->close(); } $conn->close(); echo json_encode([ 'success' => true, 'message' => 'Compteurs mis à jour', 'counters' => $data, ]); exit;