Commit 0c9339d1 authored by BuildTools's avatar BuildTools
Browse files

store user data in database

parent 1f32e717
......@@ -18,7 +18,7 @@
<p>Auf Grund der Corona Verordnung müssen sich Gäste nun auch bei uns Kontaktdaten hinterlegen. Diese werden nach Ablauf von 3 Wochen wieder gelöscht und werden nicht anderweitig genutzt bla bla bla...</p>
<p>Für eine Reservierung folgendes Formular ausfüllen. Dabei reicht ein Weg (Post/Telefon/Mail) zur Kontaktaufnahme aus.</p>
<form id="personalData" onsubmit="return validateReservation()" method="post">
<form id="personalData" action="/validateReservation.php" onsubmit="return validateReservation()" method="post">
<label for="Vname">Vorname:</label><br>
<input type="text" id="Vname" name="Vname"><br>
<label for="Nname">Nachname:</label><br>
......@@ -32,8 +32,14 @@
<label for="Email">Email:</label><br>
<input type="text" id="Email" name="Email"><br>
<input type="checkbox" id="accept" name="accept"">
<label for="accept">Ich bestätige hiermit die Speicherung meiner Daten...</label><br><br>
<input type="submit" value="Reservierung abschließen"><br><br>
<label for="accept">Ich bestätige hiermit die Speicherung meiner Daten...</label>
<input type="text" class="hiddenInput" id="startTime" name="startTime">
<input type="text" class="hiddenInput" id="endTime" name="endTime">
<input type="text" class="hiddenInput" id="table" name="table">
<input type="text" class="hiddenInput" id="date" name="date"><br><br>
<input type="submit" value="Reservierung abschließen"><br>
</form>
</body>
</html>
\ No newline at end of file
......@@ -95,7 +95,7 @@ function drawTableUsage(ctx, tablenr, openTime, closeTime, reservations) {
var start = reservation.start.split(':');
var end = reservation.end.split(':');
ctx.fillStyle = "#CD5C5C";
ctx.fillRect(offsetX + (start[0] - openTime[0]) * 2 * sectionWidth + (start[1] - openTime[1]) * sectionWidth, offsetY, (end[0] - start[0]) * 2 * sectionWidth + (end[1] - start[1]) / 30 * sectionWidth, sectionHeight);
ctx.fillRect(offsetX + (start[0] - openTime[0]) * 2 * sectionWidth + (start[1] - openTime[1]) / 30 * sectionWidth, offsetY, (end[0] - start[0]) * 2 * sectionWidth + (end[1] - start[1]) / 30 * sectionWidth, sectionHeight);
});
}
......@@ -145,44 +145,73 @@ function initCanvasClickListener() {
return;
}
var pixel = document.getElementById("reservations").getContext("2d").getImageData(x, y, 1, 1).data;
var hex = "#" + ((pixel[0] << 16) | (pixel[1] << 8) | pixel[2]).toString(16);
if( hex == "#cd5c5c") {
alert("Dieser Zeitraum ist schon reserviert");
return;
}
//todo check if time is reserved
var openTime = reservationData.open.split(':');
var closeTime = reservationData.close.split(':');
if (select.startH != -1) {
if(select.endH != -1) {
select.endH = -1;
// set start
selectStart(tablenr, section, openTime, closeTime);
} else {
selectEnd(tablenr, section, openTime, closeTime);
}
} else {
selectStart(tablenr, section, openTime, closeTime);
}
updateCanvas();
});
}
function selectStart(tablenr, section, openTime, closeTime) {
select.table = tablenr;
select.startH = parseInt(openTime[0]) + Math.floor((section - 1)/2);
select.startM = parseInt(openTime[1]) + ((section - 1) % 2) * 30;
} else {
//set end
if (typeof reservationData.reservations["T" + select.table] !== "undefined") {
console.log("T" + select.table);
for (var i = 0; i < reservationData.reservations["T" + select.table].length; i++) {
var res = reservationData.reservations["T" + select.table][i];
var start = res.start.split(":");
var end = res.end.split(":");
// start between reservation
if ((select.startH - start[0]) * 60 + select.startM - start[1] >= 0 && (select.startH - end[0]) * 60 + select.startM - end[1] < 0) {
resetSelection();
}
}
}
}
function selectEnd(tablenr, section, openTime, closeTime) {
if (select.table != tablenr) {
alert("Du kannst nur einen Tisch reservieren");
return;
}
select.endH = parseInt(openTime[0]) + Math.floor(section/2);
select.endM = parseInt(openTime[1]) + (section % 2) * 30;
}
} else {
// set start
select.table = tablenr;
select.startH = parseInt(openTime[0]) + Math.floor((section - 1)/2);
select.startM = parseInt(openTime[1]) + ((section - 1) % 2) * 30;
if ((select.endH - select.startH) * 60 + select.endM - select.startM <= 0) {
alert("Das Ende muss später als der Anfang liegen!");
select.endH = -1;
return;
}
updateCanvas();
});
if (typeof reservationData.reservations["T" + select.table] !== "undefined") {
for (var i = 0; i < reservationData.reservations["T" + select.table].length; i++) {
var res = reservationData.reservations["T" + select.table][i];
var start = res.start.split(":");
var end = res.end.split(":");
// start between reservation
if ((select.startH - start[0]) * 60 + select.startM - start[1] >= 0 && (select.startH - end[0]) * 60 + select.startM - end[1] < 0
// end between reservation
|| (select.endH - start[0]) * 60 + select.endM - start[1] > 0 && (select.endH - end[0]) * 60 + select.endM - end[1] <= 0
// reservation between start and end
|| (select.startH - start[0]) * 60 + select.startM - start[1] <= 0 && (select.endH - end[0]) * 60 + select.endM - end[1] >= 0) {
alert("Dieser Zeitraum ist schon reserviert!");
select.endH = -1;
}
}
}
}
function getTableFromLocation(y, offset, graphHeight) {
......@@ -231,15 +260,14 @@ function validateReservation() {
return false;
}
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "validateReservation.php", false);
if (select.endH - select.startH + select.endM - select.startM < 0) {
var formData = new FormData(document.getElementById("personalData"));
formData.append("date", document.getElementById("reservationDate").value);
formData.append("startTime", select.startH + ":" + select.startM);
formData.append("endTime", select.endH + ":" + select.endM);
}
xhttp.send(formData);
document.getElementById("startTime").value = select.startH + ":" + select.startM;
document.getElementById("endTime").value = select.endH + ":" + select.endM;
document.getElementById("table").value = select.table;
document.getElementById("date").value = document.getElementById("reservationDate").value;
return false;
return true;
}
\ No newline at end of file
......@@ -31,3 +31,9 @@ button {
#js-info {
color: red;
}
.hiddenInput {
visibility: hidden;
width: 0;
height: 0;
}
\ No newline at end of file
......@@ -3,17 +3,26 @@
<title>Datenvalidierung</title>
</head>
<body>
<h2>Die Reservierung wurde für den ... von ... bis ... angelegt</h2>
<p>Personenbezogene Daten können nun nicht mehr geändert werden. Mit folgendem Code kann jedoch die Reservierung aufgehoben werden: ...<br>
Die Daten werden automatisch spätestenz 3 Wochen nach ihrem letzten Besuch gelöscht. Falls die Reservierung nicht wahr genommen wurde,
besteht die Möglichkeit die Daten schon vorher zu löschen. Kontaktieren Sie uns dazu auf gezi@z10.info</p>
</body>
<?PHP
// todo check if code already exists
$code = substr(hash("md5", microtime()), 0, 16);
<?PHP
$user = 'apache';
$pass = 'e164AzpQx564TpJa';
$db = new PDO('mysql:host=localhost;dbname=reservation', $user, $pass);
$statement = $db -> prepare("INSERT INTO client (vname, nname, addr, plz, tel, email, date) VALUES (?, ?, ?, ?, ?, ?, ?)");
$statement->execute(array($_POST["Vname"], $_POST["Nname"], $_POST["Addr"], $_POST["Plz"], $_POST["Tel"], $_POST["Email"], date('Y-m-d')));
?>
\ No newline at end of file
$clientId = $db->lastInsertId();
$statement = $db -> prepare('INSERT INTO reservation (opening, client, tisch, start, end, code) SELECT opening.id, ?, ?, ?, ?, ? FROM opening WHERE date = ?;');
$statement->execute(array($clientId, $_POST["table"], $_POST["startTime"], $_POST["endTime"], $code, $_POST["date"]));
?>
<h2>Die Reservierung wurde für den <?PHP echo $_POST["date"] . " von " . $_POST["startTime"] . " bis " . $_POST["endTime"] . " " ?> angelegt</h2>
<p>Personenbezogene Daten können nun nicht mehr geändert werden. Mit folgendem Code kann jedoch die Reservierung aufgehoben werden: <?PHP echo $code; ?><br>
Die Daten werden automatisch spätestens 3 Wochen nach ihrem letzten Besuch gelöscht. Falls die Reservierung nicht wahr genommen wurde,
besteht die Möglichkeit die Daten schon vorher zu löschen. Kontaktieren Sie uns dazu auf gezi@z10.info</p>
</body>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment