|
|
|
|
@@ -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 = `<label for "ftermin" class="labeltext"><strong>Umbuchung auf</strong></label><br /><select name="ftermin" id="ftermin"><option>-- Bitte wählen Sie ein Datum aus--</option>`
|
|
|
|
|
for (let f of fuehrungen) {
|
|
|
|
|
if(f.datum == teilnehmer.fdatum) {
|
|
|
|
|
if (f.datum == teilnehmer.fdatum) {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
let count = await fetchFromDbase({cmd: 'GET_COUNTS_DATE', date: f.datum})
|
|
|
|
|
let count = await fetchFromDbase({ cmd: 'GET_COUNTS_DATE', date: f.datum })
|
|
|
|
|
count = count ? parseInt(count) : 0
|
|
|
|
|
if(count + anzahl >= maxVisitors) {
|
|
|
|
|
if (count + anzahl >= maxVisitors) {
|
|
|
|
|
continue // wenn der Platz nicht reicht, nicht anzeigen
|
|
|
|
|
}
|
|
|
|
|
r += `<option id=${f.id} value=${f.datum}>`
|
|
|
|
|
r += `${f.wtag.substring(0,2)} , ${moment(f.datum).format('DD.MM.YYYY')} ${f.uhrzeit} `
|
|
|
|
|
r += `Frei ${(maxVisitors-count) > 0 ? maxVisitors-count : 0}</option>`
|
|
|
|
|
r += `${getWochentag(f.datum).substring(0, 2)} , ${moment(f.datum).format('DD.MM.YYYY')} ${await getFuhrzeit(f.datum, teilnehmer.typ)} `
|
|
|
|
|
r += `Frei ${(maxVisitors - count) > 0 ? maxVisitors - count : 0}</option>`
|
|
|
|
|
}
|
|
|
|
|
r += '</select>'
|
|
|
|
|
$('#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 <br /><br />${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,13 +172,13 @@ $(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 <strong>${teilnehmer.anzahl} </strong> Personen angemeldet.`)
|
|
|
|
|
$('#bsave').hide()
|
|
|
|
|
$('#newperson').show()
|
|
|
|
|
@@ -166,7 +189,7 @@ $(document).ready(() => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 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}<br />`
|
|
|
|
|
}
|
|
|
|
|
body_html += `<br />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)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|