function SWKlant() { }

SWKlant.invullen = function () {
    if (SWPortalData.data.klant.rows.length > 0 && SWPortalData.data.klant.rows[0].klant_id > 0) {
        let form_inputs = document.querySelectorAll('[id^=formgenerator_reserveren_klanten__]');
        form_inputs.forEach(input => {
            let key = input.id.substring(34);
            if (SWPortalData.data.klant.rows[0][key] != undefined && SWPortalData.data.klant.rows[0][key] != "") {
                let id = "formgenerator_reserveren_klanten__" + key;
                document.getElementById(id).value = SWPortalData.data.klant.rows[0][key];
            }
        });
    }
}

SWKlant.saveFormulier = function () {
    let waardes = {};

    let form_inputs = document.querySelectorAll('[id^=formgenerator_reserveren_klanten__]');
    form_inputs.forEach(input => {
        let key = input.id.substring(34);
        waardes[key] = input.value;
    });

    if (SWPortalData.data["klant"].rows.length > 0) {
        //UPDATE
        for (key in waardes) {
            if (key == 'opmerkingen') {
                SWPortalData.data.nieuwereservering.rows[0].opmerkingen = waardes[key];
            } else {
                SWPortalData.data.klant.rows[0][key] = waardes[key];
            }
        }

        if (waardes["klant_id"] == "") {
            SWPortalData.data.klant.rows[0]["company_id"] = SWPortalData.data.company_id;
            SWPortalData.data.klant.rows[0]["actief"] = 1;
        }
    }
    else {
        //NEW
        let klant = waardes;
        klant["company_id"] = SWPortalData.data.company_id;
        klant["actief"] = 1;

        SWPortalData.data["klant"].rows.push(klant);
        SWPortalData.data.nieuwereservering.rows[0].opmerkingen = waardes['opmerkingen'];
    }

    SWPortalData.saveToLocalStorage();

    //Klant online opslaan
    $.post("/data/account/registreer.aspx", SWPortalData.data.klant.rows[0], function (data) {
        let registreren_gelukt = SWKlant.checkRegistratie(data);

        if (registreren_gelukt) {
            document.location.href = "/lib/10_html/10_reserveren/bevestig.html";
        }
    }, "json");
}

SWKlant.checkRegistratie = function (data) {
    let fout = data["fout"];
    let klant = data["klant"];

    if (fout.length > 0) {
        SWKlant.getFoutmelding(fout);
        return false;
    }
    else {
        let k_id = klant["rows"][0]["klant_id"];
        SWPortalData.data["klant_id"] = klant["rows"][0]["klant_id"];
        SWPortalData.data["klant"] = klant;

        document.getElementById("formgenerator_reserveren_klanten__klant_id").value = k_id;

        SWPortalData.saveToLocalStorage();
        return true;
    }
}

SWKlant.getFoutmelding = function (fout) {
    let foutmelding = {
        email_bestaat: "Dit e-mailadres is al in gebruik. Klik <a href=\"/lib/10_html/30_account/nieuwwachtwoord.html\" class=\"foutmelding-link\">hier</a> om een nieuw wachtwoord aan te laten maken bij dit e-mailadres",
    };

    let melding = "";
    if (fout.length > 0) {
        melding = "Fout: " + foutmelding[fout[0]];
    }

    document.getElementById("foutmelding_registreren").innerHTML = melding;
    document.getElementById("foutmelding_registreren").className = "foutmelding";
}

SWKlant.betaaloptiesKlant = function (email, callb) {
    jQuery.post("/data/account/checkuser.aspx", { 'email': email }, function (data) {
        let klant_bestaat = data.userExists; // true/false
        let klant_betalen = data.mustPay; // true/false/null
        let ret = {
            bestaat: klant_bestaat,
            betalen: klant_betalen
        };
        callb(ret);
    }, "json");
}

SWKlant.verplichtProduct = function (producten, callb) {
    jQuery.post("/data/account/checkproducts.aspx", { 'producten': producten }, function (data) {
        let bevat_product = data.found;
        callb(bevat_product);
    }, "json");
}

SWKlant.checkKlantenstop = function (type = "melding") {
    let klantenstop = SWStandaardwaarden.getWaarde("klantenstop").toLowerCase() == 'ja';
    if (type == "form") {
        if (klantenstop) {
            let email = document.getElementById("formgenerator_reserveren_klanten__email").value;
            SWKlant.betaaloptiesKlant(email, function (data) {
                if (data.bestaat) {
                    //klant bestaat al, dus boeking verwerken
                    SWKlant.saveFormulier();
                } else {
                    //klant niet bekend bij salon, toon melding
                    SWTemplate.showAlert("klantenstop", SWStandaardwaarden.getWaarde("klantenstop_melding"));
                    document.location.hash = 'klantenstop';
                    let knop = document.getElementById("volgende_knop");
                    knop.disabled = true;
                }
            });
        } else {
            //geen klantenstop
            SWKlant.saveFormulier();
        }
    } else if (type == "melding") {
        if (klantenstop) {
            SWTemplate.showAlert("klantenstop", SWStandaardwaarden.getWaarde("klantenstop_melding"));
        }
    }
}
