"; echo "
"; $user = check_intern_user(); // intern session user if (!$user) { header("Location: login.php"); exit; } echo "

Neue Anfrage

"; echo "

Hallo " . e((string)($user['vorname'] ?? '')) . ",

"; // Preconditions if (!check_mailreg()) { echo "

"; echo "Es fehlt die Authentifizierung Ihres Kontos per E-Mail! Bitte authentifizieren Sie Ihre E-Mail-Adresse.
"; echo "
"; echo ""; echo "
"; echo "
"; } if (!check_userdatenvorhanden()) { echo "

"; echo "Es fehlen noch Informationen in Ihren Stammdaten. Bitte pflegen Sie die Daten nach.
"; echo "
"; echo ""; echo "
"; echo "
"; } if (!(check_mailreg() && check_userdatenvorhanden())) { echo "


"; echo "
"; include(__DIR__ . "/templates/footer.inc.php"); exit; } // action routing $aktion = $_POST['aktion'] ?? ''; // '', choose, confirm, submit // Ensure persons id early try { $internUserId = isset($_SESSION['userid']) ? (int)$_SESSION['userid'] : null; $personId = ensurePersonFromInternUsersByEmail($pdo, (string)($user['email'] ?? ''), $internUserId); } catch (Throwable $t) { echo "
Fehler: " . e($t->getMessage()) . "
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } // Vacation check if ($aktion === 'choose' || $aktion === 'confirm' || $aktion === 'submit' || $aktion === '') { if (isPraxisImUrlaub($pdo)) { $info = loadAktuelleUrlaubsInfo($pdo); echo "

Praxis im Urlaub

"; echo "Wir befinden uns aktuell im Urlaub.
Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.

"; if ($info) { $ende = (string)$info['ende']; $endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende))); if (!empty($info['vertretung'])) echo "Unsere Vertretung: " . e($info['vertretung']) . "
"; if (!empty($info['vertreterurl'])) echo "Webseite Vertretung: " . e($info['vertreterurl']) . "
"; if (!empty($info['vertretertelefon'])) echo "Telefonischer Kontakt Vertretung: " . e($info['vertretertelefon']) . "
"; if (!empty($info['vertreteradresse'])) echo "Adresse Vertretung: " . e($info['vertreteradresse']) . "
"; echo "
Wir stehen Ihnen ab dem " . e($endeausgabe) . " wieder zur Verfügung.


"; } echo "
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } } // default: show selection if ($aktion === '') { echo "

Wählen Sie die Anfragenart aus:

"; echo "
"; echo ""; echo "

Benutzer

"; echo "Name: " . e((string)$user["vorname"]) . " " . e((string)$user["nachname"]) . "
"; echo "Geburtstag: " . e((string)$user["geburtstag"]) . "
"; echo "Adresse: " . e((string)$user["strasse"]) . ", " . e((string)$user["plz"]) . ", " . e((string)$user["ort"]) . "
"; echo ""; echo "

"; echo ""; echo ""; echo "

"; echo "
"; echo "
"; echo "


"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } // choose -> show form if ($aktion === 'choose') { $anfrageart = (int)($_POST['anfrageart'] ?? 0); $requester_person_id = (int)($_POST['requester_person_id'] ?? $personId); $mode = match ($anfrageart) { 1 => 'rezept', 2 => 'allgemein', 3 => 'terminabsage', default => '' }; if ($mode === '') { echo "
Unbekannte Anfrageart.
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } $arten = loadAnfragearten($pdo, $mode); echo "

Füllen Sie das Formular aus.

"; echo "
"; echo ""; echo ""; echo ""; // User block echo "

Benutzer

"; echo "Name: " . e((string)$user["vorname"]) . " " . e((string)$user["nachname"]) . "
"; echo "Geburtstag: " . e((string)$user["geburtstag"]) . "
"; echo "Adresse: " . e((string)$user["strasse"]) . ", " . e((string)$user["plz"]) . ", " . e((string)$user["ort"]) . "
"; echo "

"; echo ""; echo "
"; // Special fields for rezept if ($mode === 'rezept') { $curdate = date('d.m.Y'); $curyear = date('Y'); $curMonth = (int)date('m'); $curQuarter = (int)ceil($curMonth / 3); $current_quarter = (int)ceil(date('n') / 3); $first_date = date('d.m.Y', strtotime(date('Y') . '-' . (($current_quarter * 3) - 2) . '-1')); $last_date = date('t.m.Y', strtotime(date('Y') . '-' . (($current_quarter * 3)) . '-1')); echo "

"; echo "
"; echo "Aktuell befinden wir uns im {$curQuarter}. Quartal von {$curyear}.
"; echo "Dieses geht vom {$first_date} bis {$last_date}
"; echo "Heute ist der {$curdate}.
"; echo "War die Chipkarte dieses Quartal noch nicht eingelesen, ist die Abholung nur in der Praxis möglich.

"; echo ""; echo "
"; echo "

"; echo ""; echo ""; echo "
"; for ($i = 1; $i <= 6; $i++) { echo "

"; echo ""; echo "
"; } } echo "

"; echo ""; echo "
"; echo "

"; echo "Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich.
"; echo "
"; echo "


"; echo ""; echo "


"; echo "
"; echo ""; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } // confirm -> summary if ($aktion === 'confirm') { $mode = (string)($_POST['mode'] ?? ''); $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); $category = (int)($_POST['category'] ?? 0); if ($requester_person_id <= 0 || $category <= 0 || $mode === '') { echo "
Ungültige Eingaben.
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } $anfrageartText = loadAnfrageartName($pdo, $category); echo "

Kontrollieren Sie Ihre Angaben!


"; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; if ($mode === 'rezept') { $karte = (string)($_POST['karte'] ?? ''); $abholung = (string)($_POST['abholung'] ?? ''); echo ""; echo ""; echo ""; echo ""; for ($i = 1; $i <= 6; $i++) { $med = (string)($_POST["Medikament{$i}"] ?? ''); echo ""; if ($med !== '') { echo ""; } } } $message = (string)($_POST['message'] ?? ''); echo ""; echo ""; echo "
Thema" . e($anfrageartText) . "
Karte" . e($karte) . "
Abholung" . e($abholung) . "
Medikament{$i}" . e($med) . "
Nachricht" . nl2br(e($message)) . "
"; echo ""; echo "
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } // submit -> insert + mail if ($aktion === 'submit') { $mode = (string)($_POST['mode'] ?? ''); $requester_person_id = (int)($_POST['requester_person_id'] ?? 0); $anforderungart = (int)($_POST['category'] ?? 0); $message = (string)($_POST['message'] ?? ''); if ($requester_person_id <= 0 || $anforderungart <= 0) { echo "
Ungültige Eingaben.
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } $nachricht = $message; $abholungnr = 0; if ($mode === 'rezept') { $karte = (string)($_POST['karte'] ?? ''); $abholung = (string)($_POST['abholung'] ?? ''); $abholungnr = ($abholung === 'Praxis') ? 1 : (($abholung === 'Apotheke') ? 2 : 0); if ($karte === 'Privat') { $karte = 'Privatrezept (Selbstzahler)'; } $nachricht = "Karte eingelesen: {$karte}
Abholungsort: {$abholung}
" . $nachricht; } $med = []; for ($i = 1; $i <= 6; $i++) { $med[$i] = trim((string)($_POST["Medikament{$i}"] ?? '')); } // duplicate check (best effort) $exists = false; try { $stmtDup = $pdo->prepare(" SELECT * FROM anfragen WHERE requester_person_id = :pid AND anforderungart = :art AND nachricht = :nachricht AND create_time >= DATE_SUB(NOW(), INTERVAL 7 DAY) "); $stmtDup->execute([ ':pid' => $requester_person_id, ':art' => $anforderungart, ':nachricht' => $nachricht, ]); $rows = $stmtDup->fetchAll(PDO::FETCH_ASSOC); $medFieldAliases = [ 1 => ['med1', 'medikament1', 'med_1'], 2 => ['med2', 'medikament2', 'med_2'], 3 => ['med3', 'medikament3', 'med_3'], 4 => ['med4', 'medikament4', 'med_4'], 5 => ['med5', 'medikament5', 'med_5'], 6 => ['med6', 'medikament6', 'med_6'], ]; foreach ($rows as $row) { $allMedsEqual = true; for ($i = 1; $i <= 6; $i++) { $dbValue = ''; foreach ($medFieldAliases[$i] as $fieldName) { if (array_key_exists($fieldName, $row)) { $dbValue = trim((string)($row[$fieldName] ?? '')); break; } } if ($dbValue !== $med[$i]) { $allMedsEqual = false; break; } } if ($allMedsEqual) { $exists = true; break; } } } catch (Throwable $t) { error_log('Duplicate check failed: ' . $t->getMessage()); $exists = false; } if ($exists) { echo "

Doppelte Anfrage


Ihre Anfrage wurde schon in unserem System gespeichert.
Sie haben die identische Anfrage schon in den letzten sieben Tagen eingereicht.
Bitte warten Sie auf die Verarbeitung Ihrer Anfrage.

"; echo "
"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } $hash = bin2hex(random_bytes(16)); $ordnungsid = ($mode === 'rezept') ? 1 : 2; try { $anfrageid = insertAnfrage($pdo, [ 'person_id' => $requester_person_id, 'anforderungart' => $anforderungart, 'med1' => $med[1], 'med2' => $med[2], 'med3' => $med[3], 'med4' => $med[4], 'med5' => $med[5], 'med6' => $med[6], 'nachricht' => $nachricht, 'hash' => $hash, 'ordnungsid' => $ordnungsid, 'abholort' => $abholungnr, 'sicherenachricht' => 1, 'checked' => 1, ]); $templateId = ($mode === 'rezept') ? 26 : 19; // IMPORTANT: Your SendMailMessageVorlage() must accept PDO after your migration. SendMailMessageVorlage($pdo, "3", $anfrageid, (string)$templateId); echo "

Nachricht abgeschickt!


Sie bekommen eine Bestätigung per E-Mail!
Überprüfen Sie auch Ihren Spam-Filter!

"; } catch (Throwable $t) { echo "

Speicherung nicht erfolgreich


Ihre Anfrage konnte nicht gespeichert werden.
"; echo "
Fehler: " . e($t->getMessage()) . "
"; } echo "


"; echo ""; include(__DIR__ . "/templates/footer.inc.php"); exit; } // fallback echo "
Unbekannte Aktion.
"; echo ""; include(__DIR__ . "/templates/footer.inc.php");