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 @@ +
| Datum | +Beginn | +Ende | +Dauer | +Aufgaben | +Aktionen | +
|---|---|---|---|---|---|
| = htmlspecialchars($e['DATUM'] ?? '') ?> | += htmlspecialchars($e['BEGIN'] ?? '') ?> | ++ + = htmlspecialchars($e['ENDE']) ?> + + läuft + + | += $dauer ?> | ++ + = htmlspecialchars($a) ?> + + | ++ + + | +
| + Noch keine Einträge vorhanden. + | +|||||
= htmlspecialchars($message) ?>
-Hier kannst du nun dein Projekt aufbauen.
-