﻿function SWLogin() { }
SWLogin.captchaSiteKey = '0x4AAAAAAAeob0xonsO0Ddzg';

SWLogin.checkToken = function () {
    const urlParams = new URLSearchParams(window.location.search);
    const token = urlParams.get('token');

    if (token != null) {
        //token aanwezig
        document.getElementById('token_input').value = token;
        let formData = new FormData(document.getElementById('token_form'));
        fetch('/data/account/checktoken.aspx', {
            method: 'POST',
            body: formData,
        })
            .then(response => response.json())
            .then(data => {
                if (data.loggedIn) {
                    //Set klant_id
                    if (data.klant_id != undefined && data.klant_id > 0) {
                        SWPortalData.data.klant_id = data.klant_id;
                        SWPortalData.saveToLocalStorage();
                    }

                    document.location.href = '/lib/10_html/20_account/afspraken.html';
                } else if (data.captcha) {
                    SWLogin.showCaptcha();
                } else {
                    SWLogin.showLogin();
                }
            });
    } else {
        SWLogin.showLogin();
    }
}

SWLogin.showCaptcha = function (show = true) {
    if (show) {
        SWTemplate.showSpinner(false);
        SWLogin.showLogin(false);
        document.getElementById('token_form').style.display = 'block';

        if (document.getElementById('captcha_button') != undefined) {
            document.getElementById('captcha_button').style.display = 'block';
        } else {
            let elem = document.createElement('div');
            elem.className = 'cf-turnstile';
            elem.dataset['sitekey'] = SWLogin.captchaSiteKey;
            elem.dataset['action'] = 'portal_login';
            document.getElementById('token_form').insertAdjacentElement('afterbegin', elem);

            elem = document.createElement('script');
            elem.src = 'https://challenges.cloudflare.com/turnstile/v0/api.js';
            document.head.insertAdjacentElement('beforeend', elem);

            elem = document.createElement('button');
            elem.id = 'captcha_button';
            elem.className = 'btn btn-success';
            elem.innerHTML = 'Doorgaan';
            elem.addEventListener('click', SWLogin.checkToken);
            document.getElementById('token_form').insertAdjacentElement('afterend', elem);
        }
    } else {
        document.getElementById('token_form').style.display = 'none';
        if (document.getElementById('captcha_button') != undefined) {
            document.getElementById('captcha_button').style.display = 'none';
        }
    }
}

SWLogin.showLogin = function (show = true) {
    let beheer = SWStandaardwaarden.getWaarde('portal_klant_beheer');
    if (beheer == 'ja' || beheer == 'readonly') {
        if (show) {
            SWTemplate.showSpinner(false);
            SWLogin.showCaptcha(false);
            document.getElementById('login_form').style.display = 'block';
            document.getElementById('login_form').addEventListener('submit', SWLogin.sendMail);

            if (document.getElementById('login_button') != undefined) {
                document.getElementById('login_button').style.display = 'block';
            } else {
                elem = document.createElement('button');
                elem.id = 'login_button';
                elem.className = 'btn btn-success';
                elem.innerHTML = 'Versturen';
                elem.addEventListener('click', SWLogin.sendMail);
                document.getElementById('login_form').insertAdjacentElement('afterend', elem);
            }
        } else {
            document.getElementById('login_form').style.display = 'none';
            if (document.getElementById('login_button') != undefined) {
                document.getElementById('login_button').style.display = 'none';
            }
        }
    }
    else {
        SWTemplate.showSpinner(false);
        SWTemplate.showAlert('login_error', 'Beheer van afspraken uitgeschakeld. Neem contact op met de salon voor het verplaatsen van de afspraak.');
    }
}

SWLogin.sendMail = function (e) {
    e.preventDefault();
    let formData = new FormData(document.getElementById('login_form'));
    fetch('/data/account/requestmail.aspx', {
        method: 'POST',
        body: formData,
    })
        .then(response => response.json())
        .then(data => {
            if (data.send) {
                SWLogin.showLogin(false);
                SWTemplate.showAlert('login_melding', 'Bericht is verstuurd');
            } else {
                SWLogin.showLogin();
                SWTemplate.showAlert('login_melding', 'Kon mail niet versturen, controleer emailadres en probeer opnieuw');
            }
        });
}