Abgleich mit Live-Daten
This commit is contained in:
+155
-155
@@ -1,156 +1,156 @@
|
||||
<?php
|
||||
session_start();
|
||||
require_once("inc/config.inc.php");
|
||||
require_once("inc/functions.inc.php");
|
||||
//Überprüfe, dass der User eingeloggt ist
|
||||
//Der Aufruf von check_user() muss in alle internen Seiten eingebaut sein
|
||||
$user = check_user();
|
||||
?>
|
||||
|
||||
<?php include 'header.php'; ?>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Stempelkarten-System</h2>
|
||||
|
||||
<?php
|
||||
// Überprüfen, ob eine Benutzer-ID in der Session vorhanden ist
|
||||
if (!isset($_SESSION['userid'])) {
|
||||
die("Kein Benutzer angemeldet.");
|
||||
}
|
||||
|
||||
$user_id = $_SESSION['userid'];
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
try {
|
||||
// Benutzerinformationen basierend auf der gespeicherten Benutzer-ID abrufen
|
||||
$stmt = $pdo->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 '<div class="text-center p-3 my-3 border border-success rounded bg-light text-success font-weight-bold">Zeitstempel für ' . $user['vorname'] . " erfolgreich gesetzt: " . $timestamp_type . "</div>";
|
||||
} 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);
|
||||
|
||||
?>
|
||||
|
||||
<br>
|
||||
<?php if ($fehlerhafteTage): ?>
|
||||
<div class="text-center p-3 my-3 border border-danger rounded bg-light text-danger font-weight-bold">
|
||||
<p class="mb-0">Es gibt ein Buchungsproblem! <a href="fehlbuchungen.php">Zur Anpassung</a></p>
|
||||
</div>
|
||||
|
||||
<?php endif;
|
||||
?>
|
||||
|
||||
|
||||
<p class="mb-0">Aktueller Status: <?php
|
||||
if ($aktueller_status == "GEHEN") {
|
||||
echo '<div class="text-center p-3 my-3 border border-warning rounded bg-light text-warning font-weight-bold">ABWESEND</div>';
|
||||
} elseif ($aktueller_status == 'KOMMEN') {
|
||||
echo '<div class="text-center p-3 my-3 border border-success rounded bg-light text-success font-weight-bold">ANWESEND</div>';
|
||||
} else {
|
||||
// Wenn weder "GEHEN" noch "KOMMEN" ist, handle es entsprechend
|
||||
echo '<div class="text-center p-3 my-3 border border-danger rounded bg-light text-danger font-weight-bold">Unbekannter Status</div>';
|
||||
}
|
||||
|
||||
?></p>
|
||||
|
||||
<div class="text-center p-3 my-3 border border-info rounded ">
|
||||
<p class="mb-0">Letzte Stempelzeit: <?php echo $letzte_aktion_zeit; ?></p>
|
||||
</div>
|
||||
|
||||
|
||||
<br><br>
|
||||
|
||||
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
|
||||
<input type="submit" value="Stempeln" class="btn btn-info btn-lg btn-block">
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
session_start();
|
||||
require_once("inc/config.inc.php");
|
||||
require_once("inc/functions.inc.php");
|
||||
//Überprüfe, dass der User eingeloggt ist
|
||||
//Der Aufruf von check_user() muss in alle internen Seiten eingebaut sein
|
||||
$user = check_user();
|
||||
?>
|
||||
|
||||
<?php include 'header.php'; ?>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Stempelkarten-System</h2>
|
||||
|
||||
<?php
|
||||
// Überprüfen, ob eine Benutzer-ID in der Session vorhanden ist
|
||||
if (!isset($_SESSION['userid'])) {
|
||||
die("Kein Benutzer angemeldet.");
|
||||
}
|
||||
|
||||
$user_id = $_SESSION['userid'];
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||
try {
|
||||
// Benutzerinformationen basierend auf der gespeicherten Benutzer-ID abrufen
|
||||
$stmt = $pdo->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 '<div class="text-center p-3 my-3 border border-success rounded bg-light text-success font-weight-bold">Zeitstempel für ' . $user['vorname'] . " erfolgreich gesetzt: " . $timestamp_type . "</div>";
|
||||
} 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);
|
||||
|
||||
?>
|
||||
|
||||
<br>
|
||||
<?php if ($fehlerhafteTage): ?>
|
||||
<div class="text-center p-3 my-3 border border-danger rounded bg-light text-danger font-weight-bold">
|
||||
<p class="mb-0">Es gibt ein Buchungsproblem! <a href="fehlbuchungen.php">Zur Anpassung</a></p>
|
||||
</div>
|
||||
|
||||
<?php endif;
|
||||
?>
|
||||
|
||||
|
||||
<p class="mb-0">Aktueller Status: <?php
|
||||
if ($aktueller_status == "GEHEN") {
|
||||
echo '<div class="text-center p-3 my-3 border border-warning rounded bg-light text-warning font-weight-bold">ABWESEND</div>';
|
||||
} elseif ($aktueller_status == 'KOMMEN') {
|
||||
echo '<div class="text-center p-3 my-3 border border-success rounded bg-light text-success font-weight-bold">ANWESEND</div>';
|
||||
} else {
|
||||
// Wenn weder "GEHEN" noch "KOMMEN" ist, handle es entsprechend
|
||||
echo '<div class="text-center p-3 my-3 border border-danger rounded bg-light text-danger font-weight-bold">Unbekannter Status</div>';
|
||||
}
|
||||
|
||||
?></p>
|
||||
|
||||
<div class="text-center p-3 my-3 border border-info rounded ">
|
||||
<p class="mb-0">Letzte Stempelzeit: <?php echo $letzte_aktion_zeit; ?></p>
|
||||
</div>
|
||||
|
||||
|
||||
<br><br>
|
||||
|
||||
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
|
||||
<input type="submit" value="Stempeln" class="btn btn-info btn-lg btn-block">
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php include 'footer.php'; ?>
|
||||
Reference in New Issue
Block a user