434 lines
12 KiB
PHP
434 lines
12 KiB
PHP
<!DOCTYPE HTML>
|
|
<!--
|
|
Alpha by HTML5 UP
|
|
html5up.net | @n33co
|
|
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
|
-->
|
|
<html>
|
|
<head>
|
|
<?php
|
|
|
|
include('header.php');
|
|
|
|
?>
|
|
<title>Praxis Creutzburg - Termin absagen</title>
|
|
<link rel="stylesheet" href="css/formulare.css" />
|
|
</head>
|
|
<body >
|
|
|
|
<!-- Header -->
|
|
<header id="header" class="../skel-layers-fixed">
|
|
|
|
|
|
<?php
|
|
|
|
include('menu.php');
|
|
include_once("inc/config.inc.php");
|
|
include_once("inc/functions.inc.php");
|
|
include_once('inc/functions.impfen.inc.php');
|
|
include_once('inc/functions.formulare.inc.php');
|
|
|
|
?>
|
|
</header>
|
|
|
|
|
|
|
|
<!-- Main -->
|
|
<section id="main" class="container">
|
|
<?php
|
|
echo showHeaderpraxis();
|
|
?>
|
|
|
|
<section class="box special">
|
|
<h2>Termin absagen</h2>
|
|
|
|
<?php
|
|
|
|
if(isset($_POST["aktion"])){
|
|
|
|
if($_POST["aktion"] == "1"){
|
|
|
|
|
|
echo '<h4>Kontrollieren Sie Ihre Angaben!</h4><br>';
|
|
echo '<form action="'. $_SERVER['PHP_SELF'] .'" method=POST>';
|
|
echo '<table border="0">';
|
|
// Schleife durch Clemens 15.10.2018
|
|
foreach ($_POST as $key => $value) {
|
|
if(!($value == "" || $key == "submit" || $key == "aktion")){
|
|
if($key == "category"){
|
|
$stmt = $pdo->prepare("SELECT artname FROM anfrageart WHERE artid = ? LIMIT 1");
|
|
$stmt->execute([$value]);
|
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
$anfragearttext = $row ? $row["artname"] : null;
|
|
|
|
|
|
echo "<tr><td width=100 valign=top class=fett>$key:</td><td>$anfragearttext</td></tr>\n";
|
|
echo"<input type=hidden name='".$key."' value='".$value. "'>\n";
|
|
}else{
|
|
echo "<tr><td width=100 valign=top class=fett>$key:</td><td>$value</td></tr>\n";
|
|
echo"<input type=hidden name='".$key."' value='".$value. "'>\n";
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
echo '</table>';
|
|
echo '<input type="hidden" name="aktion" value="2" />';
|
|
echo '<input type="submit" value="Anfrage abschicken" />';
|
|
echo '</form >';
|
|
|
|
|
|
}else if($_POST["aktion"] == "2"){
|
|
|
|
// ================== 1) Input ==================
|
|
$vorname = trim($_POST["Vorname"] ?? "");
|
|
$nachname = trim($_POST["Name"] ?? "");
|
|
$geburtstag = trim($_POST["Geburtsjahr"] ?? "");
|
|
$email = trim($_POST["Email"] ?? "");
|
|
$tele = trim($_POST["Tel"] ?? "");
|
|
$plz = trim($_POST["plz"] ?? "");
|
|
$ort = trim($_POST["ort"] ?? "");
|
|
$strasse = trim($_POST["strasse"] ?? "");
|
|
|
|
$medikament1 = trim($_POST["Medikament1"] ?? "");
|
|
$medikament2 = trim($_POST["Medikament2"] ?? "");
|
|
$nachricht = trim($_POST["message"] ?? "");
|
|
$anforderungart = trim($_POST["category"] ?? "");
|
|
$abholung = trim($_POST["abholung"] ?? "");
|
|
|
|
// Geburtstag nur Jahr → auf Datum mappen
|
|
if (preg_match('/^\d{4}$/', $geburtstag)) {
|
|
$geburtstag .= "-01-01";
|
|
}
|
|
|
|
// Minimal-Checks
|
|
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
die("<h3>Ungültige E-Mail</h3>");
|
|
}
|
|
if (!$geburtstag) {
|
|
die("<h3>Geburtsdatum fehlt</h3>");
|
|
}
|
|
if (!$anforderungart) {
|
|
die("<h3>Kategorie fehlt</h3>");
|
|
}
|
|
|
|
// ================== 2) Impfstoff (optional) ==================
|
|
$impfstofftext = null;
|
|
if (!empty($impfstoff)) {
|
|
$stmt = $pdo->prepare("SELECT impfname FROM impfstoff WHERE impfid = ? LIMIT 1");
|
|
$stmt->execute([$impfstoff]);
|
|
$impfstofftext = $stmt->fetchColumn() ?: null;
|
|
}
|
|
|
|
// ================== 3) DB-Logik ==================
|
|
try {
|
|
$pdo->beginTransaction();
|
|
|
|
// --- Person upsert ---
|
|
// UNIQUE(email, geburtstag) MUSS existieren!
|
|
$stmt = $pdo->prepare("
|
|
INSERT INTO persons (vorname, nachname, email, geburtstag, tele, ort, plz, strasse)
|
|
VALUES (:vorname, :nachname, :email, :geburtstag, :tele, :ort, :plz, :strasse)
|
|
ON DUPLICATE KEY UPDATE
|
|
vorname = VALUES(vorname),
|
|
nachname = VALUES(nachname),
|
|
tele = VALUES(tele),
|
|
ort = VALUES(ort),
|
|
plz = VALUES(plz),
|
|
strasse = VALUES(strasse),
|
|
updated_at = CURRENT_TIMESTAMP
|
|
");
|
|
$stmt->execute([
|
|
':vorname' => $vorname,
|
|
':nachname' => $nachname,
|
|
':email' => $email,
|
|
':geburtstag' => $geburtstag,
|
|
':tele' => $tele,
|
|
':ort' => $ort,
|
|
':plz' => $plz,
|
|
':strasse' => $strasse,
|
|
]);
|
|
|
|
// person_id holen
|
|
$stmt = $pdo->prepare("SELECT person_id FROM persons WHERE email = ? AND geburtstag = ? LIMIT 1");
|
|
$stmt->execute([$email, $geburtstag]);
|
|
$person_id = (int)$stmt->fetchColumn();
|
|
|
|
if (!$person_id) {
|
|
throw new Exception("Keine eindeutige Kennung (person_id)");
|
|
}
|
|
|
|
// --- Duplikatcheck (7 Tage) ---
|
|
$stmt = $pdo->prepare("
|
|
SELECT 1
|
|
FROM anfragen
|
|
WHERE requester_person_id = ?
|
|
AND anforderungart = ?
|
|
AND nachricht = ?
|
|
AND create_time >= (NOW() - INTERVAL 7 DAY)
|
|
LIMIT 1
|
|
");
|
|
$stmt->execute([$person_id, $anforderungart, $nachricht]);
|
|
$exists = (bool)$stmt->fetchColumn();
|
|
|
|
if ($exists) {
|
|
$pdo->rollBack();
|
|
echo "<h3>Doppelte Anfrage</h3><br>
|
|
Ihre Anfrage wurde schon gespeichert.<br>
|
|
Bitte warten Sie auf die Verarbeitung.<br><br>";
|
|
header("refresh:15;terminabsagen.php");
|
|
exit;
|
|
}
|
|
|
|
// --- Anfrage anlegen ---
|
|
$hashvorher = $vorname . $nachname . $email;
|
|
$hash = md5($hashvorher) . date("YmdHs");
|
|
|
|
$stmt = $pdo->prepare("
|
|
INSERT INTO anfragen
|
|
(requester_person_id, anforderungart, medikament1, medikament2,
|
|
nachricht, hash, create_time, ordnungsid,
|
|
sicherenachricht, source, created_by_account_id)
|
|
VALUES
|
|
(:pid, :art, :med1, :med2,
|
|
:nachricht, :hash, NOW(), 3,
|
|
0, 'mail', NULL)
|
|
");
|
|
$stmt->execute([
|
|
':pid' => $person_id,
|
|
':art' => $anforderungart,
|
|
':med1' => $medikament1,
|
|
':med2' => $medikament2,
|
|
':nachricht' => $nachricht,
|
|
':hash' => $hash
|
|
]);
|
|
|
|
$anfrageid = (int)$pdo->lastInsertId();
|
|
|
|
$pdo->commit();
|
|
|
|
} catch (Exception $e) {
|
|
if ($pdo->inTransaction()) $pdo->rollBack();
|
|
die("<h3>Speicherung nicht erfolgreich</h3><br>" . htmlspecialchars($e->getMessage()));
|
|
}
|
|
|
|
// ================== 4) Mail + Ausgabe ==================
|
|
try {
|
|
SendMailMessageVorlage($pdo, "3", $anfrageid, "25");
|
|
} catch (Exception $e) {
|
|
// Mailfehler ignorieren oder loggen
|
|
}
|
|
|
|
echo "<h3>Nachricht abgeschickt!</h3><br>
|
|
Sie bekommen eine Bestätigung per E-Mail!<br>
|
|
Überprüfen Sie auch Ihren Spam-Filter!<br><br>";
|
|
|
|
|
|
|
|
}
|
|
}else{
|
|
|
|
|
|
?>
|
|
|
|
|
|
<br>
|
|
Stellen Sie wiederholt Anfragen an die Praxis Creutzburg? <br>
|
|
Wollen Sie bis zu sechs Medikamente beantragen?<br>
|
|
Benötigen Sie ein längeres Textfeld?<br>
|
|
|
|
<br>Dann nutzen Sie auch unseren <a href="https://www.praxis-creutzburg.de/intern/">Internen Bereich</a> für Patienten.</p><br>
|
|
|
|
<h3>Sie benötigen einen neuen Termin?</h3>
|
|
Sagen Sie Ihren Termin bitte ab. Anschließend können Sie sich selbstständig einen neuen Termin für die Sprechstunde buchen.
|
|
Schauen Sie in unserem Online-Kalender nach einem Termin. Dort sind meist auch kurzfristige Termine vorhanden.<br>
|
|
|
|
<a href="termine.php".php" class="button alt" style="font-size: 18px;background-color: #4CAF50;color:white;">Online-Kalender</a><br>
|
|
|
|
|
|
|
|
</header>
|
|
|
|
<div class="row">
|
|
<div class="12u">
|
|
|
|
<!-- Form -->
|
|
<section class="box">
|
|
<?php
|
|
|
|
// Urlaubsabfrage
|
|
$today = date("Y-m-d");
|
|
|
|
$stmt = $pdo->prepare("
|
|
SELECT urlaubid
|
|
FROM urlaub
|
|
WHERE start <= ?
|
|
AND ende >= ?
|
|
LIMIT 1
|
|
");
|
|
$stmt->execute([$today, $today]);
|
|
|
|
$urlaubid = $stmt->fetchColumn();
|
|
|
|
if (!$urlaubid) {
|
|
?>
|
|
<h3>Formular bitte ausfüllen und abschicken</h3>
|
|
<p>Gehen Sie nach unten zum Formular und füllen Sie es (wie gewohnt) aus.</p>
|
|
|
|
|
|
<?php echo '<form action="'. $_SERVER['PHP_SELF'] .'" method=POST>';
|
|
echo '<input type="hidden" name="aktion" id="aktion" value="1" />';
|
|
?>
|
|
<div class="row uniform 50%">
|
|
<?php
|
|
echo ShowFormularFragenBenutzer();
|
|
?>
|
|
|
|
|
|
</div>
|
|
<div class="row uniform 50%">
|
|
|
|
<div class="12u">
|
|
|
|
<label for="category">Ich sagen meinen Termin aus dem folgenden Grund ab:</label>
|
|
<div class="select-wrapper">
|
|
<select name="category" id="category" required >
|
|
<option value=""> Bitte wählen Sie aus</option>
|
|
<?php
|
|
$stmt = $pdo->prepare("
|
|
SELECT artid, artname
|
|
FROM anfrageart
|
|
WHERE terminabsagen = 1
|
|
");
|
|
$stmt->execute();
|
|
|
|
while ($rowimpf = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
|
$artname = $rowimpf["artname"];
|
|
$artid = $rowimpf["artid"];
|
|
?>
|
|
<option value="<?php echo htmlspecialchars($artid, ENT_QUOTES, 'UTF-8'); ?>">
|
|
<?php echo htmlspecialchars($artname, ENT_QUOTES, 'UTF-8'); ?>
|
|
</option>
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
|
|
</select>
|
|
|
|
<div id="AstraInfobox"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="row uniform 50%">
|
|
|
|
|
|
<div class="12u">
|
|
<label for="message">Teilen Sie uns mit welchen Termin Sie absagen wollen:</label>
|
|
<textarea name="message" id="message" placeholder="Ihre Nachricht/Bemerkung" rows="6" maxlength="150"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="row uniform">
|
|
<div class="12u">
|
|
<br>
|
|
Bedenken Sie bitte, dass wir einmal im Quartal Ihre Chipkarte benötigen. Ohne Chipkarte sind seit 1.1.2016 keine Kassendienstleistungen mehr möglich. Kassenleistungen sind an die gesetzlichen Regelungen gebunden. Fragen Sie Ihre Krankenkasse.<br>
|
|
Ihre Daten werden HTTPS-verschlüsselt an unser System übertragen. Sie erhalten die Antwort per E-Mail mit TLS-Verschlüsselung. Mit Absenden Ihrer Anfrage stimmen Sie diesen Bedingungen zu.<br>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row uniform">
|
|
<div class="12u">
|
|
<ul class="actions">
|
|
<li><input type="submit" value="Abschicken" /></li>
|
|
<li><input type="reset" value="Reset" class="alt" /></li>
|
|
</ul>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</form>
|
|
|
|
<hr />
|
|
<?php }else{
|
|
echo "<h2>Praxis im Urlaub</h2>";
|
|
echo "Wir befinden uns aktuell im Urlaub.<br>Wenden Sie sich an unsere Vertretung oder warten Sie bis nach unserem Urlaub mit Ihrer Anfrage.<br><br>";
|
|
|
|
$today = date("Y-m-d");
|
|
|
|
$stmt = $pdo->prepare("
|
|
SELECT ende, vertretung, vertretertelefon, vertreteradresse, vertreterurl
|
|
FROM urlaub
|
|
WHERE start <= :today
|
|
AND ende >= :today
|
|
ORDER BY ende DESC
|
|
LIMIT 1
|
|
");
|
|
$stmt->execute([':today' => $today]);
|
|
|
|
$row = $stmt->fetch(); // liefert Array oder false
|
|
|
|
if ($row) {
|
|
$vertreter = $row["vertretung"] ?? null;
|
|
$vertretertelefon = $row["vertretertelefon"] ?? null;
|
|
$vertreteradresse = $row["vertreteradresse"] ?? null;
|
|
$vertreterurl = $row["vertreterurl"] ?? null;
|
|
$ende = $row["ende"] ?? null;
|
|
|
|
if ($ende) {
|
|
$endeausgabe = date("d.m.Y", strtotime("+1 day", strtotime($ende)));
|
|
} else {
|
|
$endeausgabe = null;
|
|
}
|
|
|
|
if (!empty($vertreter)) {
|
|
echo "Unsere Vertretung: " . htmlspecialchars($vertreter, ENT_QUOTES, 'UTF-8') . "<br>";
|
|
}
|
|
if (!empty($vertreterurl)) {
|
|
// optional: URL escapen/validieren
|
|
echo "Webseite Vertretung: " . htmlspecialchars($vertreterurl, ENT_QUOTES, 'UTF-8') . "<br>";
|
|
}
|
|
if (!empty($vertretertelefon)) {
|
|
echo "Telefonischer Kontakt Vertretung: " . htmlspecialchars($vertretertelefon, ENT_QUOTES, 'UTF-8') . "<br>";
|
|
}
|
|
if (!empty($vertreteradresse)) {
|
|
echo "Adresse Vertretung: " . htmlspecialchars($vertreteradresse, ENT_QUOTES, 'UTF-8') . "<br>";
|
|
}
|
|
|
|
if ($endeausgabe) {
|
|
echo "<br>Wir stehen Ihnen ab dem " . htmlspecialchars($endeausgabe, ENT_QUOTES, 'UTF-8') . " wieder zur Verfügung.<br><br><br>";
|
|
}
|
|
}
|
|
?>
|
|
<form action="index.php" method=POST>
|
|
<input type=submit class=button value="Zurück">
|
|
</form>
|
|
<?php
|
|
}
|
|
|
|
}
|
|
?>
|
|
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<?php
|
|
|
|
include_once('footer.php');
|
|
|
|
?>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|