diff --git a/admin/anfragen.php b/admin/anfragen.php
index 238d5d5..ac8f9f7 100644
--- a/admin/anfragen.php
+++ b/admin/anfragen.php
@@ -4,6 +4,7 @@ session_start();
// WICHTIG: Pfade aus /admin heraus korrekt auflösen
require_once __DIR__ . "/../inc/config.inc.php";
require_once __DIR__ . "/../inc/functions.inc.php";
+require_once __DIR__ . "/../inc/company_holiday_sync.inc.php";
// Login prüfen
$user = check_admin_user();
@@ -624,12 +625,12 @@ if(!check_worker()){
echo "Start:
Ende:
- Vertretung: ";
+ Vertretung: ";
- echo "
Vertretung Telefon:
-
Vertretung Adresse: ";
+ echo "
Vertretung Telefon:
+
Vertretung Adresse: ";
- echo "
Vertretung Webseite: ";
+ echo "
Vertretung Webseite: ";
echo "
";
}
@@ -656,40 +657,64 @@ if(!check_worker()){
}else if (($_POST["aktion"] ?? '') == "5") {
// Termine in DB speichern.
$i =0;
- foreach ($_POST['Starttime'] as $Starttime) {
- //echo $datum . "
";
- if($_POST["Starttime"][$i] != "0000-00-00"){
- //echo $_POST["urlaubid"][$i] . "
";
- $stmt = $pdo->prepare("
- INSERT INTO urlaub
- (urlaubid, vertretung, start, ende, vertretertelefon, vertreteradresse, vertreterurl)
- VALUES
- (:urlaubid, :vertretung, :start, :ende, :telefon, :adresse, :url)
- ON DUPLICATE KEY UPDATE
- vertretung = VALUES(vertretung),
- start = VALUES(start),
- ende = VALUES(ende),
- vertretertelefon = VALUES(vertretertelefon),
- vertreteradresse = VALUES(vertreteradresse),
- vertreterurl = VALUES(vertreterurl)
- ");
+ $pdo->beginTransaction();
+ try {
+ foreach ($_POST['Starttime'] as $Starttime) {
+ if($_POST["Starttime"][$i] != "0000-00-00"){
+ $vertretung = trim((string)($_POST['vertretung'][$i] ?? ''));
+ $vertretertelefon = trim((string)($_POST['vertretertelefon'][$i] ?? ''));
+ $vertreteradresse = trim((string)($_POST['vertreteradresse'][$i] ?? ''));
+ $vertreterurl = trim((string)($_POST['vertreterurl'][$i] ?? ''));
- $ok = $stmt->execute([
- ':urlaubid' => (int)$_POST['urlaubid'][$i], // 0 = INSERT, >0 = UPDATE
- ':vertretung' => $_POST['vertretung'][$i],
- ':start' => $_POST['Starttime'][$i],
- ':ende' => $_POST['Endetime'][$i],
- ':telefon' => $_POST['vertretertelefon'][$i],
- ':adresse' => $_POST['vertreteradresse'][$i],
- ':url' => $_POST['vertreterurl'][$i],
- ]);
+ if ($vertretung === '' || $vertretertelefon === '' || $vertreteradresse === '' || $vertreterurl === '') {
+ throw new RuntimeException("Bitte alle Vertreterinformationen fuer jeden Urlaubseintrag vollstaendig ausfuellen.");
+ }
- if (!$ok) {
- throw new RuntimeException("Fehler beim Eintragen in der Datenbank.");
+ $stmt = $pdo->prepare("
+ INSERT INTO urlaub
+ (urlaubid, vertretung, start, ende, vertretertelefon, vertreteradresse, vertreterurl)
+ VALUES
+ (:urlaubid, :vertretung, :start, :ende, :telefon, :adresse, :url)
+ ON DUPLICATE KEY UPDATE
+ vertretung = VALUES(vertretung),
+ start = VALUES(start),
+ ende = VALUES(ende),
+ vertretertelefon = VALUES(vertretertelefon),
+ vertreteradresse = VALUES(vertreteradresse),
+ vertreterurl = VALUES(vertreterurl)
+ ");
+
+ $ok = $stmt->execute([
+ ':urlaubid' => (int)$_POST['urlaubid'][$i], // 0 = INSERT, >0 = UPDATE
+ ':vertretung' => $vertretung,
+ ':start' => $_POST['Starttime'][$i],
+ ':ende' => $_POST['Endetime'][$i],
+ ':telefon' => $vertretertelefon,
+ ':adresse' => $vertreteradresse,
+ ':url' => $vertreterurl,
+ ]);
+
+ if (!$ok) {
+ throw new RuntimeException("Fehler beim Eintragen in der Datenbank.");
+ }
+
+ $urlaubId = (int)$_POST['urlaubid'][$i];
+ if ($urlaubId <= 0) {
+ $urlaubId = (int)$pdo->lastInsertId();
+ }
+ if ($urlaubId > 0) {
+ vacationSyncCompanyHolidayFromUrlaub($pdo, $urlaubId, $internUserId);
+ }
}
+ $i++;
}
- $i++;
- }
+ $pdo->commit();
+ } catch (Throwable $e) {
+ if ($pdo->inTransaction()) {
+ $pdo->rollBack();
+ }
+ throw $e;
+ }
echo "Einträge wurden in der Datenbank gespeichert!
";
}else if (($_POST["aktion"] ?? '') == "6") {
@@ -2023,10 +2048,10 @@ if(!check_worker()){
-
-
-
+
+
+