﻿function SWCart() { }

SWCart.loadCart = function (readonly = false) {
    if (SWPortalData.data.nieuweregels == undefined) {
        return;
    }
    let regels = SWPortalData.data.nieuweregels.rows;
    let nieuweregels = [];
    regels.forEach(regel => {
        if (regel.stukprijs != null) {
            nieuweregels.push(regel);
        }
    });
    SWCart.loadWinkelwagen(nieuweregels, readonly);
}

SWCart.loadWinkelwagen = function (regels, readOnly = false) {
    var prijsTonen = (SWStandaardwaarden.getWaarde("reserveren_prijs_weergeven").toLowerCase() == "ja");
    let html = "<table data-role=\"table\" id=\"winkelwagen-tabel\" class=\"table\"><colgroup><col style=\"width:75%;\">";
    if (prijsTonen) {
        html += "<col style=\"width:20%\">";
    }
    if (!readOnly) {
        html += "<col style=\"width:5%;\">";
    }
    html += "</colgroup>";
    html += "<tbody>";

    var totaal = 0;
    let voordeel = 0;

    for (var i = 0; i < regels.length; i++) {
        if (regels[i].stukprijs == null) {
            continue;
        }
        let type_class = "dienst_type_" + regels[i]["type_id"];

        html += "<tr class=\"" + type_class + "\">";
        html += "<td class=\"omschrijving\">" + regels[i]["omschrijving"] + "</td>";
        if (prijsTonen) {
            let stukprijs = regels[i]["stukprijs"].toString().replace(",", ".");
            let regelprijs = parseInt(regels[i]["aantal"]) * parseFloat(stukprijs);

            totaal = totaal + parseFloat(regelprijs);

            html += "<td class=\"stukprijs\">" + SWSystem.formatTheCurrency(regelprijs) + "</td>";

            if (parseFloat(regels[i]["volleprijs"]) > 0) {
                let verschil = parseFloat(regels[i]["volleprijs"]) - regelprijs;
                voordeel = voordeel + verschil;
            }
        }
        if (!readOnly) {
            html += "<td class=\"icon_opties\"><a onclick=\"SWReservering.delRegel(" + i + ")\"><i class=\"fa-solid fa-xmark fa-lg\"></i></a></td>";
        }
        html += "</tr>";
    }
    SWCart.totaal = totaal;

    html += "</tbody>";
    if (prijsTonen) {
        html += "<tfoot><tr>";
        html += "<td class=\"totaal-label text-right\">Totaal:</td>";
        html += "<td class=\"totaal\">" + SWSystem.formatTheCurrency(totaal) + "</td>";
        html += "</tr>";
        if (voordeel > 0) {
            html += "<tr>";
            html += "<td class=\"totaal-label\">Uw voordeel:</td>";
            html += "<td class=\"totaal\">" + SWSystem.formatTheCurrency(voordeel) + "</td>";
            html += "</tr>";
        }
        html += "</tfoot>";
    }

    html += "</table>";

    document.getElementById("winkelwagen").innerHTML = html;
    SWCart.loadAanvullendeDiensten();
}

SWCart.loadAanvullendeDiensten = function () {
    let element = document.getElementById("aanvullende_diensten");
    if (element != null) {
        let product_ids = [0];
        //huidige producten in reservering ophalen
        for (let i = 0; i < SWPortalData.data.nieuweregels.rows.length; i++) {
            product_ids.push(SWPortalData.data.nieuweregels.rows[i].product_id);
        }
        //beschikbare aanvullende producten ophalen
        $.post('/data/reserveren/aanvullende_diensten.aspx', { 'producten': product_ids.join() }, function (data) {
            let producten_html = '';

            if (data.length > 0) {
                var duurTonen = (SWStandaardwaarden.getWaarde("reserveren_tijd_weergeven").toLowerCase() == "ja");
                var prijsTonen = (SWStandaardwaarden.getWaarde("reserveren_prijs_weergeven").toLowerCase() == "ja");
                for (var product in data) {
                    let al_in_karretje = false;
                    for (let i = 0; i < SWPortalData.data.nieuweregels.rows.length; i++) {
                        let regel = SWPortalData.data.nieuweregels.rows[i];
                        if (regel.type_id != 5) {
                            continue;
                        }

                        if (data[product].product_id == regel.product_id) {
                            al_in_karretje = true;
                            break;
                        }
                    }
                    if (al_in_karretje) {
                        continue;
                    }
                    producten_html += "<li class=\"list-group-item\">";
                    producten_html += "<a href=\"#\" class=\"reserveerlink\" data-product-id=\"" + data[product].product_id + "\">";
                    producten_html += "<span class=\"productnaam\">" + data[product].naam + "</span>";

                    if (prijsTonen) {
                        if (parseFloat(data[product].volleprijs) > 0) {
                            producten_html += "<span class=\"productprijs\"><span class=\"actieprijs\">" + SWSystem.formatTheCurrency(data[product].volleprijs) + "</span>  " + SWSystem.formatTheCurrency(data[product].productprijs) + "</span>";
                        } else {
                            producten_html += "<span class=\"productprijs\">" + SWSystem.formatTheCurrency(data[product].productprijs) + "</span>";
                        }
                    }
                    if (duurTonen && data[product].duur > 0) {
                        producten_html += "<span class=\"productduur\">" + SWSystem.getDuur(data[product].duur) + "</span>";
                    }

                    producten_html += "</a>";
                    producten_html += "</li>";
                }
            }

            //als beschikbare producten gevonden zijn ze weergeven
            let html = "";
            if (producten_html != '') {
                let bijboeken_tekst = SWStandaardwaarden.getWaarde("portal_bijboeken_tekst");
                html = "<p style=\"font-size: 1rem;\"><b>" + bijboeken_tekst + "</b></p><ul class=\"list-group list-group-flush\">" + producten_html + "</ul>";
            }
            document.getElementById("aanvullende_diensten").innerHTML = html

            //controleer op aanvullende diensten die niet meer kunnen
            for (let i = 0; i < SWPortalData.data.nieuweregels.rows.length; i++) {
                let regel = SWPortalData.data.nieuweregels.rows[i];
                if (regel.type_id != 5) {
                    continue;
                }

                let prod_id = regel.product_id;
                let gevonden = false;
                for (let index in data) {
                    if (data[index].product_id == prod_id) {
                        gevonden = true;
                        break;
                    }
                }
                if (!gevonden) {
                    SWReservering.delRegel(i);
                    return;
                }
            }
        });
    }
}