Stempelkarten-System

prepare("SELECT vorname FROM users WHERE id = ?"); $stmt->bindParam(1, $user_id); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { // Logik für das Setzen des Zeitstempels $stmt = $pdo->prepare("SELECT COUNT(CASE WHEN timestamp_type = 'KOMMEN' THEN 1 ELSE NULL END) AS AnzahlKommen, COUNT(CASE WHEN timestamp_type = 'GEHEN' THEN 1 ELSE NULL END) AS AnzahlGehen FROM timestamps WHERE employee_id = ? AND DATE(timestamp_datetime) = CURDATE()"); $stmt->bindParam(1, $user_id); $stmt->execute(); $timestamp_data = $stmt->fetch(PDO::FETCH_ASSOC); $timestamp_type = $timestamp_data['AnzahlKommen'] > $timestamp_data['AnzahlGehen'] ? "GEHEN" : "KOMMEN"; // Zeitstempel hinzufügen $insert_stmt = $pdo->prepare("INSERT INTO timestamps (employee_id, timestamp_type, timestamp_datetime, timestamp_endpoint) VALUES (?, ?, NOW(), 1)"); $insert_stmt->bindParam(1, $user_id); $insert_stmt->bindParam(2, $timestamp_type); $insert_stmt->execute(); if ($insert_stmt->rowCount() > 0) { echo '
Zeitstempel für ' . $user['vorname'] . " erfolgreich gesetzt: " . $timestamp_type . "
"; } else { echo "Fehler beim Speichern des Zeitstempels."; } } else { echo "Benutzer nicht gefunden."; } } catch(PDOException $e) { echo "Datenbankfehler: " . $e->getMessage(); } } $aktueller_status = "Unbekannt"; $letzte_aktion_zeit = "N/A"; try { // Abfragen des letzten Status und der Zeit des Mitarbeiters $status_stmt = $pdo->prepare("SELECT timestamp_type, timestamp_datetime FROM timestamps WHERE employee_id = ? ORDER BY timestamp_datetime DESC LIMIT 1"); $status_stmt->bindParam(1, $user_id); $status_stmt->execute(); $status_data = $status_stmt->fetch(PDO::FETCH_ASSOC); if ($status_data) { $aktueller_status = $status_data['timestamp_type']; $letzte_aktion_zeit = $status_data['timestamp_datetime']; } } catch(PDOException $e) { echo "Datenbankfehler: " . $e->getMessage(); } try { $query2 = " SELECT DATE(timestamp_datetime) AS datum, GROUP_CONCAT(timestamp_type ORDER BY timestamp_datetime) AS day_sequence FROM timestamps WHERE employee_id = :employee_id AND DATE(timestamp_datetime) != CURDATE() GROUP BY DATE(timestamp_datetime);"; $stmt = $pdo->prepare($query2); $stmt->bindParam(':employee_id', $user["id"], PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetchAll(); #$invalidDates = []; } catch(PDOException $e) { echo "Datenbankfehler: " . $e->getMessage(); } foreach ($result as $row) { if (!isValidSequence($row["day_sequence"])) { $fehlerhafteTage[] = $row["datum"]; } } #print_r($fehlerhafteTage); ?>

Es gibt ein Buchungsproblem! Zur Anpassung

Aktueller Status: ABWESEND

'; } elseif ($aktueller_status == 'KOMMEN') { echo '
ANWESEND
'; } else { // Wenn weder "GEHEN" noch "KOMMEN" ist, handle es entsprechend echo '
Unbekannter Status
'; } ?>

Letzte Stempelzeit: