import React from 'react';
import AgeContainer from './partials/age.jsx';
import ContactPersonContainer from './partials/contactperson.jsx';
import PersonalDataContainer from './partials/personaldata.jsx';
import SolidarityRegistrationContainer from './partials/registration-solidarity.jsx';
import GroupSelectionContainer from './partials/registration-groupbased.jsx';
import ArrivalContainer from './partials/arrival.jsx';
import AddonsContainer from "./partials/addons.jsx";
import PhotopermissionsContainer from "./partials/photopermissions.jsx";
import AllergiesContainer from "./partials/allergies.jsx";
import SummaryContainer from "./partials/summary.jsx";
import { FinalValidator } from '../../../assets/javascripts/registration-validator.js'
import { SelectedAddons } from '../../../assets/javascripts/registration-validator.js'
import SuccessContainer from "./after-submit/success.jsx";
import ReactDOM from "react-dom/client";
import AlreadyExistsContainer from "./after-submit/alreadyexist.jsx";
import { __ } from '../../../assets/javascripts/library.js';
const { configuration, labels, participant_data, event_data, local_groups } = window.solea_data;
function showStep(step) {
var steps = [
'step_1', // Age-Selector
'step_2', // Children only: Contact data
'step_3', // Personal data
'step_4', // Participation group
'step_5', // Arival & Departure
'step_6', // Addon information
'step_7', // Photo-Permissions
'step_8', // Allergies & Intolerances
'step_9' // Summary
];
for (var idx = 0; idx < steps.length; idx++) {
var currentElement = steps[idx];
document.getElementById(currentElement).classList.add('container_hidden');
document.getElementById(currentElement).classList.remove('container_visible');
}
document.getElementById('step_' + step).classList.remove('container_hidden');
document.getElementById('step_' + step).classList.add('container_visible');
document.getElementById('summary_loading').classList.remove('container_hidden');
document.getElementById('summary_loading').classList.add('container_visible');
document.getElementById('summary_content').classList.add('container_hidden');
document.getElementById('summary_content').classList.remove('container_visible');
if (step === 9) {
var [ayear, amonth, aday] = document.getElementById('anreise').value.split('-');
var [dyear, dmonth, dday] = document.getElementById('abreise').value.split('-');
document.getElementById('summary_eventname').innerHTML= event_data.event_name;
document.getElementById('summary_arrival').innerHTML=`${aday}.${amonth}.${ayear}`;
document.getElementById('summary_departure').innerHTML=`${dday}.${dmonth}.${dyear}`;
const response = fetch("/wp-json/solea/signup/preview_amount", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
anreise: document.getElementById('anreise').value,
abreise: document.getElementById('abreise').value,
event_id: event_data.id,
participation_group: document.querySelector('input[name="participant_group"]:checked').value,
selected_amount: document.querySelector('input[name="beitrag"]:checked').value,
addons: SelectedAddons(),
}),
})
.then((res) => res.json())
.then((data) => {
document.getElementById('payment_information_label').innerHTML = data.amount
document.getElementById('summary_loading').classList.add('container_hidden');
document.getElementById('summary_loading').classList.remove('container_visible');
document.getElementById('summary_content').classList.add('container_visible');
document.getElementById('summary_content').classList.remove('container_hidden');
});
}
}
function ParticipantSignup() {
let RegistrationMode;
switch (event_data.registration_mode) {
case 'solidarity':
RegistrationMode = SolidarityRegistrationContainer;
break;
case 'groupbased':
RegistrationMode = GroupSelectionContainer;
break;
}
const handleSubmit = (e) => {
e.preventDefault();
const form = e.target;
const data = new FormData(form);
if (!FinalValidator()) {
return;
}
const formData = Object.fromEntries(data.entries());
const response = fetch("/wp-json/solea/signup/do-register", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
addons: SelectedAddons(),
registration_data: formData
})
})
.then((res) => res.json())
.then((data) => {
const container = document.getElementById('solea_registration_form_frame');
const root = ReactDOM.createRoot(container);
if (data.already_exists === true) {
root.render(
| {__('Event location', 'solea')}: | {event_data.postalcode} {event_data.location} |
| {__('Event duration', 'solea')}: | {event_data.date_begin_formatted} - {event_data.date_end_formatted} |
| {__('Regular registration until', 'solea')}: | {event_data.last_minute_begin_formatted} |
| {__('Extended registration until', 'solea')}: | {event_data.registration_end_formatted} |
| {__('Cancellation', 'solea')}: |
100% {__('until', 'solea')} {event_data.last_minute_begin_formatted} {__('available', 'solea')} {event_data.reduced_return}% {__('until', 'solea')} {event_data.registration_end_formatted} {__('available', 'solea')} |
| { __('Do you have questions for registration? Please contact us by email:', 'solea') } {event_data.event_email} | |