Einverstaendniserklaerung Modell - Mina Le Beauty Academy
Modell-Anmeldung
Einverständniserklärung für Modelle
Ausfüllen, unterschreiben, per WhatsApp senden. Du erhältst dein PDF sofort auf dein Gerät.
Die Behandlung erfolgt im Rahmen der praktischen Ausbildung gegen Materialkostenbeteiligung.
1 Gewünschte Behandlung
Mehrfachauswahl möglich. Kreuze alles an, was dich interessiert.
Die genannten Beträge sind reine Materialkosten. Termine sind nur nach Verfügbarkeit und Kursverlauf möglich.
2 Deine Daten
3 Gesundheitsfragen
Bitte alles ankreuzen, was auf dich zutrifft. Die Angaben schützen dich. Trifft nichts zu, lass die Felder leer.
Ausschlusskriterien
Trifft einer dieser Punkte zu, ist eine Behandlung als Übungsmodell nicht möglich.
Bitte vorher klären
Kein Ausschluss. Diese Punkte bespricht die Dozentin vor Behandlungsbeginn mit dir.
Danke für die Offenheit. Diese Punkte werden vor der Behandlung mit der Dozentin geklärt.
Die Anmeldung kannst du normal absenden.
4 Aufklärung und Einwilligung
5 Ort, Datum, Unterschrift
Mit Finger oder Maus hier unterschreiben
Mit Finger oder Maus hier unterschreiben
Auf dem Handy öffnet sich WhatsApp mit dem PDF im Anhang. Am Computer wird das PDF gespeichert und muss im Chat einmal manuell angehängt werden.
';
}
function renderKontra(){
$('ml-kontra-aus').innerHTML = KONTRA.filter(function(k){ return k.typ === 'aus'; }).map(kachel).join('');
$('ml-kontra-klaeren').innerHTML = KONTRA.filter(function(k){ return k.typ === 'klaeren'; }).map(kachel).join('');
Array.prototype.forEach.call(document.querySelectorAll('.ml-kontra-input'), function(c){
c.addEventListener('change', pruefeKontra);
});
}
function renderConsents(){
$('ml-consents').innerHTML = EINWILLIGUNGEN.map(function(c){
return '';
}).join('');
}
/* ---------- Logik ---------- */
function alterInJahren(){
var v = $('ml-geburt').value;
if(!v) return null;
var g = new Date(v), h = new Date();
var a = h.getFullYear() - g.getFullYear();
var m = h.getMonth() - g.getMonth();
if(m < 0 || (m === 0 && h.getDate() < g.getDate())) a--;
return a;
}
function gewaehlteBehandlungen(){
var liste = [];
BEHANDLUNGEN.forEach(function(b){ if($('t-'+b.id).checked) liste.push(b); });
return liste;
}
function zeigeSumme(){
var liste = gewaehlteBehandlungen();
var el = $('ml-summe');
if(!liste.length){ el.classList.add('d-none'); return; }
el.classList.remove('d-none');
el.innerHTML = '' + liste.length + ' Behandlung' + (liste.length > 1 ? 'en' : '') +
' gewählt. Materialkosten zusammen: ' + summeText(liste) + '';
}
function pruefeAlter(){
var a = alterInJahren();
var liste = gewaehlteBehandlungen();
var gesperrt = liste.filter(function(b){ return b.ab18; });
var minor = (a !== null && a < 18);
$('ml-minor-block').classList.toggle('d-none', !minor);
$('ml-sig2-block').classList.toggle('d-none', !minor);
$('ml-sig-label').textContent = minor ? 'Unterschrift Modell (minderjährig) *' : 'Unterschrift Modell *';
if(minor){
var txt = 'Unter 18 Jahren ist die Unterschrift einer erziehungsberechtigten Person notwendig. Bitte zum Termin mitbringen.';
if(gesperrt.length){
txt = gesperrt.map(function(b){ return b.name; }).join(' und ') +
' wird ausschließlich ab 18 Jahren durchgeführt. Bitte diese Auswahl entfernen.';
}
$('ml-minor-hint').textContent = txt;
if(pads['ml-sig2']) pads['ml-sig2'].resize();
}
}
function kontraAuswahl(){
var aus = [], klaeren = [];
KONTRA.forEach(function(k){
if($('k-'+k.id).checked){ (k.typ === 'aus' ? aus : klaeren).push(k.t); }
});
return {aus:aus, klaeren:klaeren};
}
function pruefeKontra(){
var a = kontraAuswahl();
$('ml-kontra-warn').classList.toggle('d-none', a.klaeren.length === 0);
var box = $('ml-kontra-stopp');
if(a.aus.length){
box.innerHTML = 'Eine Behandlung als Übungsmodell ist damit nicht möglich.' +
'
' + a.aus.join('
') + '
' +
'Das ist keine Absage für immer. Sobald der Punkt nicht mehr zutrifft, melde dich gern erneut. ' +
'Bei Fragen erreichst du uns direkt in der Akademie.';
box.classList.remove('d-none');
} else {
box.classList.add('d-none');
}
var gesperrt = a.aus.length > 0;
$('ml-btn-wa').disabled = gesperrt;
$('ml-btn-pdf').disabled = gesperrt;
$('ml-btn-wa').style.opacity = gesperrt ? .45 : 1;
$('ml-btn-pdf').style.opacity = gesperrt ? .45 : 1;
}
/* ---------- Unterschriftenfeld ---------- */
function initPad(canvasId, hintId){
var cv = $(canvasId), ctx = cv.getContext('2d');
var zeichnet = false, leer = true, letzte = null;
function stil(){
ctx.lineWidth = 2.4; ctx.lineCap = 'round'; ctx.lineJoin = 'round'; ctx.strokeStyle = '#3B2417';
}
function resize(){
var b = cv.getBoundingClientRect();
if(!b.width || !b.height) return;
var dpr = window.devicePixelRatio || 1;
if(cv.width === Math.round(b.width*dpr) && cv.height === Math.round(b.height*dpr)) return;
var alt = leer ? null : cv.toDataURL();
cv.width = Math.round(b.width * dpr);
cv.height = Math.round(b.height * dpr);
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
stil();
if(alt){ var img = new Image(); img. ctx.drawImage(img, 0, 0, b.width, b.height); }; img.src = alt; }
}
function xy(clientX, clientY){
var b = cv.getBoundingClientRect();
return {x: clientX - b.left, y: clientY - b.top};
}
function strich(a, b){
ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke();
if(leer){ leer = false; $(hintId).style.display = 'none'; }
}
function starte(clientX, clientY){
resize(); stil();
zeichnet = true; letzte = xy(clientX, clientY);
strich(letzte, {x: letzte.x + 0.01, y: letzte.y}); /* Punkt bei kurzem Tippen */
}
function ziehe(clientX, clientY){
if(!zeichnet) return;
var p = xy(clientX, clientY);
strich(letzte, p);
letzte = p;
}
function ende(){ zeichnet = false; }
if(window.PointerEvent){
cv.addEventListener('pointerdown', function(e){
e.preventDefault();
if(cv.setPointerCapture){ try{ cv.setPointerCapture(e.pointerId); }catch(x){} }
starte(e.clientX, e.clientY);
});
cv.addEventListener('pointermove', function(e){ if(zeichnet){ e.preventDefault(); ziehe(e.clientX, e.clientY); } });
cv.addEventListener('pointerup', ende);
cv.addEventListener('pointercancel', ende);
cv.addEventListener('pointerleave', ende);
} else {
cv.addEventListener('mousedown', function(e){ e.preventDefault(); starte(e.clientX, e.clientY); });
cv.addEventListener('mousemove', function(e){ if(zeichnet) ziehe(e.clientX, e.clientY); });
window.addEventListener('mouseup', ende);
cv.addEventListener('touchstart', function(e){ e.preventDefault(); var t = e.touches[0]; starte(t.clientX, t.clientY); }, {passive:false});
cv.addEventListener('touchmove', function(e){ e.preventDefault(); var t = e.touches[0]; ziehe(t.clientX, t.clientY); }, {passive:false});
cv.addEventListener('touchend', ende);
}
if(window.ResizeObserver){ new ResizeObserver(resize).observe(cv); }
window.addEventListener('resize', resize);
window.addEventListener('load', resize);
setTimeout(resize, 60);
resize();
return {
resize: resize,
istLeer: function(){ return leer; },
loeschen: function(){
ctx.save(); ctx.setTransform(1,0,0,1,0,0);
ctx.clearRect(0, 0, cv.width, cv.height); ctx.restore();
leer = true; $(hintId).style.display = '';
},
bild: function(){ return leer ? null : cv.toDataURL('image/png'); },
box: function(){ return cv.getBoundingClientRect(); }
};
}
/* ---------- Daten einsammeln ---------- */
function sammle(){
var b = gewaehlteBehandlungen();
var a = kontraAuswahl();
return {
behandlungen: b,
wunschtermin: $('ml-wunschtermin').value,
anmerkung: $('ml-anmerkung').value.trim(),
vorname: $('ml-vorname').value.trim(),
nachname: $('ml-nachname').value.trim(),
geburt: $('ml-geburt').value,
alter: alterInJahren(),
telefon: $('ml-telefon').value.trim(),
mail: $('ml-mail').value.trim(),
strasse: $('ml-strasse').value.trim(),
ort: $('ml-ort').value.trim(),
ebName: $('ml-eb-name').value.trim(),
ebTel: $('ml-eb-tel').value.trim(),
kontraAus: a.aus,
kontra: a.klaeren,
medikamente: $('ml-medikamente').value.trim(),
allergien: $('ml-allergien').value.trim(),
sonstiges: $('ml-sonstiges').value.trim(),
foto: $('ml-foto').checked,
ortUnter: $('ml-ort-unter').value.trim(),
datum: $('ml-datum').value
};
}
function pruefe(d){
var f = [];
if(d.kontraAus.length){
f.push('Bei den Ausschlusskriterien ist etwas angekreuzt. Eine Behandlung als Übungsmodell ist damit nicht möglich.');
}
if(!d.behandlungen.length) f.push('Bitte mindestens eine Behandlung auswählen.');
if(!d.vorname || !d.nachname) f.push('Bitte Vor- und Nachnamen eintragen.');
if(!d.geburt) f.push('Bitte das Geburtsdatum eintragen.');
if(!d.telefon) f.push('Bitte eine Telefonnummer für die Terminabstimmung eintragen.');
if(!d.ortUnter || !d.datum) f.push('Bitte Ort und Datum der Unterschrift eintragen.');
var minor = (d.alter !== null && d.alter < 18);
if(minor){
var gesperrt = d.behandlungen.filter(function(b){ return b.ab18; });
if(gesperrt.length){
f.push(gesperrt.map(function(b){ return b.name; }).join(' und ') +
' ist erst ab 18 Jahren möglich. Bitte diese Auswahl entfernen.');
}
}
if(minor && (!d.ebName || !d.ebTel)){
f.push('Bitte Name und Telefon der erziehungsberechtigten Person eintragen.');
}
var alleConsents = true;
Array.prototype.forEach.call(document.querySelectorAll('.ml-consent'), function(c){ if(!c.checked) alleConsents = false; });
if(!alleConsents) f.push('Bitte alle Punkte unter "Aufklärung und Einwilligung" bestätigen.');
if(pads['ml-sig1'].istLeer()) f.push('Bitte im Feld unterschreiben.');
if(minor && pads['ml-sig2'].istLeer()) f.push('Bitte Unterschrift der erziehungsberechtigten Person ergänzen.');
var box = $('ml-fehler');
if(f.length){
box.innerHTML = 'Da fehlt noch etwas:
' + f.join('
') + '
';
box.classList.remove('d-none');
box.scrollIntoView({behavior:'smooth', block:'center'});
return false;
}
box.classList.add('d-none');
return true;
}
function deDatum(iso){
if(!iso) return '';
var p = iso.split('-');
return p[2] + '.' + p[1] + '.' + p[0];
}
/* ---------- PDF ---------- */
function bauePdf(d){
var jsPDF = window.jspdf.jsPDF;
var doc = new jsPDF({unit:'mm', format:'a4'});
var M = 18, W = 210 - 2*M, y = 18;
function raum(h){ if(y + h > 280){ doc.addPage(); y = 18; } }
function absatz(text, size, style, farbe){
doc.setFont('helvetica', style||'normal'); doc.setFontSize(size||9.5);
doc.setTextColor(farbe||60);
var zeilen = doc.splitTextToSize(text, W);
zeilen.forEach(function(z){ raum(6); doc.text(z, M, y); y += (size||9.5) * 0.45 + 1.4; });
}
function titel(t){
raum(14); y += 4;
doc.setFont('helvetica','bold'); doc.setFontSize(11); doc.setTextColor(59,36,23);
doc.text(t, M, y); y += 2;
doc.setDrawColor(230,215,205); doc.line(M, y, M+W, y); y += 5.5;
}
function zeile(label, wert){
raum(6);
doc.setFont('helvetica','bold'); doc.setFontSize(9.5); doc.setTextColor(90,68,54);
doc.text(label, M, y);
doc.setFont('helvetica','normal'); doc.setTextColor(30);
var zeilen = doc.splitTextToSize(wert || '-', W - 52);
doc.text(zeilen, M + 52, y);
y += Math.max(5.6, zeilen.length * 4.6);
}
function haken(text, an){
raum(7);
doc.setDrawColor(120); doc.setLineWidth(0.3);
doc.rect(M, y - 3.2, 3.4, 3.4);
if(an){
doc.setLineWidth(0.6); doc.setDrawColor(40);
doc.line(M + .7, y - 1.6, M + 1.5, y - .4);
doc.line(M + 1.5, y - .4, M + 2.9, y - 2.9);
doc.setLineWidth(0.3);
}
doc.setFont('helvetica','normal'); doc.setFontSize(8.8); doc.setTextColor(45);
var zeilen = doc.splitTextToSize(text, W - 6);
doc.text(zeilen, M + 6, y);
y += Math.max(5.4, zeilen.length * 3.9) + 1.2;
}
/* Kopf */
doc.setFillColor(251,244,239); doc.rect(0, 0, 210, 30, 'F');
doc.setFont('helvetica','bold'); doc.setFontSize(15); doc.setTextColor(59,36,23);
doc.text('Einverständniserklärung Modell', M, 15);
doc.setFont('helvetica','normal'); doc.setFontSize(8.5); doc.setTextColor(120,95,80);
doc.text('Behandlung im Rahmen der praktischen Ausbildung', M, 21);
var kopfRechts = [CONFIG.akademie, CONFIG.strasse + ', ' + CONFIG.ort, CONFIG.web];
if(CONFIG.telefon) kopfRechts.push(CONFIG.telefon);
doc.setFontSize(8);
kopfRechts.forEach(function(t, i){ doc.text(t, 210 - M, 11 + i*3.6, {align:'right'}); });
y = 38;
titel(d.behandlungen.length > 1 ? '1. Gewünschte Behandlungen' : '1. Gewünschte Behandlung');
d.behandlungen.forEach(function(b, i){
zeile('Behandlung ' + (i+1), b.name + ' (' + preisText(b) + ' Materialkosten, ' + b.sub + ')');
});
if(d.behandlungen.length > 1){
zeile('Materialkosten', 'zusammen ' + summeText(d.behandlungen));
}
if(d.wunschtermin) zeile('Wunschtermin', deDatum(d.wunschtermin));
if(d.anmerkung) zeile('Anmerkung', d.anmerkung);
titel('2. Angaben zur Person');
zeile('Name', d.vorname + ' ' + d.nachname);
zeile('Geburtsdatum', deDatum(d.geburt) + (d.alter !== null ? ' (' + d.alter + ' Jahre)' : ''));
zeile('Telefon', d.telefon);
if(d.mail) zeile('E-Mail', d.mail);
if(d.strasse || d.ort) zeile('Anschrift', (d.strasse + ' ' + d.ort).trim());
if(d.alter !== null && d.alter < 18){
zeile('Erziehungsberechtigt', d.ebName + ', Telefon ' + d.ebTel);
}
titel('3. Gesundheitsangaben');
absatz('Die Ausschlusskriterien wurden abgefragt und treffen nach eigener Angabe nicht zu.', 9, 'normal');
y += 2;
if(d.kontra.length){
absatz('Folgende Punkte wurden angegeben und sind vor Behandlungsbeginn mit der anleitenden Fachkraft zu klären:', 9, 'normal');
y += 1;
d.kontra.forEach(function(t){ haken(t, true); });
} else {
absatz('Weitere zu klärende Punkte wurden nicht angegeben.', 9.5, 'normal');
y += 2;
}
zeile('Medikamente', d.medikamente || 'keine Angabe');
zeile('Allergien', d.allergien || 'keine Angabe');
if(d.sonstiges) zeile('Sonstiges', d.sonstiges);
titel('4. Aufklärung und Einwilligung');
EINWILLIGUNGEN.forEach(function(c){ haken(c.t, true); });
haken('Freiwillige Foto- und Videoeinwilligung für Ausbildungsdokumentation, Website und Social Media. Widerruf jederzeit möglich.', d.foto);
raum(46);
titel('5. Unterschrift');
zeile('Ort und Datum', d.ortUnter + ', ' + deDatum(d.datum));
var sigY = y + 2;
var s1 = pads['ml-sig1'].bild();
if(s1){
var b1 = pads['ml-sig1'].box();
var h1 = Math.min(24, 60 * (b1.height / b1.width));
doc.addImage(s1, 'PNG', M, sigY, 60, h1);
sigY += h1;
}
doc.setDrawColor(120); doc.line(M, sigY + 1, M + 70, sigY + 1);
doc.setFont('helvetica','normal'); doc.setFontSize(8); doc.setTextColor(110);
doc.text('Unterschrift ' + d.vorname + ' ' + d.nachname, M, sigY + 5);
y = sigY + 10;
var s2 = (d.alter !== null && d.alter < 18) ? pads['ml-sig2'].bild() : null;
if(s2){
raum(34);
var b2 = pads['ml-sig2'].box();
var h2 = Math.min(24, 60 * (b2.height / b2.width));
doc.addImage(s2, 'PNG', M, y, 60, h2);
y += h2;
doc.line(M, y + 1, M + 70, y + 1);
doc.setFontSize(8); doc.setTextColor(110);
doc.text('Unterschrift erziehungsberechtigte Person (' + d.ebName + ')', M, y + 5);
y += 10;
}
/* Fußzeile auf allen Seiten */
var seiten = doc.internal.getNumberOfPages();
for(var s = 1; s <= seiten; s++){
doc.setPage(s);
doc.setDrawColor(230,215,205); doc.line(M, 286, 210 - M, 286);
doc.setFont('helvetica','normal'); doc.setFontSize(7.5); doc.setTextColor(140);
var fuss = CONFIG.akademie + ' · ' + CONFIG.strasse + ' · ' + CONFIG.ort;
if(CONFIG.cubeFooter) fuss += ' | Formularvorlage: CUBE - das Würfelprinzip UG, www.cube-beratung.de';
doc.text(fuss, M, 290);
doc.text('Seite ' + s + ' von ' + seiten, 210 - M, 290, {align:'right'});
}
return doc;
}
function dateiname(d){
function clean(s){ return s.replace(/[^A-Za-z0-9äöüÄÖÜß]/g,'_'); }
return 'Einverstaendnis_' + clean(d.nachname) + '_' + clean(d.vorname) + '_' + (d.datum || '') + '.pdf';
}
function waText(d){
return 'Einverständniserklärung Modell\n' +
d.vorname + ' ' + d.nachname + '\n' +
'Behandlung: ' + d.behandlungen.map(function(b){ return b.name + ' (' + preisText(b) + ')'; }).join(', ') + '\n' +
(d.behandlungen.length > 1 ? 'Materialkosten zusammen: ' + summeText(d.behandlungen) + '\n' : '') +
(d.wunschtermin ? 'Wunschtermin: ' + deDatum(d.wunschtermin) + '\n' : '') +
'Telefon: ' + d.telefon + '\n' +
(d.kontra.length ? 'Hinweis: Gesundheitsangaben vorhanden, bitte vor der Behandlung klären.\n' : '') +
'Das unterschriebene PDF ist angehängt.';
}
/* ---------- Aktionen ---------- */
function pdfBereit(){
if(window.jspdf && window.jspdf.jsPDF) return true;
var box = $('ml-fehler');
box.innerHTML = 'Die PDF-Funktion ist nicht verfügbar. ' +
'Die Bibliothek jsPDF konnte nicht geladen werden. Das passiert bei fehlender Internetverbindung, ' +
'bei aktivem Werbeblocker oder wenn die Seite über http statt https läuft.';
box.classList.remove('d-none');
box.scrollIntoView({behavior:'smooth', block:'center'});
return false;
}
function pdfDownload(){
if(!pdfBereit()) return;
var d = sammle();
if(!pruefe(d)) return;
bauePdf(d).save(dateiname(d));
}
function perWhatsApp(){
if(!pdfBereit()) return;
var d = sammle();
if(!pruefe(d)) return;
var doc = bauePdf(d);
var name = dateiname(d);
var blob = doc.output('blob');
var datei = new File([blob], name, {type:'application/pdf'});
var text = waText(d);
if(navigator.canShare && navigator.canShare({files:[datei]})){
navigator.share({files:[datei], title:'Einverständniserklärung Modell', text:text})
.catch(function(){ /* Abbruch durch Nutzerin, nichts tun */ });
return;
}
doc.save(name);
window.open('https://wa.me/' + CONFIG.waNummer + '?text=' + encodeURIComponent(text), '_blank');
}
/* Fehler nicht verschlucken, sondern anzeigen */
window.addEventListener('error', function(ev){
var box = document.getElementById('ml-fehler');
if(!box) return;
box.innerHTML = 'Technischer Fehler: ' + (ev.message || 'unbekannt') +
' ' + (ev.filename || '') + ' Zeile ' + (ev.lineno || '?') + '';
box.classList.remove('d-none');
});
/* ---------- Start ---------- */
renderBehandlungen();
renderKontra();
renderConsents();
pads['ml-sig1'] = initPad('ml-sig1','ml-sighint1');
pads['ml-sig2'] = initPad('ml-sig2','ml-sighint2');
Array.prototype.forEach.call(document.querySelectorAll('[data-clear]'), function(btn){
btn.addEventListener('click', function(){ pads[btn.getAttribute('data-clear')].loeschen(); });
});
$('ml-geburt').addEventListener('change', pruefeAlter);
$('ml-btn-pdf').addEventListener('click', pdfDownload);
$('ml-btn-wa').addEventListener('click', perWhatsApp);
var heute = new Date();
$('ml-datum').value = heute.getFullYear() + '-' +
String(heute.getMonth()+1).padStart(2,'0') + '-' +
String(heute.getDate()).padStart(2,'0');
})();