const studentModal = (idModal, callback) => {
    const modalEl = document.getElementById(idModal);
    // eslint-disable-next-line no-undef
    const myModal = bootstrap.Modal.getOrCreateInstance(modalEl);
    const studentForm = document.querySelector(`#${idModal} form`);

    const setModalData = (element) => {
        const inputs = studentForm.querySelectorAll("input[required]");
        inputs.forEach((input) => {
            const control = input;
            control.value = element ? element[input.getAttribute("id")] : "";
        });
        const idInput = studentForm.querySelector("#id");
        idInput.value = element ? element.id : "";
        const groupSelector = studentForm.querySelector("select");
        groupSelector.value = element ? element.group.id : "";
        myModal.show();
    };

    modalEl.addEventListener("shown.bs.modal", (event) => {
        if (!event.relatedTarget) {
            return;
        }
        setModalData();
    });

    studentForm.addEventListener("submit", async (event) => {
        event.preventDefault();
        const data = {};
        const inputs = studentForm.querySelectorAll("input[required]");
        inputs.forEach((input) => {
            data[input.getAttribute("id")] = input.value;
        });
        const idInput = studentForm.querySelector("#id");
        const studentId = idInput.value;
        const groupSelector = studentForm.querySelector("select");
        data.groupId = groupSelector.value;
        console.log(data);
        myModal.hide();
        if (callback) {
            callback(studentId, data);
        }
    });

    return { setData: (element) => setModalData(element) };
};

export default studentModal;
