<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ERROR);



/*============================================
=            1st block - the form            =
============================================*/

use phpformbuilder\Form;
use phpformbuilder\Validator\Validator;

// Start the PHP session
session_start();

// Include the main Form class
include_once rtrim($_SERVER['DOCUMENT_ROOT'], DIRECTORY_SEPARATOR) . '/phpformbuilder/autoload.php';

/* =============================================
    validation if posted
============================================= */

if ($_SERVER["REQUEST_METHOD"] == "POST" && Form::testToken('fg-form')) {
    // create validator & auto-validate required fields
    $validator = Form::validate('fg-form');

    // check for errors
    if ($validator->hasErrors()) {
        $_SESSION['errors']['fg-form'] = $validator->getAllErrors();
    } else {
        // clear the form
        Form::clear('fg-form');
    }
}


// -------------------------------
// MySQL connection
// -------------------------------
$host     = "localhost";
$user     = "root";
$password = "Xilorp-2021!";
$dbname   = "community-tool";

$mysqli = new mysqli($host, $user, $password, $dbname);

if ($mysqli->connect_error) {
    die("DB Connection failed: " . $mysqli->connect_error);
}

// -------------------------------
// Create the Form
// -------------------------------
$form = new Form('fg-form', 'horizontal', 'novalidate, data-fv-no-icon=true', 'bs5');

// $form->startFieldset('Add New User');

$form->addInput('text', 'firstname', '', 'Vorname', 'required=required');
$form->addInput('text', 'lastname', '', 'Nachname', 'required=required');
$form->addInput('text', 'fiscode', '', 'FIS Code', 'required=required');
$form->addInput('text', 'birthdate', '', 'Geburtsdatum', 'required=required');
$form->addInput('text', 'street', '', 'Strasse', 'required=required');
$form->addInput('text', 'postalcode', '', 'Postleitzahl', 'required=required');
$form->addInput('text', 'city', '', 'Ort', 'required=required');
$form->addInput('text', 'country', '', 'Land', 'required=required');
$form->addInput('text', 'phonenumber', '',  'Telefonnummer','required=required');
$form->addInput('text', 'email', '', 'E-Mail Adresse', 'required=required');
$form->addOption('race-category', 'option-a', 'A', '', 'selected');
$form->addOption('race-category', 'option-b', 'B', '', '');
$form->addOption('race-category', 'option-c', 'C+D', '', '');
$form->addSelect('race-category', 'Kategorie', '');
$form->startDependentFields('race-category', 'option-a');
$form->addCheckbox('category-a', '23.03.2026 - Riesenslalom', '230326-rtl', 'data-toggle=false');
$form->addCheckbox('category-a', '24.03.2026 - Slalom', '240326-slalom', 'data-toggle=false');
$form->addCheckbox('category-a', '26.03.2026 - Super G', '260326-superg', 'data-toggle=false');
$form->addCheckbox('category-a', '28.03.2026 - FIS MASTER CUP Riesenslalom', '280328-fis-master-rtl', 'data-toggle=false');
$form->printCheckboxGroup('category-a', 'Kategorie A', true, '');
$form->endDependentFields();
$form->startDependentFields('race-category', 'option-b');
$form->addCheckbox('category-b', '23.03.2026 - Super G', '230326-b-superg', 'data-toggle=false');
$form->addCheckbox('category-b', '25.03.2026 - Slalom', '25032026-b-slalom', 'data-toggle=false');
$form->addCheckbox('category-b', '27.03.2026 - Riesenslalom', '27032026-b-rtl', 'data-toggle=false');
$form->addCheckbox('category-b', '28.03.2026 - FIS MASTER CUP Riesenslalom', '280328-fis-master-rtl', 'data-toggle=false');
$form->printCheckboxGroup('category-b', 'Kategorie B', true, '');
$form->endDependentFields();
$form->startDependentFields('race-category', 'option-c');
$form->addCheckbox('category-c', '24.03.2026 - Super G', '240326-c-superg', 'data-toggle=false');
$form->addCheckbox('category-c', '25.03.2026 - Riesenslalom', '25032026-c-rtl', 'data-toggle=false');
$form->addCheckbox('category-c', '27.03.2026 - Slalom', '27032026-c-slalom', 'data-toggle=false');
$form->addCheckbox('category-c', '28.03.2026 - FIS MASTER CUP Riesenslalom', '280326-fis-master-rtl', 'data-toggle=false');
$form->printCheckboxGroup('category-c', 'Kategorie C', true, '');
$form->endDependentFields();
$form->addOption('ticket', 'ticket-yes', 'Ja', '', '');
$form->addOption('ticket', 'ticket-no', 'Nein', '', 'selected');
$form->addSelect('ticket', 'Liftkarte (&euro; 45,-/ Tag)', '');
$form->startDependentFields('ticket', 'ticket-yes');
$form->addCheckbox('ticketdates', '22.03.2026', '22.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '23.03.2026', '23.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '24.03.2026', '24.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '25.03.2026', '25.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '26.03.2025', '26.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '27.03.2026', '27.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '28.03.2026', '28.03.2026', 'data-toggle=false');
$form->addCheckbox('ticketdates', '29.03.2026', '29.03.2026', 'data-toggle=false');
$form->printCheckboxGroup('ticketdates', 'Liftkarte', true, '');
$form->endDependentFields();
$form->addOption('merchandise', 'merchandise-yes', 'Ja', '', '');
$form->addOption('merchandise', 'merchandise-no', 'Nein', '', 'selected');
$form->addSelect('merchandise', 'Merchandise', '');
$form->startDependentFields('merchandise', 'merchandise-yes');
$form->addCheckbox('cbx_merchandise', 'Small', 'pullover-small', 'data-toggle=false');
$form->addCheckbox('cbx_merchandise', 'Medium', 'pullover-medium', 'data-toggle=false');
$form->addCheckbox('cbx_merchandise', 'Large', 'pullover-large', 'data-toggle=false');
$form->addCheckbox('cbx_merchandise', 'XL', 'pullover-XL', 'data-toggle=false');
$form->addCheckbox('cbx_merchandise', 'XXL', 'pullover-XXL', 'data-toggle=false');
$form->printCheckboxGroup('cbx_merchandise', 'Sweater (&euro; 35,-/Stk)', true, '');
$form->addCheckbox('cbx_tshirt', 'Small', 't-shirt-small', 'data-toggle=false');
$form->addCheckbox('cbx_tshirt', 'Medium', 't-shirt-medium', 'data-toggle=false');
$form->addCheckbox('cbx_tshirt', 'Large', 't-shirt-large', 'data-toggle=false');
$form->addCheckbox('cbx_tshirt', 'XL', 't-shirt-XL', 'data-toggle=false');
$form->addCheckbox('cbx_tshirt', 'XXL', 't-shirt-XXL', 'data-toggle=false');
$form->printCheckboxGroup('cbx_tshirt', 'T-Shirt (&euro; 25,-/Stk', true, '');
$form->endDependentFields();
$form->addOption('bankett', 'bankett-no', 'Nein', '', 'selected');
$form->addOption('bankett', 'bankett-yes', 'Ja', '', '');
$form->addSelect('bankett', 'FIS Bankett', '');
$form->startDependentFields('bankett', 'bankett-yes');
$form->addInput('text', 'bankett-yes', '', 'Anzahl Reservierung (&euro; 50,-/Person)', '');
$form->endDependentFields();
$form->addPlugin('formvalidation', '#fg-form', 'default', array('language' => 'en_US'));
$form->addBtn('submit', 'submit-btn', 1, 'Save', 'class=btn btn-primary');

$form->endFieldset();

// -------------------------------
// Handling Form Submission
// -------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST') {


        // Clean/validate values
        $firstname      = $_POST['firstname'];
        $lastname       = $_POST['lastname'];
        $email          = $_POST['email'];
        $fiscode        = $_POST['fiscode'];
        $birthdate      = $_POST['birthdate'];
        $street         = $_POST['street'];
        $postalcode     = $_POST['postalcode'];
        $city           = $_POST['city'];
        $country        = $_POST['country'];
        $phonenumber    = $_POST['phonenumber'];
        $racecategory   = $_POST['racecategory'];
        $racesA      	  = json_encode($_POST['category-a']);
        $racesB         = json_encode($_POST['category-b']);
        $racesC         = json_encode($_POST['category-c']);
        $racesD         = json_encode($_POST['category-d']);
        $ticketdates    = json_encode($_POST['ticketdates']);
        $cbx_merchandise= json_encode($_POST['cbx_merchandise']);
        $cbx_tshirt     = json_encode($_POST['cbx_tshirt']);
        $bankett        = $_POST['bankett-yes'];
        


        //-----------------------------------------
        // INSERT with Prepared Statement
        //-----------------------------------------
        $stmt = $mysqli->prepare(
            "INSERT INTO registrations (firstname, lastname, email, fiscode, birthdate, street, postalcode, city, country, phonenumber, racecategory, racesA, racesB, racesC, racesD, ticketdates,cbx_merchandise,cbx_tshirt,bankett)
             VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?)"
        );

        $stmt->bind_param("sssssssssssssssssss", 
        		$firstname, 
        		$lastname, 
        		$email, 
        		$fiscode, 
        		$birthdate, 
        		$street, 
        		$postalcode,
        		$city, 
        		$country, 
        		$phonenumber, 
        		$racecategory, 
        		$racesA, 
        		$racesB, 
        		$racesC, 
        		$racesD, 
        		$ticketdates,
        		$cbx_merchandise,        		
        		$cbx_tshirt,
        		$bankett);

        if ($stmt->execute()) {
            $form->clear('user-form'); // <-- pass the form name here
            $msg = '<div class="alert alert-success">User saved successfully!</div>';
        } else {
            $msg = '<div class="alert alert-danger">Database error: ' . $stmt->error . '</div>';
        }

        $stmt->close();

}

?>


<!DOCTYPE html>
<html>
    <head>
    <title>Test Form</title>

    <!-- Bootstrap 5 CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
	<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">


    <?php
    /*============================================================
    =            2nd block - css includes for plugins            =
    ============================================================*/

    $form->printIncludes('css');

    /*===================  End of 2nd block  ====================*/
    ?>
</head>
<body class="p-4">
	
	<div class="gtranslate_wrapper"></div>
<script>window.gtranslateSettings = {"default_language":"de","languages":["de","en","fr","it","es"],"wrapper_selector":".gtranslate_wrapper","switcher_horizontal_position":"right","switcher_vertical_position":"top"}</script>
<script src="https://cdn.gtranslate.net/widgets/latest/float.js" defer></script>

    <div class="container" >

        <h2>Anmeldung</h2>
        <hr>

        <?php if (!empty($msg)) echo $msg; ?>

        <?php
            $form->render();
        ?>

    </div>
<?php
$form->printIncludes('js');
$form->printJsCode();
?>

</body>
</html>
