diff --git a/sternwarte/DB4js.php b/sternwarte/DB4js.php
index f534c71..8368e1f 100644
--- a/sternwarte/DB4js.php
+++ b/sternwarte/DB4js.php
@@ -1,5 +1,4 @@
bis zu diesem Datum
// Retunrn:
// Array mit den Daten in ISO8601
-function getFuehrungen($start, $end) {
+function getFuehrungen($start, $end, $typ) {
global $db;
- $erg = array();
- $sql_sel = "SELECT * FROM fdatum1 where datum >= '$start' AND datum <= '$end' ORDER BY datum ASC";
+ $erg = [];
+ $table = 'fdatum1';
+ if ($typ == 'sonnen') {
+ $table = 'sonnedatum';
+ }
+ $sql_sel = "SELECT * FROM $table where datum >= '$start' AND datum <= '$end' ORDER BY datum ASC";
$result = mysqli_query($db, $sql_sel) or die(mysqli_error($db));
while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as $key => $value) {
@@ -262,6 +269,17 @@ function getOneDate($id) {
return $data;
}
+// aus fdatum die div. Datumsteile hole
+function getTimeByDate($dt, $typ) {
+ global $db;
+ if ($typ == 'sonnen')
+ return '11 Uhr';
+ $sql_stmt = "SELECT uhrzeit FROM fdatum1 WHERE datum='$dt'";
+ $result = mysqli_query($db, $sql_stmt) or die(mysqli_error($db));
+ $data = mysqli_fetch_assoc($result);
+ return $data['uhrzeit'];
+}
+
function insertteilnehmer($data) {
global $db;
$name = $data['name'];
@@ -473,6 +491,9 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
case 'GET_ONE_DATE':
$erg = getOneDate($_POST['fid']);
break;
+ case 'GET_TIME_BY_DATE':
+ $erg = getTimeByDate($_POST['dt'], $_POST['typ']);
+ break;
case 'GET_ALLTEILN':
$erg = getAllTeilnehmer($_POST['fdatum']);
break;
@@ -503,7 +524,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$erg = getTeilnehmer(-1, true, false);
break;
case 'GET_FUEHRUNGEN':
- $erg = getFuehrungen($_POST['start'], $_POST['end']);
+ $erg = getFuehrungen($_POST['start'], $_POST['end'], $_POST['typ']);
break;
case 'PUT_FDATES':
$erg = putFdates($_POST['data']);
diff --git a/sternwarte/storno/css/storno.css b/sternwarte/storno/css/storno.css
index 71d9942..b958ee9 100644
--- a/sternwarte/storno/css/storno.css
+++ b/sternwarte/storno/css/storno.css
@@ -2,7 +2,7 @@
.storno {
font-size: 14px;
- min-height: 500px;
+ min-height: 550px;
position: relative;
}
@@ -131,3 +131,8 @@ h5 {
margin-left: 10px;
font-size: 80%;
}
+
+#abbrechen {
+ background-color: gray;
+ margin-top: 40px;
+}
diff --git a/sternwarte/storno/index.php b/sternwarte/storno/index.php
index 77321bc..6b13a8f 100644
--- a/sternwarte/storno/index.php
+++ b/sternwarte/storno/index.php
@@ -51,7 +51,7 @@
Für diese E-Mail Adresse ist keine Führung angemeldet !
- Sie sind angemeldet für:
+ Sie sind angemeldet für eine
Sternführung am:
2022-07-12 22:00 Uhr 4 Personen
diff --git a/sternwarte/storno/js/storno.js b/sternwarte/storno/js/storno.js
index c4b3285..45c9049 100644
--- a/sternwarte/storno/js/storno.js
+++ b/sternwarte/storno/js/storno.js
@@ -5,8 +5,8 @@
$(document).ready(() => {
// Globale Konstanten und Variable
-// const ajaxURL="php/anmeldDB.php";
- const ajaxURL="../../DB4js.php";
+ // const ajaxURL="php/anmeldDB.php";
+ const ajaxURL = "../../DB4js.php";
const maxVisitors = 25
const months2add = 3
@@ -21,9 +21,9 @@ $(document).ready(() => {
// Return:
// angeforderte Daten als JSON
const fetchFromDbase = async (body) => {
- const response = await fetch(ajaxURL,{
+ const response = await fetch(ajaxURL, {
method: 'POST',
- headers: {'Content-Type': 'application/js'},
+ headers: { 'Content-Type': 'application/js' },
body: JSON.stringify(body)
});
let rt = await response.json();
@@ -37,22 +37,41 @@ $(document).ready(() => {
// Return:
// angeforderte Daten als JSON
const putToDbase = async (body) => {
- const response = await fetch(ajaxURL,{
+ const response = await fetch(ajaxURL, {
method: 'POST',
- headers: {'Content-Type': 'application/js'},
+ headers: { 'Content-Type': 'application/js' },
body: JSON.stringify(body)
});
return await response.json();
}
+ // Wochentag aus integer Datum extrahieren
+ function getWochentag(datumInt) {
+ const d = new Date(
+ Math.floor(datumInt / 10000), // Jahr
+ Math.floor((datumInt % 10000) / 100) - 1, // Monat (0-basiert)
+ datumInt % 100 // Tag
+ );
+ return ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"][d.getDay()];
+ }
+
+ // Aus dem integer Führungsdatum (aus anmeldungen) den Wochentag und
+ // die Uhrzeit aus der Tabelle fdatum 1 holen
+ const getFuhrzeit = async (dt, typ) => {
+ return await fetchFromDbase({ cmd: 'GET_TIME_BY_DATE', dt: dt, typ: typ })
+
+ }
// Das Führungsdatum extrahieren
const buildDatum = async (tn, short) => {
const person = tn.anzahl === '1' ? 'Person' : 'Personen'
- const datum = await fetchFromDbase({cmd: 'GET_ONE_DATE', fid: tn.fid})
- if(short) {
- return `${moment(datum.datum).format('DD.MM.YYYY')}`
+ const uhrzeit = await getFuhrzeit(tn.fdatum, tn.typ)
+ if (short) {
+ return `${moment(tn.fdatum).format('DD.MM.YYYY')}`
}
- return `${datum.wtag}, den ${moment(datum.datum).format('DD.MM.YYYY')} um ${datum.uhrzeit} mit ${tn.anzahl} ${person}`
+ if(tn.typ === 'sonnen') {
+ document.getElementById('fart').innerHTML = "Sonnenführung"
+ }
+ return `${getWochentag(tn.fdatum)}, den ${moment(tn.fdatum).format('DD.MM.YYYY')} um ${uhrzeit} mit ${tn.anzahl} ${person}`
}
// Das Führungsdatum anzeigen
@@ -67,13 +86,13 @@ $(document).ready(() => {
}
const austragen = async (teilnehmer) => {
-// console.log("Austragen von ", teilnehmer)
-// return
- oldtndata = {...teilnehmer}
- let delstr = {cmd: 'DELETE_ENTRY', id: parseInt(teilnehmer.id)}
+ // console.log("Austragen von ", teilnehmer)
+ // return
+ oldtndata = { ...teilnehmer }
+ let delstr = { cmd: 'DELETE_ENTRY', id: parseInt(teilnehmer.id) }
const erg1 = await putToDbase(delstr)
- console.log("Storno Ergebnis: ",erg1)
- if(erg1) {
+ console.log("Storno Ergebnis: ", erg1)
+ if (erg1) {
$('#ausgetragen').show()
$('#lower_text').show()
sendEmail(teilnehmer, true)
@@ -84,44 +103,48 @@ $(document).ready(() => {
}
const umbuchen = async (teilnehmer) => {
-// console.log('Umbuchen von ',teilnehmer)
-// return
- oldtndata = {...teilnehmer}
+ // console.log('Umbuchen von ',teilnehmer)
+ // return
+ oldtndata = { ...teilnehmer }
let start = moment()
start = start.add(vorlauf, 'h')
let end = moment()
- end = end.add(months2add, 'M')
+ let add = months2add
+ if (teilnehmer.typ === 'sonnen') {
+ add = 12
+ }
+ end = end.add(add, 'M')
const anzahl = parseInt(teilnehmer.anzahl)
- let fuehrungen = await fetchFromDbase({cmd: 'GET_FUEHRUNGEN', start: start.format('YYYYMMDD'), end: end.format('YYYYMMDD')})
+ let fuehrungen = await fetchFromDbase({ cmd: 'GET_FUEHRUNGEN', start: start.format('YYYYMMDD'), end: end.format('YYYYMMDD'), typ: teilnehmer.typ})
let r = `
'
$('#umbuchung').html(r)
-// $('#umgebucht').html('Bitte wählen Sie ein freies Datum über den kleine Pfeil rechts.')
+ // $('#umgebucht').html('Bitte wählen Sie ein freies Datum über den kleine Pfeil rechts.')
$('#umgebucht').show()
// Eventhandler für Auswahl eines Datums über die SelectBox:
// Anzeigen der Anmeldungen dazu
- $('#ftermin').change( async () => {
+ $('#ftermin').change(async () => {
const x = $('#ftermin').find(':selected');
const date = x[0].value
teilnehmer.fdatum = date
teilnehmer.fid = x[0].id
- const update = {cmd: 'UPDATETLNFD', fdatum: date, fid: x[0].id, id: teilnehmer.id}
+ const update = { cmd: 'UPDATETLNFD', fdatum: date, fid: x[0].id, id: teilnehmer.id }
const erg = await putToDbase(update)
- if(erg) {
+ if (erg) {
$('#umbuchung').hide()
$('#umgebucht').html(`Sie wurden erfolgreich umgebucht auf
${await buildDatum(teilnehmer, false)}`)
$('#umgebucht').show()
@@ -137,11 +160,11 @@ $(document).ready(() => {
}
const aendern = async (teilnehmer) => {
- console.log('Ändern von ',teilnehmer)
- let count = await fetchFromDbase({cmd: 'GET_COUNTS_DATE', date: teilnehmer.fdatum})
+ console.log('Ändern von ', teilnehmer)
+ let count = await fetchFromDbase({ cmd: 'GET_COUNTS_DATE', date: teilnehmer.fdatum })
let anzahl = parseInt(teilnehmer.anzahl)
let max = anzahl
- if(count < maxVisitors) {
+ if (count < maxVisitors) {
max = maxVisitors - (count - anzahl)
}
if (max > 10) {
@@ -149,24 +172,24 @@ $(document).ready(() => {
}
console.log("Max: ", max)
$('#maxanzahl').text(`max. ${max}`)
- $('#personen').attr({max: max, min: 1, step: 1, value: anzahl})
+ $('#personen').attr({ max: max, min: 1, step: 1, value: anzahl })
// Evelthandler Übernehmen geklicked
$('#bsave').click(async () => {
$('#save').hide()
teilnehmer.anzahl = $('#personen').val()
- let e = await putToDbase({cmd: 'UPDATE_TLN', data: teilnehmer, id: teilnehmer.id})
+ let e = await putToDbase({ cmd: 'UPDATE_TLN', data: teilnehmer, id: teilnehmer.id })
$('#newperson').html(`Sie sind nun mit
${teilnehmer.anzahl} Personen angemeldet.`)
$('#bsave').hide()
$('#newperson').show()
$('#homebutton').show()
})
-
+
}
-// Emailadresse eingegeben
+ // Emailadresse eingegeben
const setEvent = (f) => {
$(document).on("keypress", "input", async function (e) {
if (e.which === 13) {
@@ -196,15 +219,15 @@ $(document).ready(() => {
$('#umbuchen').click(() => {
umbuchen(f[idx])
$('#anmeldid').hide()
-// $('#email').val("")
+ // $('#email').val("")
})
// Ändern geklicked
$('#aendern').click(() => {
aendern(f[idx])
$('#butgroup').hide()
$('#aenderung').show()
-// $('#anmeldid').hide()
-// $('#email').val("")
+ // $('#anmeldid').hide()
+ // $('#email').val("")
})
}
})
@@ -214,20 +237,18 @@ $(document).ready(() => {
sendEmail = async (tln, storno) => {
let fdatum = await buildDatum(tln, false)
let oldfdatum = await buildDatum(oldtndata, true)
- let subject = `${storno ? "Stornierung":"Umbuchung"} der Führung vom ${oldfdatum} auf der Sternwarte Welzheim`
+ let subject = `${storno ? "Stornierung" : "Umbuchung"} der Führung vom ${oldfdatum} auf der Sternwarte Welzheim`
let body_txt = `
Sehr geehrte Dame, sehr geehrter Herr,
hiermit bestätigen wir die ${storno ? 'Stornierung' : 'Umbuchung'} Ihrer Führung auf der Sternwarte Welzheim vom`
- if(!storno) {
+ if (!storno) {
body_txt += ` ${oldfdatum}.
Sie wurden umgebucht auf:
${fdatum}
- Bitte bringen Sie diese Bestätigung als Ausdruck oder digital zur Führung mit.
-
Die Führung findet NUR bei sternklarem Himmel statt. Falls der Himmel bedeckt ist
und die Führung ausfällt, erhalten Sie bis spätestens eine Stunde vor Führungsbeginn
eine Email. Sie können sich dann gerne zu einer anderen Führung neu anmelden.
@@ -244,12 +265,12 @@ Mit freundlichen Grüßen
Beobachterteam der Sternwarte Welzheim
www.sternwarte-welzheim.de
`
- let erg = await putToDbase({cmd: 'SEND_MAIL_HTML', subject: subject, to: [tln.email], body_txt: body_txt, body_html: ""})
+ let erg = await putToDbase({ cmd: 'SEND_MAIL_HTML', subject: subject, to: [tln.email], body_txt: body_txt, body_html: "" })
console.log("Antwort von sendmail_1: ", erg)
body_txt = `Die Führung vom ${oldfdatum} wurde ${storno ? 'storniert' : 'umgebucht'}
`
- if(!storno) {
+ if (!storno) {
body_txt += `
auf ${fdatum}`
}
@@ -258,12 +279,12 @@ auf ${fdatum}`
Besucher: ${tln.name} ${tln.vorname}`
body_html = `Die Führung vom ${oldfdatum} wurde ${storno ? 'storniert' : 'umgebucht'}`
- if(!storno) {
+ if (!storno) {
body_html += ` auf ${fdatum}
`
}
- body_html += `
Besucher: ${tln.name} ${tln.vorname}`
+ body_html += `
Besucher: ${tln.name} ${tln.vorname}`
- erg = await putToDbase({cmd: 'SEND_MAIL_HTML', subject: subject, to: ['rexfue@gmail.com'], body_txt: body_txt, body_html: body_html})
+ erg = await putToDbase({ cmd: 'SEND_MAIL_HTML', subject: subject, to: ['rexfue@gmail.com'], body_txt: body_txt, body_html: body_html })
console.log("Antwort von sendmail_2: ", erg)
}
@@ -277,7 +298,7 @@ Besucher: ${tln.name} ${tln.vorname}`
// und anzeigen
// Params:
// n -> Anzahl der zu holnden Daten
- async function main(){
+ async function main() {
console.log("Running...")
$('.lastchange').text(`Letzte Änderungen: ${VDATE} rxf`)
$('#anmeldid').hide()
@@ -290,7 +311,7 @@ Besucher: ${tln.name} ${tln.vorname}`
$('#versn').html("Version: " + VERSION + ' vom ' + VDATE);
let fdatum = moment().format('YYYYMMDD')
// alle Anmeldungen ab fdatum in ein Array holen
- let fuehrungen = await fetchFromDbase({cmd: 'GET_ALLTEILN', fdatum: fdatum})
+ let fuehrungen = await fetchFromDbase({ cmd: 'GET_ALLTEILN', fdatum: fdatum })
setEvent(fuehrungen)
}