98 lines
3.3 KiB
PHP
98 lines
3.3 KiB
PHP
<?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'; ?>
|