This commit is contained in:
2026-03-20 17:13:38 +01:00
parent 4c84735b75
commit c043ee9a52
1152 changed files with 317560 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
<?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.");
}
#$mitarbeiterId = $_GET['employee_id'] ?? null;
#$gewaehlterTag = $_GET['datum'] ?? null;
$mitarbeiterId = $_SESSION['userid']; // Angenommen, die Mitarbeiter-ID kommt aus der Session
$gewaehlterMonat = '2024-01'; // Format: YYYY-MM
$tageImMonat = date('t', strtotime($gewaehlterMonat . '-01'));
$zeitenProTag = [];
for($tag = 1; $tag <= $tageImMonat; $tag++) {
$datum = $gewaehlterMonat . '-' . str_pad($tag, 2, '0', STR_PAD_LEFT);
echo $datum . "<br>";
// Abfrage für alle Zeitstempel des Tages
$query = "
SELECT timestamp_type, timestamp_datetime
FROM timestamps
WHERE employee_id = :employee_id AND DATE(timestamp_datetime) = :datum
ORDER BY timestamp_datetime
";
try {
$stmt = $pdo->prepare($query);
$stmt->bindParam(':employee_id', $mitarbeiterId, PDO::PARAM_INT);
$stmt->bindParam(':datum', $datum);
$stmt->execute();
$zeitstempel = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo $zeitstempel;
} catch(PDOException $e) {
$pdo->rollBack();
echo "Datenbankfehler: " . $e->getMessage();
}
$fruehesteKommenZeit = null;
$spaetesteGehenZeit = null;
$gesamtarbeitszeit = new DateInterval('PT0S');
$gesamtpausenzeit = new DateInterval('PT0S');
$letzterGehenZeitstempel = null;
echo "test";
foreach ($zeitstempel as $index => $eintrag) {
$zeit = new DateTime($eintrag['timestamp_datetime']);
echo "test2";
if ($eintrag['timestamp_type'] === 'KOMMEN') {
echo "test3";
if ($fruehesteKommenZeit === null || $zeit < $fruehesteKommenZeit) {
$fruehesteKommenZeit = $zeit;
}
if ($letzterGehenZeitstempel) {
$pause = $letzterGehenZeitstempel->diff($zeit);
$gesamtpausenzeit = $gesamtpausenzeit->add($pause);
}
} else if ($eintrag['timestamp_type'] === 'GEHEN') {
if ($spaetesteGehenZeit === null || $zeit > $spaetesteGehenZeit) {
$spaetesteGehenZeit = $zeit;
}
$letzterGehenZeitstempel = $zeit;
}
}
if ($fruehesteKommenZeit && $spaetesteGehenZeit) {
$gesamtarbeitszeit = $fruehesteKommenZeit->diff($spaetesteGehenZeit)->subtract($gesamtpausenzeit);
}
#echo $gesamtarbeitszeit;
$zeitenProTag[$datum] = [
'fruehesteKommenZeit' => $fruehesteKommenZeit ? $fruehesteKommenZeit->format('H:i:s') : '',
'spaetesteGehenZeit' => $spaetesteGehenZeit ? $spaetesteGehenZeit->format('H:i:s') : '',
'gesamtarbeitszeit' => $gesamtarbeitszeit->format('%H:%I:%S'),
'gesamtpausenzeit' => $gesamtpausenzeit->format('%H:%I:%S')
];
}
// Ausgabe der Ergebnisse für Testzwecke
echo '<pre>';
print_r($zeitenProTag);
echo '</pre>';
?>
</div>
</div>
</div>
<?php include 'footer.php'; ?>