<?php
require 'bootstrap.php';
require 'aoptons.php';
const VERIFICATIION_PAGE_NUMBER = 1;
const PROFILE_PAGE_NUMBER = 2;
$page = 1;
$finished = false;
$error = "";

// Logged in user -> skip email verification
if (!empty($_SESSION['user'])
    && empty($_POST['submit'])
    && (empty($_SESSION['saveForm']['email']) || count($_SESSION['saveForm']) < 2)
) {
    $user = Database::getConnection()->aanvrager()->where("id = ?", $_SESSION['user'])->fetch();

    $_SESSION['saveForm']['email'] = $user['email'];
    if (!empty($user['data'])) {
        $userData = json_decode($user['data'], true);
        foreach ($userData as $k => $v) {
            $_SESSION['saveForm'][$k] = $v;
        }
    }
    $page = getNextPageId(PROFILE_PAGE_NUMBER);
}

if (!empty($_POST['submit']) ) {
    $currentPage = (int) $_POST['page'];
    foreach($_POST as $k=>$v) {
        if (!is_array($v)) {
            $_SESSION['saveForm'][$k] = filter_var($v, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
        } else {
            $_SESSION['saveForm'][$k] = implode(", ", $v);
        }
        if ($currentPage == PROFILE_PAGE_NUMBER) {
            $_SESSION['userInfo'][$k] = $_SESSION['saveForm'][$k];
        }
    }
    uploadFiles();

    if (!empty($_SESSION['verificationId'])) {
        setVerificationToUsed($_SESSION['verificationId']);
    }
    $finished = submitLogic($currentPage);
    $page = getNextPageId($currentPage);
    
}

if (!empty($_GET['previous']) ) {
    try {
        $page = getPageByUuid($_GET['previous']);
    } catch (Exception $e) {
        $error = $e->getMessage();
    }
}

// Verification link
if (isset($_GET['hash'])) {
    $hash = filter_var($_GET['hash']);
    $result = validateEmail($hash);
    if (!empty($result['email'])) {
        if ($result['isUsed'] == 1) {
            $error = "Deze verificatielink is reeds gebruikt, u dient zich opnieuw aan te melden om verder te kunnen.";
        } else {
            $_SESSION['saveForm']['email'] = $result['email'];
            $_SESSION['verificationId'] = $result['id'];
            $page = PROFILE_PAGE_NUMBER;
        }
    } else {
        $error = "De verificatie mogelijkheid is verstreken, u dient zich opnieuw aan te melden om verder te kunnen.";
    }
}

$pageInfo = Database::getConnection()->page("id = ?", $page)->fetch();

$pageNumber = Database::getConnection()->page("weight <= ?", $pageInfo['weight'])->count('*');
$pageCount = Database::getConnection()->page()->count('*');

function showSubmissionForm(int $page = VERIFICATIION_PAGE_NUMBER)
{

    echo '<form action="'.htmlspecialchars($_SERVER['PHP_SELF']).'" class="needs-validation" novalidate method="post" enctype="multipart/form-data">';
        getAllFields($page);
    echo '<input type="hidden" name="page" value="'. $page .'">';
    echo '<div class="row">';
    if ($page > PROFILE_PAGE_NUMBER) {
//        echo '<div class="col"><a href="quote.php?previous='.getPreviousPageUuid($page).'" class="btn btn-secondary">Vorige</a></div>';
    }
        echo '<div class="col text-end"><input class="btn btn-success" type="submit" name="submit" value="Volgende"></div>';
    echo '</div>';
    echo '</form>';
}

function showVerificationForm()
{
	$verifyPageText = getOption('verifyPageText');
	include "template/verificationForm.php";
}

if (!$finished) {
    if ($page == VERIFICATIION_PAGE_NUMBER) {
        showVerificationForm();
    } else { ?>
        <h2><?php echo $pageInfo["name"]; ?></h2>
        <p>Stap <?php echo $pageNumber; ?> van  <?php echo $pageCount; ?></p>
        <?php
        displayError($error);
        showSubmissionForm($page);
    }
} else {
    $text = getOption('submitText');
    $title = "Bedankt!";
    include "template/cardMessage.php";
}


?>
<script type="text/javascript">
    $(document).ready( function() {
        $("input").inputmask();
        $('input[type=email]').inputmask({
            mask: "*{1,20}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}.*{2,6}[.*{1,2}]",
            greedy: false,
            onBeforePaste: function (pastedValue, opts) {
              pastedValue = pastedValue.toLowerCase();
              return pastedValue.replace("mailto:", "");
            },
            definitions: {
              '*': {
                validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~\-]",
                casing: "lower"
              }
            }
          });
        $('input[type=radio][name=type]').closest( ".mb-3" ).append('<div id="companyFields"></div>');
        $('input[type=radio][name=type]').change(function() {
            let selected = $("input[type='radio'][name='type']:checked");
            let selectedVal = "";
            if (selected.length > 0) {
                selectedVal = selected.val();
            }
            if (selectedVal === "Bedrijf") {
                let ajaxUrl = atob('YWpheC9nZXRFeHRyYUNvbXBhbnlGaWVsZHMucGhw');
                $.ajax({
                    url: ajaxUrl,
                    type: "post",
                    success: function(data){
                        //adds the echoed response to our container
                        $("#companyFields").html(data);
                        $("#kvk_nr").inputmask();
                    }
                });
            } else {
                $("#companyFields").html("");
            }
        });
        $('input[type=radio][name=type]').trigger("change");
    });
</script>
<?php
include 'footer.php';

