prepare("SELECT * FROM user_sessions WHERE user_id = ? AND logout_time IS NULL ORDER BY login_time DESC LIMIT 1"); $stmt->execute([$user_id]); return $stmt->fetch(); } function getActivePause($pdo, $session_id) { $stmt = $pdo->prepare("SELECT * FROM session_pauses WHERE session_id = ? AND pause_end IS NULL ORDER BY pause_start DESC LIMIT 1"); $stmt->execute([$session_id]); return $stmt->fetch(); } // Zunächst prüfen, ob aktuell eine aktive Session vorliegt $activeSession = getActiveSession($pdo, $user_id); // Formularaktionen verarbeiten if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { $action = $_POST['action']; if ($action === 'start_stop') { if (!$activeSession) { // Arbeitszeit starten: Neue Session anlegen $stmt = $pdo->prepare("INSERT INTO user_sessions (user_id, login_time) VALUES (?, NOW())"); $stmt->execute([$user_id]); $_SESSION['session_id'] = $pdo->lastInsertId(); } else { // Vorher ggf. noch aktive Pause beenden $activePause = getActivePause($pdo, $activeSession['id']); if ($activePause) { $stmt = $pdo->prepare("UPDATE session_pauses SET pause_end = NOW() WHERE id = ?"); $stmt->execute([$activePause['id']]); } // Arbeitszeitsession beenden $stmt = $pdo->prepare("UPDATE user_sessions SET logout_time = NOW() WHERE id = ?"); $stmt->execute([$activeSession['id']]); } header("Location: dashboard.php"); exit; } elseif ($action === 'toggle_pause') { if ($activeSession) { $activePause = getActivePause($pdo, $activeSession['id']); if ($activePause) { // Pause beenden $stmt = $pdo->prepare("UPDATE session_pauses SET pause_end = NOW() WHERE id = ?"); $stmt->execute([$activePause['id']]); } else { // Neue Pause starten $stmt = $pdo->prepare("INSERT INTO session_pauses (session_id, pause_start) VALUES (?, NOW())"); $stmt->execute([$activeSession['id']]); } } header("Location: dashboard.php"); exit; } } // Aktuellen Status abfragen $activeSession = getActiveSession($pdo, $user_id); $activePause = ($activeSession) ? getActivePause($pdo, $activeSession['id']) : null; // Benutzername abrufen $stmt = $pdo->prepare("SELECT username FROM users WHERE id = ?"); $stmt->execute([$user_id]); $user = $stmt->fetch(); ?>
Derzeit läuft keine Arbeitszeiterfassung.
Arbeitszeit gestartet um:
Aktuell in Pause seit:
Arbeitszeit läuft – keine Pause.