diff --git a/WebTime/WEBROOT/src/MVC/Controller/WebtimeController.php b/WebTime/WEBROOT/src/MVC/Controller/WebtimeController.php new file mode 100644 index 0000000..6db921a --- /dev/null +++ b/WebTime/WEBROOT/src/MVC/Controller/WebtimeController.php @@ -0,0 +1,104 @@ + date('d.m.Y'), + 'BEGIN' => date('H:i'), + 'USER_ID' => $userId, + ]); + } + header('Location: ?service=webtime'); + exit; + } + + // --- Ausstempeln + Aufgaben speichern --- + if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'stop') { + $open = Zeiterfassung::getOpenEntry($userId); + if ($open) { + Zeiterfassung::update( + [ + 'ENDE' => date('H:i'), + 'A_1' => $_POST['a_1'] ?? null, + 'A_2' => $_POST['a_2'] ?? null, + 'A_3' => $_POST['a_3'] ?? null, + 'A_4' => $_POST['a_4'] ?? null, + ], + "ID = ?", + $open['ID'] + ); + } + header('Location: ?service=webtime'); + exit; + } + + // --- Eintrag bearbeiten --- + if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'edit') { + $id = (int)($_POST['entry_id'] ?? 0); + if ($id) { + Zeiterfassung::update( + [ + 'DATUM' => $_POST['datum'], + 'BEGIN' => $_POST['begin'], + 'ENDE' => $_POST['ende'] !== '' ? $_POST['ende'] : null, + 'A_1' => $_POST['a_1'] ?? null, + 'A_2' => $_POST['a_2'] ?? null, + 'A_3' => $_POST['a_3'] ?? null, + 'A_4' => $_POST['a_4'] ?? null, + ], + "ID = ? AND USER_ID = ?", + $id, $userId + ); + } + header('Location: ?service=webtime'); + exit; + } + + // --- Eintrag löschen --- + if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'delete') { + $id = (int)($_POST['entry_id'] ?? 0); + if ($id) { + Zeiterfassung::delete("ID = ? AND USER_ID = ?", $id, $userId); + } + header('Location: ?service=webtime'); + exit; + } + + $isRunning = Zeiterfassung::isRunning($userId); + $openEntry = Zeiterfassung::getOpenEntry($userId); + $eintraege = Zeiterfassung::getByUser($userId); + + return $this->render('webtime', [ + 'isRunning' => $isRunning, + 'openEntry' => $openEntry, + 'eintraege' => $eintraege, + ]); + } +} diff --git a/WebTime/WEBROOT/src/MVC/Controller/ZeiterfassungController.php b/WebTime/WEBROOT/src/MVC/Controller/ZeiterfassungController.php deleted file mode 100644 index 6c3287e..0000000 --- a/WebTime/WEBROOT/src/MVC/Controller/ZeiterfassungController.php +++ /dev/null @@ -1,22 +0,0 @@ -render('zeiterfassung', [ - 'title' => 'Zeiterfassung Modul', - 'message' => 'Willkommen in deinem neuen Modul Zeiterfassung!' - ]); - } -} \ No newline at end of file diff --git a/WebTime/WEBROOT/src/MVC/Model/Zeiterfassung.php b/WebTime/WEBROOT/src/MVC/Model/Zeiterfassung.php index 9e52144..10ea27f 100644 --- a/WebTime/WEBROOT/src/MVC/Model/Zeiterfassung.php +++ b/WebTime/WEBROOT/src/MVC/Model/Zeiterfassung.php @@ -4,19 +4,26 @@ namespace MVC\Model; use MVC\Core\Model; -/** - * Model für die Tabelle 'Zeiterfassung' - * Verfügbare Spalten: 'ID', '' - */ class Zeiterfassung extends Model { protected static $table = "Zeiterfassung"; - // Hier kannst du spezifische Methoden für dieses Model hinzufügen - - /** - * Beispiel: Suche nach einer spezifischen Spalte - */ - public static function getByFirstColumn($value) { - return self::where("ID = ?", $value); + public static function getByUser(int $userId): array { + return self::where("USER_ID = ? ORDER BY ID DESC", $userId); } -} \ No newline at end of file + + public static function isRunning(int $userId): bool { + $result = self::where( + "USER_ID = ? AND ENDE IS NULL LIMIT 1", + $userId + ); + return !empty($result); + } + + public static function getOpenEntry(int $userId): ?array { + $result = self::where( + "USER_ID = ? AND ENDE IS NULL ORDER BY ID DESC LIMIT 1", + $userId + ); + return $result[0] ?? null; + } +} diff --git a/WebTime/WEBROOT/src/MVC/View/webtime.php b/WebTime/WEBROOT/src/MVC/View/webtime.php new file mode 100644 index 0000000..93c7e66 --- /dev/null +++ b/WebTime/WEBROOT/src/MVC/View/webtime.php @@ -0,0 +1,351 @@ +

⏱️ WebTime – Zeiterfassung

+ + +
+ +
+ + Läuft seit Uhr +
+
+ +
+ + + + +
+ +
+ +
+ + Nicht eingestempelt +
+
+ + +
+ +
+ + +
+ + + + + + + + + + + + + 0) { + $dauer = sprintf('%02d:%02d h', floor($diff / 3600), floor(($diff % 3600) / 60)); + } + } + $aufgaben = array_filter([ + $e['A_1'] ?? null, + $e['A_2'] ?? null, + $e['A_3'] ?? null, + $e['A_4'] ?? null, + ]); + ?> + + + + + + + + + + + + + + + +
DatumBeginnEndeDauerAufgabenAktionen
+ + + + läuft + + + + + + + +
+ + + +
+
+ Noch keine Einträge vorhanden. +
+
+ + + + + + + diff --git a/WebTime/WEBROOT/src/MVC/View/zeiterfassung.php b/WebTime/WEBROOT/src/MVC/View/zeiterfassung.php deleted file mode 100644 index 2aac4c6..0000000 --- a/WebTime/WEBROOT/src/MVC/View/zeiterfassung.php +++ /dev/null @@ -1,14 +0,0 @@ -

-
-

-

Hier kannst du nun dein Projekt aufbauen.

-
- - \ No newline at end of file diff --git a/WebTime/WEBROOT/src/config/navigation.php b/WebTime/WEBROOT/src/config/navigation.php index fa98f0c..a1171e0 100644 --- a/WebTime/WEBROOT/src/config/navigation.php +++ b/WebTime/WEBROOT/src/config/navigation.php @@ -14,5 +14,5 @@ return [ 'template_form' => ['label' => '📝 Form Template'], 'template_table' => ['label' => '📊 Table Template'], 'docs' => ['label' => '📚 Dokumentation'], - 'zeiterfassung' => ['label' => 'Zeiterfassung'], + 'webtime' => ['label' => '⏱️ WebTime'], ]; diff --git a/WebTime/WEBROOT/src/config/routes.php b/WebTime/WEBROOT/src/config/routes.php index 7f253e4..47ea2d5 100644 --- a/WebTime/WEBROOT/src/config/routes.php +++ b/WebTime/WEBROOT/src/config/routes.php @@ -23,8 +23,8 @@ $router->add('template_download', \MVC\Controller\TemplateController::class, 'do $router->add('template_form', \MVC\Controller\TemplateController::class, 'data_form', ['auth']); $router->add('template_table', \MVC\Controller\TemplateController::class, 'data_table', ['auth']); $router->add('download_file', \MVC\Controller\TemplateController::class, 'download_file', ['auth']); +$router->add('webtime',\MVC\Controller\WebtimeController::class, 'webtime', ['auth']); // API Routes (Path-based) $router->add('api/v1/test', \MVC\Controller\ApiController::class, 'get'); $router->add('api/v1/become', \MVC\Controller\ApiController::class, 'become'); -$router->add('zeiterfassung', \MVC\Controller\ZeiterfassungController::class, 'zeiterfassung');