Add sendmail to admin

Add price calculation
Add link to privacy policy
This commit is contained in:
Artur Savitskiy 2024-05-14 00:05:57 +02:00
parent 5c2317d839
commit 7d465897a7
5 changed files with 60 additions and 8 deletions

View File

@ -76,5 +76,21 @@
$result = mysqli_query($connection, $querystr); $result = mysqli_query($connection, $querystr);
$to = REGISTRATION_MAIL;
$title = 'Neue Anmeldung bei Li-Dance';
$message = "
<html><head><title>Neue Anmeldung bei Li-Dance</title></head><body>
<p>{$firstname} {$lastname} aus {$city} hat sich angemeldet.</p>
<p>Btte bearbeite diese möglichst schnell: <a href='" . REGISTRATION_URL . "'>Zur Anmeldung</a></p>
</body></html>";
$header[] = 'MIME-Version: 1.0';
$header[] = 'Content-type: text/html; charset=iso-8859-1';
$header[] = 'To: ' . REGISTRATION_MAIL;
$header[] = 'From: Li-Dance Registrierung <registration@li-dance.de>';
$header[] = 'X-Mailer: PHP/' . phpversion();
mb_send_mail($to, $title, $message, implode("\r\n", $header));
echo json_encode('{ "result": "' . $result . '" }'); echo json_encode('{ "result": "' . $result . '" }');
?> ?>

View File

@ -9,4 +9,8 @@ define('IMAGE_PATH', dirname($_SERVER["REQUEST_URI"]) . '/images/');
define('MAGIC_WORD', 'AED717B292EE4F08A0AEE4EBA4B1B1FA'); define('MAGIC_WORD', 'AED717B292EE4F08A0AEE4EBA4B1B1FA');
define('MAGIC_DATE', 'YmdHi'); define('MAGIC_DATE', 'YmdHi');
define('API_KEY', '754259b6-caf0-4eca-a1f6-812731adae79'); define('API_KEY', '754259b6-caf0-4eca-a1f6-812731adae79');
define('REGISTRATION_MAIL', 'info@li-dance.de');
define('REGISTRATION_URL', 'https://test.li-dance.de/registrations');
?> ?>

View File

@ -153,14 +153,16 @@
<form [formGroup]="thirdFormGroup" class="flexContainerColumn width50"> <form [formGroup]="thirdFormGroup" class="flexContainerColumn width50">
<ng-template matStepLabel>Einwilligung</ng-template> <ng-template matStepLabel>Einwilligung</ng-template>
<div class="flexContainerColumn whitebox"> <div class="flexContainerColumn whitebox">
<p>{{infoTextEinwilligungserklaerung}}</p> <p [innerHTML]="infoTextEinwilligungserklaerung"></p>
<mat-checkbox formControlName="dataStorageConsent" required>Einwilligung zur Erhebung, Speicherung, Verarbeitung und Nutzung von personenbezogenen Daten</mat-checkbox> <mat-checkbox formControlName="dataStorageConsent" required>Einwilligung zur Erhebung, Speicherung, Verarbeitung und Nutzung von personenbezogenen Daten</mat-checkbox>
</div> </div>
<br style="margin-bottom: 20px;">
<div class="flexContainerColumn whitebox"> <div class="flexContainerColumn whitebox">
<p>{{infoTextEinverstaendniserklaerung}}</p> <p [innerHTML]="infoTextEinverstaendniserklaerung"></p>
<mat-checkbox formControlName="multimediaConsent" required>Einverständniserklärung zur Nutzung von Bild- und Videomaterial</mat-checkbox> <mat-checkbox formControlName="multimediaConsent" required>Einverständniserklärung zur Nutzung von Bild- und Videomaterial</mat-checkbox>
</div> </div>
<div class="flexContainerColumn whitebox big">
<p>Ihr monatlicher Beitrag: {{registrationPrice | currency: 'EUR' }}</p>
</div>
</form> </form>
<div class="buttonsContainer"> <div class="buttonsContainer">

View File

@ -61,6 +61,7 @@
.big { .big {
font-size: 1.9em; font-size: 1.9em;
line-height: 1.9em;
p { p {
text-align: center; text-align: center;

View File

@ -3,6 +3,7 @@ import {FormBuilder, FormGroup, Validators } from '@angular/forms';
import {ValidatorService} from "angular-iban"; import {ValidatorService} from "angular-iban";
import {StudentRegistration} from "../../../models/student-registration"; import {StudentRegistration} from "../../../models/student-registration";
import {RegistrationsService} from "../../../services/registrations/registrations.service"; import {RegistrationsService} from "../../../services/registrations/registrations.service";
import { isDate } from 'moment';
export const MY_DATE_FORMAT= { export const MY_DATE_FORMAT= {
parse: { parse: {
@ -44,29 +45,30 @@ export class RegistrationWizardComponent implements OnInit {
infoTextEinwilligungserklaerung = infoTextEinwilligungserklaerung =
'Ich bin darüber informiert worden, dass meine personenbezogenen Daten aufgrund rechtlicher ' + 'Ich bin darüber informiert worden, dass meine personenbezogenen Daten aufgrund rechtlicher ' +
'Vorgaben mindestens 10 Jahre nach Vertragsende aufbewahrt werden müssen. ' + 'Vorgaben mindestens 10 Jahre nach Vertragsende aufbewahrt werden müssen. ' +
'Ich bin damit einverstanden, dass die oben genannten personenbezogenen Daten zu den oben ' + 'Ich bin damit einverstanden, dass die in der <a href="https://li-dance.de/files/dokumente/li-dance-datenschutz.pdf" target="_blank">Datenschutzerklärung</a> genannten personenbezogenen Daten zu den dort ' +
'genannten Zwecken erhoben, gespeichert, verarbeitet, genutzt und ggfs. weitergegeben werden. ' + 'genannten Zwecken erhoben, gespeichert, verarbeitet, genutzt und ggfs. weitergegeben werden. ' +
'Ich bin darauf hingewiesen worden, dass die im Rahmen der vorstehend genannten Zwecke ' + 'Ich bin darauf hingewiesen worden, dass die im Rahmen der genannten Zwecke ' +
'erhobenen persönlichen Daten meiner Person unter Beachtung der EU-' + 'erhobenen persönlichen Daten meiner Person unter Beachtung der EU-' +
'Datenschutzgrundverordnung (DSGVO) erhoben, gespeichert, genutzt und übermittelt werden. ' + 'Datenschutzgrundverordnung (DSGVO) erhoben, gespeichert, genutzt und übermittelt werden. ' +
'Ich bin zudem darauf hingewiesen worden, dass die Erhebung, Speicherung, Verarbeitung und ' + 'Ich bin zudem darauf hingewiesen worden, dass die Erhebung, Speicherung, Verarbeitung und ' +
'Nutzung meiner Daten auf freiwilliger Basis erfolgt. ' + 'Nutzung meiner Daten auf freiwilliger Basis erfolgt. ' +
'Ich bin darüber informiert worden, dass diese Einverständniserklärung jederzeit mit sofortiger ' + 'Ich bin darüber informiert worden, dass diese Einverständniserklärung jederzeit mit sofortiger ' +
'Wirkung verweigert, bzw. jederzeit mit Wirkung für die Zukunft widerrufen werden kann. Meine ' + 'Wirkung verweigert, bzw. jederzeit mit Wirkung für die Zukunft widerrufen werden kann. Meine ' +
'Widerrufserklärung werde ich richten an die unten angegebene Adresse'; 'Widerrufserklärung werde ich richten an die Tanz- und Sportschule Li-Dance, Inh. Lydia Kolepp, Dieselstr. 10, 61231 Bad Nauheim';
infoTextEinverstaendniserklaerung = infoTextEinverstaendniserklaerung =
'Ich bin damit einverstanden, dass Bilder und Videos der Tanzschule und der Veranstaltungen, ' + 'Ich bin damit einverstanden, dass Bilder und Videos der Tanzschule und der Veranstaltungen, ' +
'die durch die Tanzschule organisiert sind und/oder an denen die Tanzschule teilnimmt, auf ' + 'die durch die Tanzschule organisiert sind und/oder an denen die Tanzschule teilnimmt, auf ' +
'denen ich selbst, mein Sohn oder meine Tochter zu sehen ist auf den Webseiten von Li-Dance und in anderen Online- und/oder Printmedien veröffentlicht ' + 'denen ich selbst, mein Sohn oder meine Tochter zu sehen ist auf den Webseiten von Li-Dance und in anderen Online- und/oder Printmedien veröffentlicht ' +
'werden und für Werbezwecke von Li-Dance genutzt werden dürfen. Rechtsgrundlage: Das Recht am eigenen Bild ist ein Teil des vom Gesetz geschützten ' + 'werden und für Werbezwecke von Li-Dance genutzt werden dürfen. <br/>' +
'Rechtsgrundlage: Das Recht am eigenen Bild ist ein Teil des vom Gesetz geschützten ' +
'allgemeinen Persönlichkeitsrechts (§22 Kunsturheberrechtsgesetz). Es gilt der Grundsatz, dass ' + 'allgemeinen Persönlichkeitsrechts (§22 Kunsturheberrechtsgesetz). Es gilt der Grundsatz, dass ' +
'Bild- und Video-Material nur mit Einwilligung des Abgebildeten verbreitet oder veröffentlicht ' + 'Bild- und Video-Material nur mit Einwilligung des Abgebildeten verbreitet oder veröffentlicht ' +
'werden kann. Es handelt sich hierbei um eine rechtsgeschäftliche Willenserklärung. Deshalb ' + 'werden kann. Es handelt sich hierbei um eine rechtsgeschäftliche Willenserklärung. Deshalb ' +
'kann bei Minderjährigen eine Einwilligung nur durch den gesetzlichen Vertreter erfolgen. ' + 'kann bei Minderjährigen eine Einwilligung nur durch den gesetzlichen Vertreter erfolgen. ' +
'Diese Einverständniserklärung kann mit sofortiger Wirkung verweigert, bzw. jederzeit mit ' + 'Diese Einverständniserklärung kann mit sofortiger Wirkung verweigert, bzw. jederzeit mit ' +
'Wirkung für die Zukunft widerrufen werden. Ein Widerruf kann einen Ausschluss aus der ' + 'Wirkung für die Zukunft widerrufen werden. Ein Widerruf kann einen Ausschluss aus der ' +
'jeweiligen Veranstaltung zur Folge haben.' + 'jeweiligen Veranstaltung zur Folge haben.<br/>' +
'Ein späterer rückwirkender Widerruf für aktuell stattfindende bzw. bereits stattgefundene ' + 'Ein späterer rückwirkender Widerruf für aktuell stattfindende bzw. bereits stattgefundene ' +
'Veranstaltungen ist ausgeschlossen.'; 'Veranstaltungen ist ausgeschlossen.';
@ -126,6 +128,33 @@ export class RegistrationWizardComponent implements OnInit {
} }
} }
get registrationPrice(): number {
const currentDate = new Date();
const birthdate = this.firstFormGroup.get('birthday')?.value ? this.firstFormGroup.get('birthday')?.value.toDate() : '' ;
if(!isDate(birthdate)) {
return 0;
}
const monthDifference = currentDate.getMonth() - birthdate.getMonth();
let age = currentDate.getFullYear() - birthdate.getFullYear();
// Adjust age if the birthdate hasn't occurred yet this year
if (monthDifference < 0 || (monthDifference === 0 && currentDate.getDate() < birthdate.getDate())) {
age--;
}
if (age >= 4 && age <= 6) {
return 37;
} else if (age >= 7 && age <= 17) {
return 40;
} else if (age >= 18) {
return 50;
} else {
return 0;
}
}
capitalizeFirstTwoLetters() { capitalizeFirstTwoLetters() {
let ibanValue = this.secondFormGroup.get("iban")?.value let ibanValue = this.secondFormGroup.get("iban")?.value
if(ibanValue.length >= 2) { if(ibanValue.length >= 2) {