Files
2026-03-30 21:24:55 +02:00

2163 lines
68 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
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();
include __DIR__ . "/templates/header.inc.php";
$user = check_admin_user();
$internUserId = (int)$_SESSION['auth']['id'];
if (!$user) { echo "<div class='container main-container'><h3>Erst anmelden: <a href=login.php>Login</a></h3><br>";
include("templates/footer.inc.php");
exit; }
?>
<script src="/admin/js/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
<div class="container main-container">
<div style="display:flex; justify-content:space-between; align-items:flex-start; gap:20px; flex-wrap:wrap;">
<div>
<h2>Administration - Anfragen</h2>
Hallo <?php echo htmlentities($user['vorname']); ?>,<br>
Herzlich Willkommen im internen Bereich!<br><br>
</div>
<div style="width:200px;">
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>" id="formbenutzersuche" method="POST">
<input type="hidden" name="aktion" value="benutzersuche" />
<input type="hidden" name="userid_input" id="userid_input" />
<label>Benutzersuche Anfragen:</label>
<input type="text" id="user_input" name="skill_input" width="48" />
</form>
</div>
</div>
<?php
$aktion = $_POST["aktion"] ?? $_GET["aktion"] ?? '';
$artRequest = $_POST["art"] ?? $_GET["art"] ?? "1";
if ($aktion !== '') {
$_POST["aktion"] = $aktion;
}
if ($artRequest !== '') {
$_POST["art"] = $artRequest;
}
if(!check_worker()){
echo "<div class='container main-container'><h3>Erst anmelden: <a href=login.php>Login</a></h3><br>";
echo $_SESSION['userid'];
}else{
if ($aktion == "1") {
echo "<header><h2>Anfragen bearbeiten</h2></header>";
echo "</div><div class='container main-container' style='background-color:white;'>";
echo '<div style="float: left;padding: 20px;">
<form action="' . $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value="1">
<input type=hidden name=art value="1">
<input type=submit class="btn btn-primary btn-sm" value="Unbeantworte Anfragen">
</form>
</div>';
echo '<div style="float: left;padding: 20px;">
<form action="' . $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value="1">
<input type=hidden name=art value="2">
<input type=submit class="btn btn-primary btn-sm" value="Letzten 100 Anfragen">
</form>
</div>';
echo '<div style="float: left;padding: 20px;">
<form action="' . $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value="1">
<input type=hidden name=art value="3">
<input type=submit class="btn btn-primary btn-sm" value="Letzten 500 Anfragen">
</form>
</div>';
echo '<div style="float: left;padding: 20px;">
<form action="' . $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value="1">
<input type=hidden name=art value="4">
<input type=submit class="btn btn-primary btn-sm" value="Alle Anfragen">
</form>
</div>';
echo "<br><br><br><br>";
//<br><br><input type="button" class='btn btn btn-secondary' value="Zum Hauptmenü" onClick="location.href='index.php'"> <br>
?>
<?php
$art = $artRequest;
// Default
$sql = "
SELECT
a.*,
p.vorname, p.nachname, p.email, p.tele, p.geburtstag,
p.ort, p.plz, p.strasse,
aa.artname
FROM anfragen a
JOIN persons p ON a.requester_person_id = p.person_id
JOIN anfrageart aa ON a.anforderungart = aa.artid
";
$params = [];
switch ($art) {
case "1":
$sql .= " WHERE a.beantwortet = 0 AND (a.checked = 0 OR a.checked = 1)
ORDER BY a.create_time";
break;
case "2":
$sql .= " WHERE a.beantwortet IN (0,1)
ORDER BY a.create_time DESC
LIMIT 100";
break;
case "3":
$sql .= " WHERE a.beantwortet IN (0,1)
ORDER BY a.create_time DESC
LIMIT 500";
break;
case "4":
$sql .= " WHERE a.beantwortet IN (0,1)
ORDER BY a.create_time DESC";
break;
default:
$sql .= " WHERE a.beantwortet = 0 AND (a.checked = 0 OR a.checked = 1)
ORDER BY a.create_time";
$art = "1";
break;
}
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($art == "1"){
echo "<table width= 100% border='1' id='tableanfragen' class='display'>";
}else{
echo "<table width= 100% border='1' id='tableanfragendesc' class='display'>";
}
echo "<thead><tr><th>Person</th><th>Adresse</th><th>Anfrageart/Infos</th><th>Erstellung</th><th>Status</th><th>Aktion</th></tr></thead><tbody>";
foreach ($rows as $row) {
$anfrageid = $row["anfrageid"];
$userid = $row["userid"];
$checked = $row["checked"];
$workerid = $row["workerid"];
$date_created = $row["create_time"];
$update_time = $row["update_time"];
$vorname = $row["vorname"];
$nachname = $row["nachname"];
$mail = $row["email"];
$tel = $row["tele"];
$beantwortet = $row["beantwortet"];
$geburtstag = $row["geburtstag"];
$ausgabegeburstag = $geburtstag;
$ort = $row["ort"];
$plz = $row["plz"];
$strasse = $row["strasse"];
$nachricht = $row["nachricht"];
$medikamenteins = $row["medikament1"];
$medikamentzwei = $row["medikament2"];
$medikamentdrei = $row["medikament3"];
$medikamentvier = $row["medikament4"];
$medikamentfuenf = $row["medikament5"];
$medikamentsechs = $row["medikament6"];
$dateiname = $row["dateiname"];
$anfrageart = $row["artname"];
$ordnungsid = $row["ordnungsid"];
$ordnungsstring = GetOrdnungsid($ordnungsid);
$WeitereInfos= "";
$sicherenachricht = $row["sicherenachricht"];
if($sicherenachricht == "1"){
$WeitereInfos .= "Interne Anfrage<br>";
}else{
$WeitereInfos .= "Mailanfrage<br>";
}
if($medikamenteins){
$WeitereInfos .= "Medikament1: $medikamenteins<br>";
}
if($medikamentzwei){
$WeitereInfos .= "Medikament2: $medikamentzwei<br>";
}
if($medikamentdrei){
$WeitereInfos .= "Medikament3: $medikamentdrei<br>";
}
if($medikamentvier){
$WeitereInfos .= "Medikament4: $medikamentvier<br>";
}
if($medikamentfuenf){
$WeitereInfos .= "Medikament5: $medikamentfuenf<br>";
}
if($medikamentsechs){
$WeitereInfos .= "Medikament6: $medikamentsechs<br>";
}
if($nachricht){
$WeitereInfos .= "Nachricht: $nachricht";
}
if($dateiname){
$WeitereInfos .= "<br>Dateiname: $dateiname";
}
#$datumausgabe= date("Y-m-d H:i", strtotime($date_created ));
$currentDate = new DateTime($date_created);
$datumausgabe = $currentDate->format('Y-m-d H:i');
$ausgabeworker = GetWorkerName($workerid);
$farbe = GetStatusFarbe($checked);
$checkausgabe = GetStatus($checked);
$userausgabe = $vorname . " " . $nachname . "<br>" . $ausgabegeburstag;
$adresse = $plz . " " . $ort . "<br>" . $strasse ;
$adresse = $adresse;
echo "<tr style='background-color:". $farbe. ";'><td>$userausgabe <br> $mail <br>Tel:<a href='tel:".$tel."'>$tel</a></td><td>$adresse</td><td>$ordnungsstring - $anfrageart <br>$WeitereInfos</td><td>$datumausgabe</td><td>$update_time<br>$checkausgabe<br>$ausgabeworker</td><td>
<div style='float: left;margin:15px; height: 20px;'>
<form action='". $_SERVER["PHP_SELF"] ."' method=POST>
<input type=hidden name=aktion value=2>
<input type=hidden name=anfrageid value=$anfrageid>
<input type=submit class='btn btn-primary' value='Antworten'>
</form>
</div>
<div style='float: left;margin:15px; height: 20px;'>
<form action='". $_SERVER["PHP_SELF"] ."' method=POST>
<input type=hidden name=aktion value=20>
<input type=hidden name=anfrageid value=$anfrageid>
<input type=submit class='btn btn-primary' value='Telefonisch beantwortet'>
</form>
</div>
<div style='float: left;margin:15px; height: 20px;'>
<form action='". $_SERVER["PHP_SELF"] ."' method=POST>
<input type=hidden name=aktion value=8>
<input type=hidden name=anfrageid value=$anfrageid>
<input type=submit class='btn btn-primary' value='Löschen'>
</form>
</div>";
if($beantwortet){
echo "
<div style='float: left;margin:15px; height: 20px;'>
<form action='". $_SERVER["PHP_SELF"] ."' method=POST>
<input type=hidden name=aktion value=11>
<input type=hidden name=anfrageid value=$anfrageid>
<input type=submit class='btn btn-primary' value='Antwort einsehen'>
</form>
</div>
";
}
echo" </td></tr>
";
}
echo "</tbody></table>";
// Benutzer nachtragen
}else if (($_POST["aktion"] ?? '') == "2") {
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
if ($anfrageid <= 0) {
die("Ungültige Anfrage-ID");
}
$sql = "
SELECT
a.*,
p.vorname, p.nachname, p.email, p.tele, p.geburtstag,
p.ort, p.plz, p.strasse,
aa.artname
FROM anfragen a
INNER JOIN persons p ON a.requester_person_id = p.person_id
INNER JOIN anfrageart aa ON a.anforderungart = aa.artid
WHERE a.anfrageid = ?
LIMIT 1
";
$stmt = $pdo->prepare($sql);
$stmt->execute([$anfrageid]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
echo "Anfrage nicht gefunden.";
exit;
}
// Ticket und Antwort ansehen.
$abholort = $row["abholort"] ?? null;
$sicherenachricht = $row["sicherenachricht"] ?? null;
$anfrageid = $row["anfrageid"];
$checked = $row["checked"];
$workerid = $row["workerid"];
$antwortid = $row["antwortid"] ?? null;
$date_created = $row["create_time"];
$vorname = $row["vorname"];
$nachname = $row["nachname"];
$mail = $row["email"];
$tel = $row["tele"];
$geburtstag = $row["geburtstag"];
$ausgabegeburstag = $geburtstag;
$ort = $row["ort"];
$plz = $row["plz"];
$strasse = $row["strasse"];
$ordnungsid = $row["ordnungsid"];
$ordnungsstring = GetOrdnungsid($ordnungsid);
$nachricht = $row["nachricht"];
$medikamenteins = $row["medikament1"];
$medikamentzwei = $row["medikament2"];
$medikamentdrei = $row["medikament3"];
$medikamentvier = $row["medikament4"];
$medikamentfuenf = $row["medikament5"];
$medikamentsechs = $row["medikament6"];
$anfrageart = $row["artname"];
$antworttext = $row["antworttext"] ?? null;
$WeitereInfos = "";
if ($medikamenteins) $WeitereInfos .= "Medikament1: $medikamenteins<br>";
if ($medikamentzwei) $WeitereInfos .= "Medikament2: $medikamentzwei<br>";
if ($medikamentdrei) $WeitereInfos .= "Medikament3: $medikamentdrei<br>";
if ($medikamentvier) $WeitereInfos .= "Medikament4: $medikamentvier<br>";
if ($medikamentfuenf) $WeitereInfos .= "Medikament5: $medikamentfuenf<br>";
if ($medikamentsechs) $WeitereInfos .= "Medikament6: $medikamentsechs<br>";
if ($nachricht) $WeitereInfos .= "Nachricht: $nachricht";
#$datumausgabe= date("d.m.Y H:i", strtotime($date_created ));
$currentDate = new DateTime($date_created);
$datumausgabe = $currentDate->format('d.m.Y H:i');
$ausgabeworker = GetWorkerName($workerid);
$farbe = GetStatusFarbe($checked);
$checkausgabe = GetStatus($checked);
$userausgabe = $vorname . " " . $nachname;
$adresse = $plz . " " . $ort . ", " . $strasse ;
#$body = iconv('CP1252//IGNORE', 'UTF-8' , $antworttext);
echo "<b>Person:</b><br>$userausgabe <br> $mail <br><br><b>Anfrageinformationen:</b><br>$ordnungsstring - $anfrageart <br>$WeitereInfos<br><br>";
if($sicherenachricht == 1){
echo '<div class="alert alert-success" role="alert">Interne Anfrage - Sozialdaten könnten angegeben werden.</div>';
}else{
echo '<div class="alert alert-danger" role="alert">Mail Anfrage - Sozialdaten sollten nicht angegeben werden.</div>';
}
if($abholort == "1"){
$selectid = "20";
}elseif($abholort == "2"){
$selectid = "21";
}
echo "Wählen Sie die gewünschte Mailvorlage aus:<br><br>";
$stmt = $pdo->prepare("
SELECT name, templetid
FROM mailtemplates
WHERE mailbearbeitung = 1
ORDER BY name
");
$stmt->execute();
$templates = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<input name='aktion' type='hidden' value='3'>";
echo "<select class='form-control' name='templetid' id='templetid' onchange='templateUpdate()'>";
echo "<option value=''>Bitte auswählen</option>";
foreach ($templates as $row) {
$tid = trim((string)$row["templetid"]);
$nameRaw = (string)$row["name"];
$nameUtf8 = iconv('CP1252//IGNORE', 'UTF-8', $nameRaw);
if ($tid === "") continue;
$selected = (!empty($selectid) && (string)$selectid === $tid) ? " selected" : "";
echo "<option value='" . htmlspecialchars($tid, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . "'$selected>" .
htmlspecialchars($nameRaw, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') .
"</option>";
}
echo "</select><br><br>";
// E-Mail Vorlage laden
$templetid = $_POST["templetid"] ?? "";
$templetid = trim($templetid);
$body = $betreff = $name = "";
if ($templetid !== "") {
$stmt = $pdo->prepare("
SELECT betreff, body, name
FROM mailtemplates
WHERE templetid = ?
LIMIT 1
");
$stmt->execute([$templetid]);
$rowconfig = $stmt->fetch(PDO::FETCH_ASSOC);
if ($rowconfig) {
$body = $rowconfig["body"] ?? "";
$betreff = $rowconfig["betreff"] ?? "";
$name = $rowconfig["name"] ?? "";
// Nur wenn du WIRKLICH CP1252 in der DB hast:
// (bei utf8mb4 brauchst du das NICHT!)
#$name = iconv('CP1252//IGNORE', 'UTF-8', $name);
#$betreff = iconv('CP1252//IGNORE', 'UTF-8', $betreff);
#$body = iconv('CP1252//IGNORE', 'UTF-8', $body);
}
}
echo "<h1>E-Mail bearbeiten</h1><br>";
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
echo "Betreff:<br>";
echo "<input class='form-control' name=betreff type=text value='$betreff' id='betreff' onclick='checkTemplate()'><br>";
echo '<textarea height=400 name="body" id="trumbowyg-demo" ></textarea>';
echo "<input name=aktion type=hidden value=3>";
echo "<input name=anfrageid type=hidden value='". $_POST["anfrageid"] ."' id='anfrageid'><br><br>";
echo "<input type=submit class='btn btn-primary' value='Mail versenden'><br>";
echo '</form>';
echo "<br><br>";
echo "<br><br>";
ZuruckzumAnfrageOverView();
?>
<script type="text/javascript">
tinymce.init({
selector: '#mytextarea',
height: 800,
plugins: ' advcode casechange formatpainter linkchecker autolink lists checklist media pageembed table advtable ',
toolbar: 'checklist code table',
toolbar_mode: 'floating',
});
window.addEventListener("load",function(){
templateUpdate();
},false);
</script>
<?php
}else if (($_POST["aktion"] ?? '') == "3") {
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
$templetid = (int)($_POST["templetid"] ?? 0);
if ($anfrageid <= 0) {
die("Ungültige Anfrage-ID");
}
// 1) Empfänger + sicherenachricht laden
$stmt = $pdo->prepare("
SELECT acc.email, a.sicherenachricht
FROM anfragen a
LEFT JOIN persons acc ON acc.person_id = a.requester_person_id
WHERE a.anfrageid = :anfrageid
LIMIT 1
");
$stmt->execute([':anfrageid' => $anfrageid]);
$rowuser = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$rowuser) {
die("Anfrage nicht gefunden.");
}
$empfaenger = (string)$rowuser["email"];
$sicherenachricht = (int)$rowuser["sicherenachricht"];
// 2) Betreff + Body aus POST
// Du speicherst in der DB offenbar CP1252 (weil du später iconv auf CP1252 machst)
$betreff_cp1252 = $_POST["betreff"] ?? "";
$body_cp1252 = $_POST["body"] ?? "";
// 3) Anfrage updaten (mit prepared statement!)
$stmt = $pdo->prepare("
UPDATE anfragen
SET
beantwortet = 1,
checked = 10,
workerid = :workerid,
antwortid = :antwortid,
antworttext = :antworttext,
mailtime = :mailtime
WHERE anfrageid = :anfrageid
");
$ok = $stmt->execute([
':workerid' => (int)$user["id"],
':antwortid' => $templetid,
':antworttext' => $body_cp1252,
':mailtime' => date("Y-m-d H:i:s"),
':anfrageid' => $anfrageid,
]);
try {
// 1) Mail senden
$mailOk = false;
if ((int)$sicherenachricht === 1) {
SendMailMessageVorlage($pdo, "3", $anfrageid, "43"); // muss true/false liefern
$mailOk = true;
} else {
$mailOk = SendMailMessage($pdo, $empfaenger, $_POST["betreff"], $_POST["body"]); // true/false
}
if (!$mailOk) {
throw new RuntimeException("E-Mail konnte nicht versendet werden.");
}
// 2) DB erst jetzt updaten
$stmt = $pdo->prepare("
UPDATE anfragen
SET beantwortet = 1,
checked = 10,
workerid = :workerid,
antwortid = :antwortid,
antworttext = :antworttext,
mailtime = :mailtime
WHERE anfrageid = :anfrageid
");
$stmt->execute([
':workerid' => (int)$user["id"],
':antwortid' => (int)$templetid,
':antworttext' => $body_cp1252,
':mailtime' => date("Y-m-d H:i:s"),
':anfrageid' => (int)$anfrageid,
]);
echo "<h3>Mail wurde versendet</h3>";
} catch (Throwable $e) {
echo "<h3>Fehler</h3>";
echo "E-Mailversand fehlgeschlagen es wurde nichts gespeichert.<br>";
}
}else if (($_POST["aktion"] ?? '') == "4") {
echo "<h3>Urlaubsplanung</h3>";
echo "Während des Urlaubs können keine Anfragen an das Praxis Team gestellt werden.<br><br>";
echo '<div class="alert alert-danger" role="alert"><h4>Wichtige Hinweise</h4>
Nur an Tagen, die hier aufgeführt werden, können keine Anfragen gestellt werden.<br>
<br>
<b>Telefonanlage</b><br>
Die Telefonanlage wird auch über dieses Formular gesteuert.<br><br>
<b>Überprüfung</b><br>
Bitte die Setzung für die Telefonanlage hier überprüfen:<br>
<a href="https://praxis-creutzburg.de/ical/urlaub_generator.php" target="_blank">Terminüberprüfung</a>
</div>';
try {
$heute = date("Y-m-d");
$stmt = $pdo->prepare("
SELECT urlaubid, start, ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl
FROM urlaub
WHERE ende >= :heute
ORDER BY start ASC
");
$stmt->execute([':heute' => $heute]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<h3>Aktuell gibt es folgende Urlaubseinträge</h3>";
echo "Soll der Urlaub deaktiviert / gelöscht werden, dann das Anfangs- und Enddatum in die Vergangenheit legen und den Eintrag speichern.<br><br>";
echo "<h4>Eintragungshinweis</h4>";
echo "Bei der Einrichtung bedenken, dass freie Tage (Wochenende, Feiertage) nicht erkannt werden. <br>
So sollten Sie bei Urlaub ab Montag hier den Starttermin auf Freitag oder Samstag stellen. <br>
Gleiches gilt für ein Ende an einem Freitag. Tragen Sie dann hier als Ende Sonntag ein.<br><br><br>";
echo '<form action="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '" method="POST">';
foreach ($rows as $row) {
$start = (string)$row["start"];
$ende = (string)$row["ende"];
$vertretung = (string)$row["vertretung"];
$vertretertelefon = (string)$row["vertretertelefon"];
$vertreteradresse = (string)$row["vertreteradresse"];
$vertreterurl = (string)$row["vertreterurl"];
$urlaubid = (int)$row["urlaubid"];
echo "Start: <input class='form-control' name='Starttime[]' type='date' value='" . htmlspecialchars($start, ENT_QUOTES, 'UTF-8') . "'>
Ende: <input class='form-control' name='Endetime[]' type='date' value='" . htmlspecialchars($ende, ENT_QUOTES, 'UTF-8') . "'><br>
Vertretung: <input class='form-control' name='vertretung[]' type='text' required value='" . htmlspecialchars($vertretung, ENT_QUOTES, 'UTF-8') . "'>";
echo "<br>Vertretung Telefon: <input class='form-control' name='vertretertelefon[]' type='text' required value='" . htmlspecialchars($vertretertelefon, ENT_QUOTES, 'UTF-8') . "'>
<br>Vertretung Adresse: <input class='form-control' name='vertreteradresse[]' type='text' required value='" . htmlspecialchars($vertreteradresse, ENT_QUOTES, 'UTF-8') . "'>";
echo "<br>Vertretung Webseite: <input class='form-control' name='vertreterurl[]' type='text' required value='" . htmlspecialchars($vertreterurl, ENT_QUOTES, 'UTF-8') . "'>";
echo "<input name='urlaubid[]' type='hidden' value='" . $urlaubid . "'><br>";
}
echo '<div id="neuerUrlaub"></div>';
echo "<br><br>";
echo "<input name='aktion' type='hidden' value='5'>";
// Fix: href="javascript:..." war falsch geschrieben (fehlendes =)
echo '<a class="btn btn-primary" href="javascript:void(0);" onclick="AddneueTermine()">Neuer Zeitslot</a>';
} catch (PDOException $e) {
// Kein echo vom SQL direkt ins Frontend in Prod aber zum Debuggen ok:
die("Datenbankfehler: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));
}
echo "<br><br><input type=submit class='btn btn-primary' name=eintragspeichern value='Einträge speichern'></form>";
}else if (($_POST["aktion"] ?? '') == "5") {
// Termine in DB speichern.
$i =0;
$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] ?? ''));
if ($vertretung === '' || $vertretertelefon === '' || $vertreteradresse === '' || $vertreterurl === '') {
throw new RuntimeException("Bitte alle Vertreterinformationen fuer jeden Urlaubseintrag vollstaendig ausfuellen.");
}
$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++;
}
$pdo->commit();
} catch (Throwable $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
throw $e;
}
echo "Einträge wurden in der Datenbank gespeichert!<br><br>";
}else if (($_POST["aktion"] ?? '') == "6") {
echo "<h3>Notfallsprechstunde</h3>";
echo "Während der Notfallsprechstunde gibt es einen Hinweisfeld auf der Hauptseite, aber es können noch Anfragen an das Praxis Team gestellt werden.<br>";
echo "Wird Urlaub aktiviert, dann gibt es keinen Hinweis auf die Notfallsprechstunde<br>";
// Check connection
try {
$heute = date("Y-m-d");
$stmt = $pdo->prepare("
SELECT *
FROM notfallsprechstunde
WHERE ende >= :heute
ORDER BY ende ASC
");
$stmt->execute([':heute' => $heute]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("Datenbankfehler: " . $e->getMessage());
}
echo "<h3>Aktuell gibt es folgende Einträge für die Notfallsprechstunde</h3>";
echo "Soll die Notfallsprechstunde deaktiviert / gelöscht werden, dann das Anfangs- und Enddatum in die Vergangenheit legen und den Eintrag speichern.<br><br><br>";
echo '<form action="' . htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8') . '" method="POST">';
foreach ($rows as $row) {
$start = $row["start"];
$ende = $row["ende"];
$hinweis = $row["hinweis"];
$notfallid = (int)$row["notfallid"];
echo "<h3>Termin " . htmlspecialchars($start, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($ende, ENT_QUOTES, 'UTF-8') . "</h3>";
echo "Start: <input class='form-control' name='Starttime[]' type='date' value='" . htmlspecialchars($start, ENT_QUOTES, 'UTF-8') . "'> ";
echo "Ende: <input class='form-control' name='Endetime[]' type='date' value='" . htmlspecialchars($ende, ENT_QUOTES, 'UTF-8') . "'><br>";
echo "<br>Hinweis: (Dieser Hinweis wird eins zu eins auf der Hauptseite angezeigt!):<br>";
echo "<textarea height='300' name='hinweis[]' id='trumbowyg-demo'>" . htmlspecialchars($hinweis, ENT_QUOTES, 'UTF-8') . "</textarea>";
echo "<input name='notfallid[]' type='hidden' value='" . $notfallid . "'><br>";
}
echo "<div id='neuerUrlaub'></div>";
echo "<br><br>";
echo "<input name='aktion' type='hidden' value='7'>";
echo '<a class="btn btn-primary" href="javascript:void(0);" onclick="AddneueTermineNotfall()">Neuer Zeitslot</a>';
echo "<br><br><input type=submit class='btn btn-primary' name=eintragspeichern value='Einträge speichern'></form>";
}else if (($_POST["aktion"] ?? '') == "7") {
// Termine in DB speichern.
try {
$pdo->beginTransaction();
$insertStmt = $pdo->prepare("
INSERT INTO notfallsprechstunde (start, ende, hinweis)
VALUES (:start, :ende, :hinweis)
");
$updateStmt = $pdo->prepare("
UPDATE notfallsprechstunde
SET start = :start,
ende = :ende,
hinweis = :hinweis
WHERE notfallid = :notfallid
");
foreach (($_POST['Starttime'] ?? []) as $i => $start) {
$start = (string)$start;
$ende = (string)($_POST['Endetime'][$i] ?? '');
$hinweis = (string)($_POST['hinweis'][$i] ?? '');
$notfallid = (int)($_POST['notfallid'][$i] ?? 0);
// Skip leere / ungültige Datumseinträge
if ($start === '' || $start === '0000-00-00') {
continue;
}
if ($notfallid === 0) {
$insertStmt->execute([
':start' => $start,
':ende' => $ende,
':hinweis' => $hinweis,
]);
} else {
$updateStmt->execute([
':start' => $start,
':ende' => $ende,
':hinweis' => $hinweis,
':notfallid' => $notfallid,
]);
}
}
$pdo->commit();
echo "Einträge wurden in der Datenbank gespeichert!<br><br>";
} catch (PDOException $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
die("Fehler beim Eintragen in der Datenbank: " . $e->getMessage());
}
echo' <form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=6>
<input type=submit class="btn btn-primary" value="Zurück">
</form>';
}
else if (($_POST["aktion"] ?? '') == "8") {
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
$stmt = $pdo->prepare("
SELECT *
FROM anfragen a
INNER JOIN persons p ON p.person_id = a.requester_person_id
WHERE a.anfrageid = :anfrageid
LIMIT 1
");
$stmt->execute([
':anfrageid' => $anfrageid
]);
$rowtime = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$rowtime) {
die("Anfrage nicht gefunden");
}
$vorname = $rowtime["vorname"];
$nachname = $rowtime["nachname"];
$userausgabe = $vorname . " " . $nachname;
echo "Name:<br>$userausgabe<br>Anforderung: $impfstofftext<br>";
echo "Wollen Sie wirklich diesen Eintrag löschen?<br>Dieses ist nicht rückgängig zu machen!<br>Dann bestätigen Sie die Abmeldung:<br>";
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
echo '<input type="hidden" name="aktion" id="aktion" value="9" />';
echo '<input type="hidden" name="anfrageid" id="anfrageid" value="'. $anfrageid .'" /><br>';
echo '<input type="submit" class="btn btn-primary" id="submitbox" value="Anforderung löschen (mit Mail)" />';
echo "<br>";
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
echo '<input type="hidden" name="aktion" id="aktion" value="10" />';
echo '<input type="hidden" name="anfrageid" id="anfrageid" value="'. $anfrageid .'" /><br>';
echo '<input type="submit" class="btn btn-primary" id="submitbox" value="Anforderung löschen (ohne Mail)" />';
echo "</form>";
echo "<br><br>";
echo "<br><br>";
ZuruckzumAnfrageOverView();
// Benutzer absagen bestätigen?
}else if (($_POST["aktion"] ?? '') == "9") {
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
if ($anfrageid <= 0) {
die("Ungültige Anfrage-ID");
}
try {
$pdo->beginTransaction();
// sicherstellen, dass Anfrage existiert
$stmt = $pdo->prepare("SELECT anfrageid FROM anfragen WHERE anfrageid = :anfrageid LIMIT 1");
$stmt->execute([':anfrageid' => $anfrageid]);
if (!$stmt->fetch(PDO::FETCH_ASSOC)) {
throw new RuntimeException("Anfrage nicht gefunden");
}
// Update vorbereiten/ausführen
$stmt = $pdo->prepare("
UPDATE anfragen
SET beantwortet = 1,
checked = 30,
workerid = :workerid,
antwortid = 0
WHERE anfrageid = :anfrageid
");
$stmt->execute([
':workerid' => (int)($user["id"] ?? 0),
':anfrageid' => $anfrageid,
]);
// Mail senden (muss true liefern oder Exception werfen)
$mailOk = SendMailMessageVorlage($pdo, "3", $anfrageid, "5");
$mailOk = true;
if ($mailOk !== true) {
throw new RuntimeException("E-Mailversand fehlgeschlagen");
}
$pdo->commit();
echo "<h4>Die Anfrage wurde erfolgreich gelöscht!</h4><br>";
echo "Der Kunde erhält gleich eine schriftliche Bestätigung per E-Mail<br>";
} catch (Throwable $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
echo "<h4>Fehler:</h4> " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');
}
echo "<br>";
echo "<br><br><br>";
ZuruckzumAnfrageOverView();
//Termin für den Benutzerraussuchen
}else if (($_POST["aktion"] ?? '') == "10") {
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
if ($anfrageid <= 0) {
die("Ungültige Anfrage-ID");
}
// 1) Anfrage + Person laden (JOIN persons statt user)
$stmt = $pdo->prepare("
SELECT
a.anfrageid,
a.checked,
a.timeid,
a.requester_person_id,
p.vorname,
p.nachname,
p.mail,
p.tele,
p.jahrgang
FROM anfragen a
INNER JOIN persons p ON p.person_id = a.requester_person_id
WHERE a.anfrageid = :anfrageid
LIMIT 1
");
$stmt->execute([':anfrageid' => $anfrageid]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
die("Anfrage nicht gefunden");
}
$requesterPersonId = (int)$row["requester_person_id"];
$checked = (int)$row["checked"];
$timeid = $row["timeid"]; // kann NULL sein
$vorname = $row["vorname"];
$nachname = $row["nachname"];
$mail = $row["mail"];
$tel = $row["tele"];
$jahrgang = $row["jahrgang"];
$userausgabe = $vorname . " " . $nachname;
// Debug wie vorher (falls du es noch brauchst)
echo htmlspecialchars((string)$timeid, ENT_QUOTES, 'UTF-8');
// 2) Anfrage “löschen/abschließen” (ohne Mail)
$stmt = $pdo->prepare("
UPDATE anfragen
SET beantwortet = 1,
checked = 31,
workerid = :workerid,
antwortid = 0
WHERE anfrageid = :anfrageid
");
$ok = $stmt->execute([
':workerid' => (int)($user["id"] ?? 0),
':anfrageid' => $anfrageid,
]);
if ($ok) {
echo "<h4>Der Termin wurde erfolgreich gelöscht!</h4><br>";
echo "Der Kunde erhält keine schriftliche Bestätigung per E-Mail<br><br><br>";
} else {
echo "<h4>Fehler beim Update.</h4>";
}
echo "<br><br><br>";
ZuruckzumAnfrageOverView();
}else if (($_POST["aktion"] ?? '') == "11") {
$anfrageid_post = (int)($_POST["anfrageid"] ?? 0);
if ($anfrageid_post <= 0) {
die("Ungültige Anfrage-ID");
}
$stmt = $pdo->prepare("
SELECT
a.anfrageid,
a.checked,
a.workerid,
a.antwortid,
a.antworttext,
a.create_time,
a.ordnungsid,
a.nachricht,
a.medikament1,
a.medikament2,
a.sicherenachricht,
a.abholort,
p.person_id,
p.vorname,
p.nachname,
p.email,
p.tele,
p.geburtstag,
p.ort,
p.plz,
p.strasse,
aa.artname AS anfrageart_name
FROM anfragen a
INNER JOIN persons p ON p.person_id = a.requester_person_id
INNER JOIN anfrageart aa ON a.anforderungart = aa.artid
WHERE a.anfrageid = :anfrageid
LIMIT 1
");
$stmt->execute([':anfrageid' => $anfrageid_post]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$row) {
die("Anfrage nicht gefunden.");
}
/* --- Werte aus DB --- */
$anfrageid = (int)$row["anfrageid"];
$checked = (int)$row["checked"];
$workerid = (int)$row["workerid"];
$antwortid = (int)($row["antwortid"] ?? 0);
$dateCreated = $row["create_time"] ?? null;
$vorname = $row["vorname"] ?? "";
$nachname = $row["nachname"] ?? "";
$mail = $row["email"] ?? "";
$tel = $row["tele"] ?? "";
$geburtstag = $row["geburtstag"] ?? "";
$ausgabegeburstag = $geburtstag;
$ort = $row["ort"] ?? "";
$plz = $row["plz"] ?? "";
$strasse = $row["strasse"] ?? "";
$ordnungsid = $row["ordnungsid"] ?? null;
$ordnungsstring = GetOrdnungsid($ordnungsid);
$nachricht = $row["nachricht"] ?? "";
$medikamenteins = $row["medikament1"] ?? "";
$medikamentzwei = $row["medikament2"] ?? "";
$anfrageart = $row["anfrageart_name"] ?? "";
$antworttext = $row["antworttext"] ?? "";
/* --- Anzeige-Strings --- */
$WeitereInfos = "";
if (!empty($medikamenteins)) {
$WeitereInfos .= "Medikament1: " . htmlspecialchars($medikamenteins, ENT_QUOTES, 'UTF-8') . "<br>";
}
if (!empty($medikamentzwei)) {
$WeitereInfos .= "Medikament2: " . htmlspecialchars($medikamentzwei, ENT_QUOTES, 'UTF-8') . "<br>";
}
if (!empty($nachricht)) {
// Wenn $nachricht HTML enthalten darf: NICHT htmlspecialchars verwenden!
// Sonst XSS-Risiko. Dann lieber erlaubte Tags mit strip_tags whitelist.
$WeitereInfos .= "Nachricht: " . nl2br(htmlspecialchars($nachricht, ENT_QUOTES, 'UTF-8'));
}
$datumausgabe = "";
if (!empty($dateCreated)) {
$currentDate = new DateTime($dateCreated);
$datumausgabe = $currentDate->format('d.m.Y H:i');
}
$ausgabeworker = GetWorkerName($workerid);
$farbe = GetStatusFarbe($checked);
$checkausgabe = GetStatus($checked);
$userausgabe = trim($vorname . " " . $nachname);
$adresse = trim($plz . " " . $ort . ", " . $strasse);
/* --- Betreff + Body der Antwortvorlage laden (optional) --- */
$betreff = "";
$templateBody = "";
if ($antwortid > 0) {
$stmtT = $pdo->prepare("
SELECT betreff, body
FROM mailtemplates
WHERE templetid = :tid
LIMIT 1
");
$stmtT->execute([':tid' => $antwortid]);
$tpl = $stmtT->fetch(PDO::FETCH_ASSOC);
if ($tpl) {
// DB ist bei dir oft CP1252 gespeichert:
$betreff = iconv('CP1252//IGNORE', 'UTF-8', $tpl["betreff"] ?? "");
$templateBody = iconv('CP1252//IGNORE', 'UTF-8', $tpl["body"] ?? "");
}
}
// Falls du statt Template den gespeicherten Antworttext anzeigen willst:
$body = iconv('CP1252//IGNORE', 'UTF-8', $antworttext);
/* --- Output --- */
echo "<b>Person:</b><br>" .
htmlspecialchars($userausgabe, ENT_QUOTES, 'UTF-8') . "<br>" .
htmlspecialchars($mail, ENT_QUOTES, 'UTF-8') . "<br>" .
htmlspecialchars($tel, ENT_QUOTES, 'UTF-8') . "<br><br>" .
"<b>Adresse:</b><br>" .
htmlspecialchars($adresse, ENT_QUOTES, 'UTF-8') . "<br><br>" .
"<b>Anfrageinformationen:</b><br>" .
htmlspecialchars($ordnungsstring, ENT_QUOTES, 'UTF-8') . " - " .
htmlspecialchars($anfrageart, ENT_QUOTES, 'UTF-8') . "<br>" .
$WeitereInfos . "<br><br>" .
"<b>Status der Anfrage:</b><br>" .
htmlspecialchars($checkausgabe, ENT_QUOTES, 'UTF-8') . " - " .
htmlspecialchars($datumausgabe, ENT_QUOTES, 'UTF-8') . "<br>" .
htmlspecialchars($ausgabeworker, ENT_QUOTES, 'UTF-8');
echo "<br><br>";
echo "<b>Vorlage der Antwortmail:</b><br>";
echo "Betreff: " . htmlspecialchars($betreff, ENT_QUOTES, 'UTF-8') . "<br>";
echo "Inhalt:<br>";
echo $body . "<br>"; // bewusst NICHT escaped, wenn HTML im Body erlaubt ist
echo "<br><br>";
ZuruckzumAnfrageOverView();
}else if (($_POST["aktion"] ?? '') == "benutzersuche") {
#echo '<pre>';
#print_r($_POST);
#echo '</pre>';
echo "<h3>Anfragenübersicht</h3>";
if(is_null($_POST["userid_input"]) || $_POST["userid_input"] == "" ){
echo "Sie haben keinen Benutzer über die Autovervollständigung ausgewählt.<br>
Deswegen wählen Sie aus diesem Drop-Down-Menü aus.<br><br>";
$term = trim(strip_tags($_POST["skill_input"]));
$like = "%" . $term . "%";
$sql = "
SELECT person_id, vorname, nachname, geburtstag, email, tele
FROM persons
WHERE vorname LIKE :term
OR nachname LIKE :term
OR email LIKE :term
OR tele LIKE :term
ORDER BY nachname, vorname
";
$stmt = $pdo->prepare($sql);
$stmt->execute([':term' => $like]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<form action='" . $_SERVER['PHP_SELF'] . "' id='formbenutzersuche' method='POST'>";
echo '<input type="hidden" name="aktion" value="benutzersuche" />';
echo '<label>Benutzersuche:</label>';
echo '<select class="form-control" name="userid_input" required>';
foreach ($rows as $row) {
$person_id = $row['person_id'];
$name = htmlspecialchars($row['nachname'], ENT_QUOTES, 'UTF-8');
$vorname = htmlspecialchars($row['vorname'], ENT_QUOTES, 'UTF-8');
$geburtstag = htmlspecialchars($row['geburtstag'], ENT_QUOTES, 'UTF-8');
echo "<option value='$person_id'>$name, $vorname - $geburtstag</option>";
}
echo '</select>';
echo "<br><br>";
echo "<input type=submit class='btn btn-primary' value='Benutzer aufrufen'>";
echo "</form>";
}else{
?>
<p>Hier finden Sie die letzten 20 Anfragen des Benutzers.</p>
<?php
$personId = (int)($_POST["userid_input"] ?? 0);
if ($personId <= 0) {
die("Ungültige Person-ID");
}
$stmtPerson = $pdo->prepare("
SELECT
person_id,
vorname,
nachname,
email,
tele,
geburtstag
FROM persons
WHERE person_id = :pid
LIMIT 1
");
$stmtPerson->execute([':pid' => $personId]);
$rowperson = $stmtPerson->fetch(PDO::FETCH_ASSOC);
if (!$rowperson) {
die("Person nicht gefunden.");
}
$vorname = $rowperson["vorname"] ?? "";
$nachname = $rowperson["nachname"] ?? "";
$mail = $rowperson["email"] ?? "";
$tel = $rowperson["tele"] ?? "";
$geburtstag = $rowperson["geburtstag"] ?? "";
$ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null)
? $jahrgang
: $geburtstag;
echo "Benutzer " . htmlspecialchars($vorname, ENT_QUOTES, 'UTF-8') . " " . htmlspecialchars($nachname, ENT_QUOTES, 'UTF-8') . "<br><br>";
$stmt = $pdo->prepare("
SELECT
a.anfrageid,
a.requester_person_id,
a.checked,
a.workerid,
a.create_time,
a.nachricht,
a.ordnungsid,
a.medikament1,
a.medikament2,
a.medikament3,
a.medikament4,
a.medikament5,
a.medikament6,
aa.artname AS anfrageart_name,
p.vorname,
p.nachname,
p.email,
p.tele,
p.geburtstag,
p.ort,
p.plz,
p.strasse
FROM anfragen a
INNER JOIN persons p ON p.person_id = a.requester_person_id
INNER JOIN anfrageart aa ON aa.artid = a.anforderungart
WHERE a.requester_person_id = :pid
ORDER BY a.create_time DESC
LIMIT 20
");
$stmt->execute([':pid' => $personId]);
echo '<table class="table">';
echo '<thead><tr><th scope="col">Person/Adresse</th><th scope="col">Anfrage/Status</th><th scope="col">Aktion</th></tr></thead>';
echo "<tbody>";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$anfrageid = (int)$row["anfrageid"];
$checked = (int)$row["checked"];
$workerid = (int)$row["workerid"];
$dateCreated = $row["create_time"] ?? "";
$vorname = $row["vorname"] ?? "";
$nachname = $row["nachname"] ?? "";
$mail = $row["email"] ?? "";
$tel = $row["tele"] ?? "";
$geburtstag = $row["geburtstag"] ?? "";
$jahrgang = $row["jahrgang"] ?? "";
$ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null)
? $jahrgang
: $geburtstag;
$ort = $row["ort"] ?? "";
$plz = $row["plz"] ?? "";
$strasse = $row["strasse"] ?? "";
$nachricht = $row["nachricht"] ?? "";
$med1 = $row["medikament1"] ?? "";
$med2 = $row["medikament2"] ?? "";
$med3 = $row["medikament3"] ?? "";
$med4 = $row["medikament4"] ?? "";
$med5 = $row["medikament5"] ?? "";
$med6 = $row["medikament6"] ?? "";
$anfrageart = $row["anfrageart_name"] ?? "";
$ordnungsid = $row["ordnungsid"] ?? null;
$ordnungsstring = GetOrdnungsid($ordnungsid);
$WeitereInfos = "";
if (!empty($med1)) $WeitereInfos .= "Medikament1: " . htmlspecialchars($med1, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($med2)) $WeitereInfos .= "Medikament2: " . htmlspecialchars($med2, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($med3)) $WeitereInfos .= "Medikament3: " . htmlspecialchars($med3, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($med4)) $WeitereInfos .= "Medikament4: " . htmlspecialchars($med4, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($med5)) $WeitereInfos .= "Medikament5: " . htmlspecialchars($med5, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($med6)) $WeitereInfos .= "Medikament6: " . htmlspecialchars($med6, ENT_QUOTES, 'UTF-8') . "<br>";
if (!empty($nachricht)) {
$WeitereInfos .= "Nachricht: " . nl2br(htmlspecialchars($nachricht, ENT_QUOTES, 'UTF-8'));
}
$userausgabe = trim($vorname . " " . $nachname) . "<br>" . htmlspecialchars((string)$ausgabegeburstag, ENT_QUOTES, 'UTF-8');
$adresse = trim($plz . " " . $ort . "<br>" . $strasse);
$farbe = GetStatusFarbe($checked);
$checkausgabe = GetStatus($checked);
echo "<tr>";
echo "<td>"
. htmlspecialchars(trim($vorname . " " . $nachname), ENT_QUOTES, 'UTF-8')
. "<br>" . htmlspecialchars($mail, ENT_QUOTES, 'UTF-8')
. "<br>Tel: <a href='tel:" . htmlspecialchars($tel, ENT_QUOTES, 'UTF-8') . "'>" . htmlspecialchars($tel, ENT_QUOTES, 'UTF-8') . "</a>"
. "<br>" . htmlspecialchars($plz . " " . $ort . ", " . $strasse, ENT_QUOTES, 'UTF-8')
. "</td>";
echo "<td>"
. htmlspecialchars($ordnungsstring, ENT_QUOTES, 'UTF-8') . " - " . htmlspecialchars($anfrageart, ENT_QUOTES, 'UTF-8')
. "<br><br>" . $WeitereInfos
. "<br><br><span style='background-color:" . htmlspecialchars($farbe, ENT_QUOTES, 'UTF-8') . "; padding:2px 6px;'>"
. htmlspecialchars($checkausgabe, ENT_QUOTES, 'UTF-8')
. "</span>"
. "<br>" . htmlspecialchars($dateCreated, ENT_QUOTES, 'UTF-8')
. "</td>";
echo "<td>
<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>
<input type='hidden' name='aktion' value='11'>
<input type='hidden' name='anfrageid' value='" . (int)$anfrageid . "'>
<button type='submit' class='btn btn-primary btn-sm'>Antwort einsehen</button>
</form>
</td>";
echo "</tr>";
}
echo "</tbody></table>";
//echo "</div>";
echo "<br><br>";
echo "<h3>Impfübersicht Benutzer</h3>";
$personId = (int)($_POST["userid_input"] ?? 0);
if ($personId <= 0) {
die("Ungültige Person-ID");
}
// Person laden (persons statt user)
$stmtPerson = $pdo->prepare("
SELECT
person_id,
vorname,
nachname,
email,
tele,
geburtstag
FROM persons
WHERE person_id = :pid
LIMIT 1
");
$stmtPerson->execute([':pid' => $personId]);
$rowperson = $stmtPerson->fetch(PDO::FETCH_ASSOC);
if (!$rowperson) {
die("Person nicht gefunden.");
}
$vorname = $rowperson["vorname"] ?? "";
$nachname = $rowperson["nachname"] ?? "";
$mail = $rowperson["email"] ?? "";
$tel = $rowperson["tele"] ?? "";
$geburtstag = $rowperson["geburtstag"] ?? "";
$ausgabegeburstag = ($geburtstag === "0000-00-00" || $geburtstag === "" || $geburtstag === null)
? $jahrgang
: $geburtstag;
echo "Benutzer " . htmlspecialchars($vorname, ENT_QUOTES, "UTF-8") . " " . htmlspecialchars($nachname, ENT_QUOTES, "UTF-8") . "<br>";
// Umbuchen-Form (person_id weitergeben)
echo "
<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>
<input type='hidden' name='aktion' value='umbuchen'>
<input type='hidden' name='person_id' value='" . (int)$personId . "'>
<input type='submit' class='btn btn-primary btn-sm' value='Neuer Termin'>
</form>
";
// --- Impftermine zählen (prepared statt query)
$sqlImpftermine = "
SELECT
it.*,
ts.*
FROM impftermin it
INNER JOIN timeslots ts ON it.timeid = ts.timeid
WHERE it.userid = :pid
ORDER BY ts.date DESC, ts.start
";
$stmt = $pdo->prepare($sqlImpftermine);
$stmt->execute([':pid' => $personId]);
$count = $stmt->rowCount();
echo "<h4>Impftermine</h4>";
if ($count == 0) {
echo "Der Benutzer hat keine Impftermine.<br><br>";
} else {
// Wenn deine Funktion SQL-String erwartet:
// Achtung: dann müsste ShowImpfTerminTab intern selbst mit PDO arbeiten
// Besser: du gibst ihr $personId und lässt sie selber abfragen.
$sqlImpftermine = "
SELECT
it.*,
ts.*
FROM impftermin it
INNER JOIN timeslots ts ON it.timeid = ts.timeid
WHERE it.userid = $personId
ORDER BY ts.date DESC, ts.start
";
ShowImpfTerminTab($sqlImpftermine); // falls du es so erweitern kannst
// Alternativ (wenn ShowImpfTerminTab nur String kann): du musst die Funktion anpassen.
}
echo "<br><br><h4>Warteliste</h4>";
$sqlWarte = "
SELECT *
FROM warteliste
WHERE userid = :pid
";
$stmtW = $pdo->prepare($sqlWarte);
$stmtW->execute([':pid' => $personId]);
$countW = $stmtW->rowCount();
if ($countW == 0) {
echo "Der Benutzer hat keinen Wartelistenplatz.<br><br>";
} else {
ShowWartelisteTab($sqlWarte, [':pid' => $personId]); // falls du es so erweitern kannst
}
}
}else if (($_POST["aktion"] ?? '') == "12") {
// Auswertung von Anfragen
echo "Hier wird eine Auswertung über alle Tickets angezeigt:<br><br>";
$today = date('Y-m-d');
#$siebentagezurueck = date('Y-m-d 00:00:00', strtotime($today . ' -7 day'));
$currentDate = new DateTime();
//Use the subtract function to subtract a DateInterval
$yesterdayTime = $currentDate->sub(new DateInterval('P7D'));
//Get yesterday date
$siebentagezurueck = $yesterdayTime->format('Y-m-d 00:00:00');
$currentDate = new DateTime();
//Use the subtract function to subtract a DateInterval
$yesterdayTime = $currentDate->sub(new DateInterval('P1Y'));
//Get yesterday date
$letzterjahrstring = $yesterdayTime->format('Y-m-d 00:00:00');
$currentDate = new DateTime();
//Use the subtract function to subtract a DateInterval
$yesterdayTime = $currentDate->sub(new DateInterval('P1M'));
//Get yesterday date
$letztermonatstring = $yesterdayTime->format('Y-m-d 00:00:00');
#$letztermonatstring = date('Y-m-01 00:00:00', strtotime($today . ' - 1 month'));
#$letzterjahrstring = date('Y-01-01 00:00:00', strtotime($today . ' - 1 year'));
$diesesjahrzurueck = date('Y-01-01 00:00:00');
$diesesmonatstring = date('Y-m-01 00:00:00');
$sql = "
SELECT
u.vorname,
u.nachname,
a.workerid,
COUNT(*) AS alltimenum,
SUM(CASE WHEN a.create_time >= :diesesjahrzurueck THEN 1 ELSE 0 END) AS allyeartime,
SUM(CASE WHEN a.create_time >= :diesesmonatstring THEN 1 ELSE 0 END) AS thismonthtime,
SUM(CASE WHEN a.create_time >= :letzterjahrstring AND a.create_time <= :diesesjahrzurueck THEN 1 ELSE 0 END) AS lastyeartime,
SUM(CASE WHEN a.create_time >= :letztermonatstring AND a.create_time <= :diesesmonatstring THEN 1 ELSE 0 END) AS lastmonthtime,
SUM(CASE WHEN a.create_time >= :siebentagezurueck THEN 1 ELSE 0 END) AS lastweektime,
MIN(a.create_time) AS begintime
FROM anfragen a
INNER JOIN users_worker uw ON a.workerid = uw.workerid
INNER JOIN users u ON uw.userid = u.id
WHERE a.workerid != 0
GROUP BY a.workerid
ORDER BY u.nachname, u.vorname
";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':diesesjahrzurueck' => $diesesjahrzurueck,
':diesesmonatstring' => $diesesmonatstring,
':letzterjahrstring' => $letzterjahrstring,
':letztermonatstring' => $letztermonatstring,
':siebentagezurueck' => $siebentagezurueck,
]);
echo "<table width='100%' border='1' class='table table-striped'>";
echo "<tr>
<th scope='col'>Person</th>
<th scope='col'>letzten 7 Tage</th>
<th scope='col'>Dieses Monat</th>
<th scope='col'>Letzter Monat</th>
<th scope='col'>Dieses Jahr</th>
<th scope='col'>Letztes Jahr</th>
<th scope='col'>Seit Beginn</th>
</tr>";
$gesamtletztewoche = 0;
$gesamtletztenmonat = 0;
$gesamtdiesenmonat = 0;
$gesamtdiesesjahr = 0;
$gesamtletztesjahr = 0;
$gesamtgesamt = 0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$begintime = $row["begintime"] ?? null;
if ($begintime) {
$currentDate = new DateTime($begintime);
$begintime = $currentDate->format('d.m.Y');
} else {
$begintime = "-";
}
$workerid = (int)($row["workerid"] ?? 0);
$alltimenum = (int)($row["alltimenum"] ?? 0);
$allyeartime = (int)($row["allyeartime"] ?? 0);
$lastweektime = (int)($row["lastweektime"] ?? 0);
$thismonthtime = (int)($row["thismonthtime"] ?? 0);
$lastmonthtime = (int)($row["lastmonthtime"] ?? 0);
$lastyeartime = (int)($row["lastyeartime"] ?? 0);
// Summen
$gesamtletztewoche += $lastweektime;
$gesamtletztenmonat += $lastmonthtime;
$gesamtdiesenmonat += $thismonthtime;
$gesamtdiesesjahr += $allyeartime;
$gesamtletztesjahr += $lastyeartime;
$gesamtgesamt += $alltimenum;
$vorname = htmlspecialchars($row["vorname"] ?? "", ENT_QUOTES, 'UTF-8');
$nachname = htmlspecialchars($row["nachname"] ?? "", ENT_QUOTES, 'UTF-8');
echo "
<tr>
<td>$nachname, $vorname</td>
<td>$lastweektime</td>
<td>$thismonthtime</td>
<td>$lastmonthtime</td>
<td>$allyeartime</td>
<td>$lastyeartime</td>
<td>$alltimenum seit $begintime</td>
</tr>
";
}
echo "
<tr style='font-weight:bold'>
<td>Gesamt:</td>
<td>$gesamtletztewoche</td>
<td>$gesamtdiesenmonat</td>
<td>$gesamtletztenmonat</td>
<td>$gesamtdiesesjahr</td>
<td>$gesamtletztesjahr</td>
<td>$gesamtgesamt</td>
</tr>
";
echo "</table>";
echo "<h3>Auswertung durchschnittliche Bearbeitungszeit</h3>";
$sql = "
SELECT
AVG(DATEDIFF(mailtime, create_time)) AS dauer,
COUNT(*) AS anzahl
FROM anfragen
WHERE create_time >= :siebentage
AND mailtime IS NOT NULL
";
$stmtAvg = $pdo->prepare($sql);
$stmtAvg->execute([
':siebentage' => $siebentagezurueck
]);
$row = $stmtAvg->fetch(PDO::FETCH_ASSOC);
$dauer = (float)($row["dauer"] ?? 0);
$anzahl = (int)($row["anzahl"] ?? 0);
$dauerstunden = ceil($dauer * 24);
echo "
Es wurden $anzahl Anfragen in den letzten sieben Tagen bearbeitet.<br>
Die Bearbeitung erfolgt durchschnittlich nach <b>$dauerstunden Stunden</b>.<br>
";
}else if (($_POST["aktion"] ?? '') == "13") {
//Infomail über Impfung versenden
$impfstoff = (int)($_POST["impfstoff"] ?? -1);
// Mapping: welche Kombination aus impfenangebot + impfstoff soll gezogen werden?
// (entspricht deiner alten Logik, nur korrekt geklammert)
switch ($impfstoff) {
case 0:
$impfenangebot = 1;
$zielImpfstoff = 1;
break;
case 1:
$impfenangebot = 1;
$zielImpfstoff = 2;
break;
case 2:
$impfenangebot = 2;
$zielImpfstoff = 1;
break;
case 3:
$impfenangebot = 2;
$zielImpfstoff = 2;
break;
default:
die("Ungültiger Impfstoff-Parameter");
}
// 1) Warteliste holen (max 30)
// Wichtig: Klammern, sonst falsche Treffer durch OR/AND
$sql = "
SELECT
w.warteid,
w.userid AS person_id,
w.timeid,
w.hash
FROM warteliste w
WHERE w.impfenangebot = :angebot
AND (w.impfstoff = 0 OR w.impfstoff = :zielImpfstoff)
LIMIT 30
";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':angebot' => $impfenangebot,
':zielImpfstoff'=> $zielImpfstoff
]);
$wartelisteRows = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($wartelisteRows as $row) {
$personId = (int)$row["person_id"];
$warteid = (int)$row["warteid"];
$timeid = $row["timeid"]; // falls vorhanden
$hash = $row["hash"]; // falls vorhanden
// Wenn du debuggen willst:
// echo htmlspecialchars((string)$timeid, ENT_QUOTES, 'UTF-8') . "<br>";
// 2) Person aus persons laden
$stmtPerson = $pdo->prepare("
SELECT vorname, nachname, email, tele
FROM persons
WHERE person_id = :pid
LIMIT 1
");
$stmtPerson->execute([':pid' => $personId]);
$person = $stmtPerson->fetch(PDO::FETCH_ASSOC);
if (!$person) {
// Wenn es Alt-Daten gibt, die noch keine Person haben:
// überspringen statt crashen
continue;
}
$vorname = $person["vorname"] ?? "";
$nachname = $person["nachname"] ?? "";
$mail = $person["email"] ?? "";
$tel = $person["tele"] ?? "";
$userausgabe = trim($vorname . " " . $nachname);
// 3) Mail rausschicken (deine Funktion nutzt schon PDO)
// (Wenn die Vorlage die Persondaten selbst lädt: ok.)
SendMailMessageVorlage($pdo, "2", $warteid, "7");
}
//Bearbeitung der Mailvorlagen ermöglichen
}else if (($_POST["aktion"] ?? '') == "14") {
?>
<script type="text/javascript">
tinymce.init({
selector: '#mytextarea',
height: 800,
plugins: ' advcode casechange formatpainter linkchecker autolink lists checklist media pageembed table advtable ',
toolbar: 'checklist code table',
toolbar_mode: 'floating',
});
</script>
<?php
// E-Mail Vorlage laden
$templetid = (int)($_POST["templetid"] ?? 0);
$stmt = $pdo->prepare("
SELECT betreff, body, name
FROM mailtemplates
WHERE templetid = :tid
LIMIT 1
");
$stmt->execute([':tid' => $templetid]);
$rowconfig = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$rowconfig) {
die("Mailtemplate nicht gefunden.");
}
$body = $rowconfig["body"];
$betreff = $rowconfig["betreff"];
$name = $rowconfig["name"];
$betreff = iconv('CP1252//IGNORE', 'UTF-8' , $betreff);
//$body = iconv('CP1252//IGNORE', 'UTF-8' , $body);
$name = iconv('CP1252//IGNORE', 'UTF-8' , $name);
echo "<h1>E-Mailvorlage bearbeiten</h1><br>";
echo "Vorlage: $name<br>";
echo "<br>Folgende Variablen können Sie nutzen:";
echo "<br>%BENUTZERVORNAME% für Vorname des Patienten";
echo "<br>%BENUTZERNACHNAME% für Nachname des Patienten";
echo "<br>%BENUTZERGEBURTSTAG% für Geburtstag des Patienten";
echo "<br>%BENUTZERADRESSE% für Adresse (Ort PLZ, Straße) des Patienten";
echo "<br>%REZEPTART% für die Art der Anfrage";
echo "<br>%MEDIKAMENTNUMMEREINS% für Medikament 1";
echo "<br>%MEDIKAMENTNUMMERZWEI% für Medikament 2";
echo "<br>%ANFRAGENACHRICHT% für die vom Patienten eingegebene Nachricht (max. 150 Zeichen)";
echo "<br>%ANFRAGENLOGIN% für den Bestätigungslink/ Überprüfungslink der Anfrage. Achtung: Muss mindestens ein Mal an den Patienten versendet werden.";
echo "<br><br>";
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
echo "Betreff:<br>";
echo "<input class='form-control' name=betreff type=text value='". $betreff . "'> <br>";
echo '<textarea height=200 name="body" id="mytextarea"> '. $body . '</textarea>';
echo "<input name=aktion type=hidden value=15>";
echo "<input name=templetid type=hidden value=$templetid><br><br>";
echo "<input type=submit class='btn btn-primary' value='Speichern'><br>";
echo '</form>';
// Speichern der E-Mail Vorlagen
} else if (($_POST["aktion"] ?? '') == "15") {
$templetid = (int)($_POST["templetid"] ?? 0);
$betreff = iconv('UTF-8', 'CP1252//IGNORE', $_POST["betreff"] ?? "");
$body = iconv('UTF-8', 'CP1252//IGNORE', $_POST["body"] ?? "");
$stmt = $pdo->prepare("
UPDATE mailtemplates
SET betreff = :betreff,
body = :body
WHERE templetid = :tid
");
$stmt->execute([
':betreff' => $betreff,
':body' => $body,
':tid' => $templetid
]);
echo "Speicherung der Vorlage erfolgt!<br><br>";
// Auswahl der E-Mail Vorlagen
} else if (($_POST["aktion"] ?? '') == "16") {
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='POST'>";
echo "Wählen Sie die zu bearbeitende Mailvorlage aus:<br><br>";
$stmt = $pdo->prepare("
SELECT name, templetid
FROM mailtemplates
WHERE mailbearbeitung = 1
ORDER BY name
");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<input name='aktion' type='hidden' value='14'>";
echo "<select class='form-control' name='templetid'>";
foreach ($rows as $row) {
$name = iconv('CP1252//IGNORE', 'UTF-8', $row["name"]);
echo '<option value="' . (int)$row["templetid"] . '">'
. htmlspecialchars($name, ENT_QUOTES, 'UTF-8')
. '</option>';
}
echo "</select><br><br>";
echo "<input type='submit' class='btn btn-primary' value='Bearbeiten'><br><br><br>";
// Sperrliste E-Mails
} else if (($_POST["aktion"] ?? '') == "17") {
$stmt = $pdo->prepare("SELECT email FROM user_block");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<h3>Sperrliste</h3>";
echo "Aktuell sind folgende Benutzer auf der Sperrliste:<br><br>";
foreach ($rows as $row) {
echo htmlspecialchars($row["email"], ENT_QUOTES, 'UTF-8') . "<br>";
}
echo "<br><br>";
//Bearbeitung der Mailvorlagen ermöglichen
}else if (($_POST["aktion"] ?? '') == "18") {
?>
<script type="text/javascript">
tinymce.init({
selector: '#mytextarea',
height: 800,
plugins: ' advcode casechange formatpainter linkchecker autolink lists checklist media pageembed table advtable ',
toolbar: 'checklist code table',
toolbar_mode: 'floating',
});
</script>
<?php
echo "<h1>E-Mailvorlage anlegen</h1><br>";
echo "<br>Folgende Variablen können Sie nutzen:";
echo "<br>%BENUTZERVORNAME% für Vorname des Patienten";
echo "<br>%BENUTZERNACHNAME% für Nachname des Patienten";
echo "<br>%BENUTZERGEBURTSTAG% für Geburtstag des Patienten";
echo "<br>%BENUTZERADRESSE% für Adresse (Ort PLZ, Straße) des Patienten";
echo "<br>%REZEPTART% für die Art der Anfrage";
echo "<br>%MEDIKAMENTNUMMEREINS% für Medikament 1";
echo "<br>%MEDIKAMENTNUMMERZWEI% für Medikament 2";
echo "<br>%ANFRAGENACHRICHT% für die vom Patienten eingegebene Nachricht (max. 150 Zeichen)";
echo "<br>%ANFRAGENLOGIN% für den Bestätigungslink/ Überprüfungslink der Anfrage. ";
echo "<br><br>";
echo "<form action='". $_SERVER['PHP_SELF'] . "' method=POST>";
echo "Name der Vorlage:<br>";
echo "<input class='form-control' name=name type=text value='$name' required><br>";
echo "Betreff:<br>";
echo "<input class='form-control' name=betreff type=text value='$betreff' required><br>";
echo "Inhalt:<br>";
echo '<textarea height=200 name="body" id="mytextarea" >' . $body .'</textarea>';
echo "<input name=aktion type=hidden value=19>";
echo "<br><br>";
echo "<input type=submit class='btn btn-primary' value='Speichern'><br>";
echo '</form>';
// Speichern der E-Mail Vorlagen
}else if (($_POST["aktion"] ?? '') == "19") {
$name = iconv('UTF-8', 'CP1252//IGNORE', $_POST["name"] ?? "");
$betreff = iconv('UTF-8', 'CP1252//IGNORE', $_POST["betreff"] ?? "");
$body = iconv('UTF-8', 'CP1252//IGNORE', $_POST["body"] ?? "");
$stmt = $pdo->prepare("
INSERT INTO mailtemplates (betreff, body, name, mailbearbeitung)
VALUES (:betreff, :body, :name, 1)
");
$stmt->execute([
':betreff' => $betreff,
':body' => $body,
':name' => $name
]);
echo "Speicherung der Vorlage erfolgt!<br><br>";
}else if (($_POST["aktion"] ?? '') == "20") {
$anfrageid = (int)($_POST["anfrageid"] ?? 0);
if ($anfrageid <= 0) {
die("Ungültige Anfrage-ID");
}
// optional: prüfen ob Anfrage existiert (entspricht deinem SELECT)
$stmtCheck = $pdo->prepare("SELECT anfrageid FROM anfragen WHERE anfrageid = :id LIMIT 1");
$stmtCheck->execute([':id' => $anfrageid]);
if (!$stmtCheck->fetch(PDO::FETCH_ASSOC)) {
die("Anfrage nicht gefunden");
}
// Mail verschicken (bei dir schon auf PDO umgestellt)
SendMailMessageVorlage($pdo, "3", $anfrageid, "42");
// Anfrage updaten
$stmt = $pdo->prepare("
UPDATE anfragen
SET beantwortet = 1,
checked = 29,
workerid = :workerid,
antwortid = 0
WHERE anfrageid = :id
");
$ok = $stmt->execute([
':workerid' => (int)$user["id"],
':id' => $anfrageid
]);
if ($ok && $stmt->rowCount() > 0) {
echo "<h4>Die Anfrage wurde erfolgreich gelöscht!</h4><br>";
echo "Der Kunde erhält gleich eine schriftliche Bestätigung per E-Mail<br>";
} else {
echo "<h4>Update fehlgeschlagen oder keine Zeile geändert.</h4>";
}
echo "<br>";
echo "<br><br><br>";
ZuruckzumAnfrageOverView();
}else{
echo '<h3>Welche Aktion möchtest du durchführen?</h3>
<table width=100%><tr><td width=40%>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=1>
<input type=submit class="btn btn-primary btn-lg" value="Formular-Anfragen bearbeiten">
</form>
</td></tr>
<tr><td><br><br>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=18>
<input type=submit class="btn btn-primary" value="Mailvorlagen anlegen">
</form>
</td></tr>
<tr><td><br><br>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=12>
<input type=submit class="btn btn-primary" value="Formular Auswertung">
</form>
</td></tr>
<tr><td><br><br>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=16>
<input type=submit class="btn btn-primary" value="Mailvorlagen anpassen">
</form>
</td></tr><br><br><br><br>
<tr></tr>
<tr><td><h3>Urlaub / Hinweis planen</h3></td><td></td></tr>
<tr><td>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=4>
<input type=submit class="btn btn-primary btn-lg" value="Urlaub eintragen">
</form>
</td></tr>
<tr><td><br><br>
<form action="'. $_SERVER["PHP_SELF"] .'" method=POST>
<input type=hidden name=aktion value=6>
<input type=submit class="btn btn-primary" value="Notfallsprechstunde eintragen">
</form>
</tr>
</table>
<br><br>
';
}
$stmt = $pdo->prepare("
SELECT impfid, impfname
FROM impfstoff
WHERE aktivtermin = 1
");
$stmt->execute();
$javascriptimpfstoff = "";
while ($rowimpf = $stmt->fetch(PDO::FETCH_ASSOC)) {
$impfid = (int)$rowimpf["impfid"];
$impfstofftext = htmlspecialchars($rowimpf["impfname"], ENT_QUOTES, 'UTF-8');
$javascriptimpfstoff .= "<option value=\"$impfid\">$impfstofftext</option>";
}
}
?>
<br><br><br><input type="button" class='btn btn-secondary' value="Zum Hauptmenü" onClick="location.href='<?php echo $_SERVER['PHP_SELF'];?>'">
</section>
<script>
function onSubmit(token) {
document.getElementById("submit").submit();
}
</script>
<script type="text/javascript">
function AddneueTermine(){
var div = document.getElementById('neuerUrlaub');
div.innerHTML += "Start: <input name=Starttime[] type=date class='form-control' > Ende: <input name=Endetime[] type=date class='form-control' >Vertretung: <input type=text name=vertretung[] weight=100 class='form-control' required> Vertretung Telefon: <input type=text name=vertretertelefon[] weight=100 class='form-control' required> Vertretung Adresse: <input type=text name=vertreteradresse[] weight=100 class='form-control' required> Vertretung Webseite: <input type=text name=vertreterurl[] weight=100 class='form-control' required> <input name=urlaubid[] type=hidden value='0'> <br>";
//Public: <select name=aktiv[] id='aktiv' required ><option value='1' >Ja</option> <option value='0'>Nein</option></select>
//document.getElementById('neueTermine').innerHTML = div;
}
function AddneueTermineNotfall(){
var div = document.getElementById('neuerUrlaub');
div.innerHTML += "<h3>Neuer Termin</h3>Start: <input name=Starttime[] type=date class='form-control' > Ende: <input name=Endetime[] type=date class='form-control' > <br> Anleitung: Der Hinweistext kann erst angelegt werden, wenn der Termin einmal gespeichert wurde. Speichern Sie den neuen Termin. Klicken Sie dannach auf 'Zurück' und fügen Sie den Hinweistext ein.<br> <input name=urlaubid[] type=hidden value='0'> <br>";
//Public: <select name=aktiv[] id='aktiv' required ><option value='1' >Ja</option> <option value='0'>Nein</option></select>
}
function templateUpdate() {
var betreff = document.getElementById('betreff');
var bodytext = document.getElementById('trumbowyg-demo');
var templetid = document.getElementById('templetid').value;
var anfrageid = document.getElementById('anfrageid').value;
$.ajax({
type: 'POST',
url: 'mailtemplate.php',
data: {
templetid: templetid,
anfrageid: anfrageid
},
dataType: 'json',
success: function (data) {
if (data.error) {
alert("Fehler: " + data.error);
return;
}
betreff.value = data.betreff;
$('#trumbowyg-demo').trumbowyg('html', data.body);
}
});
}
function checkTemplate(){
var templetid = document.getElementById('templetid').value;
if(templetid == ""){
alert("Macht es dir einfacher!\nNutze eine Vorlage. Du kannst diese jederzeit wechseln. \n\nFür eine allgemeine Vorlage nutze 'Allgemeine Anfrage'.");
}
}
</script>
<style>
select {
width: auto;
display: inline;
height: auto;
}
td {
padding-top:5px;
padding-bottom:5px;
padding-right:5px;
vertical-align:top;
}
tr {
padding-top:5px;
padding-bottom:5px;
padding-right:5px;
vertical-align:top;
}
th {
padding-top:5px;
padding-bottom:5px;
padding-right:5px;
vertical-align:top;
}
</style>
</div>
<?php
include("templates/footer.inc.php")
?>