import $ from "jquery";
import alertify from "alertifyjs";

const xmlParser = require("xml2json");

const fieldDepartmentValues = new Set([
    "legal_entity",
    "other",
]);

$(window).ready(
    () => {
        let isNaturalPerson = ($("#id_entity_type").find(":selected").val() === "natural_person");
        let isEmpty = ($("#id_entity_type").find(":selected").val() === "");
        
        $(".field-date_of_birth").
        css(
            "display",
            (
                (isNaturalPerson) ?
                "block" : "none"
            )
        );
        
        $(".field-ico_number,.field-load_ares_data_button").
        css(
            "display",
            (
                (!isEmpty && !isNaturalPerson) ?
                "block" : "none"
            )
        );
        
        $(".field-department").
        css(
            "display",
            (
                (!isEmpty && fieldDepartmentValues.has($("#id_entity_type").find(":selected").val())) ?
                "block" : "none"
            )
        );

        if (!isNaturalPerson && !isEmpty) $("#id_date_of_birth").val("");
        if (isNaturalPerson) $("#id_ico_number").val("");
        if (!fieldDepartmentValues.has($("#id_entity_type").find(":selected").val()) && !isEmpty) $("#id_department").val("");

        $("#id_entity_type").on(
            "change",
            event => {
                isEmpty = ($(event.target).val() === "");
                isNaturalPerson = ($(event.target).val() === "natural_person");
                
                $(".field-date_of_birth").
                css(
                    "display",
                    (
                        (!isEmpty && isNaturalPerson) ?
                        "block" : "none"
                    )
                );
                $(".field-ico_number,.field-load_ares_data_button").
                css(
                    "display",
                    (
                        (!isEmpty && !isNaturalPerson) ?
                        "block" : "none"
                    )
                );
                
                $(".field-department").
                css(
                    "display",
                    (
                        (!isEmpty && fieldDepartmentValues.has($(event.target).val())) ?
                        "block" : "none"
                    )
                );
                
                if (!isNaturalPerson && !isEmpty) $("#id_date_of_birth").val("");
                if (isNaturalPerson) $("#id_ico_number").val("");
                if (!fieldDepartmentValues.has($(event.target).val()) && !isEmpty) $("#id_department").val("");
            }
        );
        
        $("#load_ares_data").on(
            "click",
            async (event) => {
                const icoValue = $("#id_ico_number").val();
                
                const aresXMLResponse = await fetch(
                    `https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=${icoValue}`
                );
                
                if (!aresXMLResponse.ok) {
                    alertify.error("Chyba při načítní dat z ARES. Je IČO správné?");
                    
                    console.warn(
                        "Error loading ARES data: ",
                        await aresXMLResponse.text()
                    );
                    
                    return;
                }
                
                const formattedAresResponse = xmlParser.toJson(aresXMLResponse);
                
                console.log(formattedAresResponse);
            }
        );
    }
);