"use strict";
const list = function () {
    const modalElement = document.getElementById('modal_memory');
    const modal = new bootstrap.Modal(modalElement);
    let datatable;
    const modalHandlers = function () {
        const submitButton = modalElement.querySelector('[type="submit"]');
        const closeButton = modalElement.querySelector('[data-modal-action="close"]');
        const cancelButton = modalElement.querySelector('[data-modal-action="cancel"]');
        const form = modalElement.querySelector('form');
        const validator = FormValidation.formValidation(
            form,
            {
                fields: {
                    'MyInput.Title': {
                        validators: {
                            notEmpty: {
                                message: 'عنوان پروفایل را تعیین نمایید'
                            }
                        }
                    },
                    'MyInput.CompanyCode': {
                        validators: {
                            numeric: {
                                message: 'مقدار حتما باید عدد باشد',
                                // The default separators
                                thousandsSeparator: '',
                            },
                            notEmpty: {
                                message: 'شناسه افتصادی صحیح نیست'
                            },
                            stringLength: {
                                min: 10,
                                max: 14,
                                message: 'طول فیلد باید بین 10 تا 14 باشد',
                            },
                        }
                    },
                    'MyInput.TaxMemoryId': {
                        validators: {
                            notEmpty: {
                                message: 'شناسه حافظه مالیاتی نباید خالی باشد'
                            },
                            stringLength: {
                                min: 6,
                                max: 6,
                                message: 'طول فیلد باید 6 کاراکتر باشد',
                            },
                        }
                    },
                },

                plugins: {
                    trigger: new FormValidation.plugins.Trigger(),
                    bootstrap: new FormValidation.plugins.Bootstrap5({
                        rowSelector: '.fv-row',
                        eleInvalidClass: '',
                        eleValidClass: ''
                    })
                }
            }
        );

        closeButton.addEventListener('click', function () {
            modal.hide();
        });
        cancelButton.addEventListener('click', function () {
            form.reset();
            modal.hide();
        });
        submitButton.addEventListener('click', (event) => {
            event.preventDefault();
            if (validator) {
                validator.validate().then(function (status) {
                    console.log('validated!');

                    if (status == 'Valid') {
                        submitButton.setAttribute('data-kt-indicator', 'on');
                        submitButton.disabled = true;

                        // form.addEventListener("submit", function(event) {
                        // });
                        form.submit();
                        // $.ajax({
                        //     url:"memories",
                        //     method:"POST",
                        //     data: $(form).serialize(),
                        //     success : function (response ){
                        //         submitButton.removeAttribute('data-kt-indicator');
                        //         submitButton.disabled = false;      
                        //        
                        //        
                        //     },
                        //     error : function (error){
                        //         console.log(error);
                        //         submitButton.removeAttribute('data-kt-indicator');
                        //         submitButton.disabled = false;
                        //     }
                        // })
                        // fetch('memories', {
                        //     method: "POST",
                        //     body: new FormData(form)
                        // })
                        //     .then(function (response) {
                        //         submitButton.removeAttribute('data-kt-indicator');
                        //         submitButton.disabled = false;
                        //
                        //         if (response.ok) {
                        //             // Success
                        //             return response.text();
                        //         } else {
                        //             // Error
                        //             throw new Error(response.statusText);
                        //         }
                        //
                        //     })
                        //     .then(function (data) {
                        //         // Handle the response data
                        //         console.log(data);
                        //
                        //     })
                        //     .catch(function (error) {
                        //         // Handle the error
                        //         console.error(error);
                        //
                        //     });



                    } else {
                        toastr.error('لطفا اطلاعات را تکمیل و مجددا اقدام نمایید')
                        // Swal.fire({
                        //     text: "Sorry, looks like there are some errors detected, please try again.",
                        //     icon: "error",
                        //     buttonsStyling: false,
                        //     confirmButtonText: "Ok, got it!",
                        //     customClass: {
                        //         confirmButton: "btn btn-primary"
                        //     }
                        // });
                    }
                });
            }
        })
    }
    const globalHandlers = function () {
        const addbtn = document.getElementById('add_memory');
        addbtn.addEventListener('click', (event) => {
            modalElement.querySelector('#MyInput_Id').value = 0;
            modal.show();
        });

        $('#MyInput_WithoutVat').change(function () {
            let checked = $(this).prop("checked");
            console.log(checked)
            setTimeout(function () {
                $.ajax({
                    url: "?handler=fastupdate",
                    type: "POST",
                    data: { id: $('#MyInput_Id').val(), withoutVat: checked, PreValidate: $('#MyInput_PreValidate').prop('checked') },
                    headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
                    success: function (response) {
                        if (response) {
                            if ($(this).prop("checked"))
                                toastr.success("کالاهای بدون ارزش افزوده ارسال نمی شود")
                            else
                                toastr.success("کالاهای بدون ارزش افزوده ارسال می شود")
                        }
                    },
                    error: function (response) {
                        toastr.error("ثبت تغییر با مشکل مواجه شد");
                        $(this).attr("checked", !$(this).attr("checked"));
                    }
                });
            }, 1000);

        });
        $('#MyInput_PreValidate').change(function () {
            let checked = $(this).prop("checked");
            console.log(checked)
            setTimeout(function () {
                $.ajax({
                    url: "?handler=UpdateWithoutVat",
                    type: "POST",
                    data: { id: $('#MyInput_Id').val(), withoutVat: $('#MyInput_WithoutVat').prop('checked'), PreValidate: checked },
                    headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
                    success: function (response) {
                        if (response) {
                            if ($(this).prop("checked"))
                                toastr.success("بررسی کالاها قبل از ارسال انجام میشود")
                            else
                                toastr.success("بررسی کالاها قبل از ارسال انجام نمیشود")
                        }
                    },
                    error: function (response) {
                        toastr.error("ثبت تغییر با مشکل مواجه شد");
                        $(this).attr("checked", !$(this).attr("checked"));
                    }
                });
            }, 1000);

        });
    }

    const datatableHandlers = function () {
        const table = document.getElementById('table_memories');
        datatable = $(table).DataTable({
            language: {
                url: '../media/fa.json'
            },

            pageLength: 50,
            stateSave: true,
            autoWidth: true,
            processing: true,
            scrollY: "500px",
            scrollX: true,
            scrollCollapse: true,
            //fixedHeader: true,
            fixedColumns: {
                //right: 1,
                left: 1
            },
            filter: true,
            order: []
        });

        const filterSearch = document.querySelector('[data-filter-table="search"]');
        filterSearch.addEventListener('keyup', function (e) {
            datatable.search(e.target.value).draw();
        });

        const deleteBtns = document.querySelectorAll('[data-table-delete]');
        const editBtns = document.querySelectorAll('[data-table-edit]');
        deleteBtns.forEach((e, i) => {
            e.addEventListener('click', function (event) {
                Swal.fire({
                    text: "آیا از حذف حافظه مالیاتی مطمئن هستید؟",
                    icon: "warning",
                    showCancelButton: true,
                    buttonsStyling: false,
                    confirmButtonText: "بله،مطمئنم",
                    cancelButtonText: "خیر",
                    customClass: {
                        confirmButton: "btn btn-danger",
                        cancelButton: "btn btn-active-light"
                    }
                }).then(function (result) {
                    if (result.value) {
                        const id = e.dataset.tableDelete;
                        $.ajax({
                            url: '?handler=Delete',
                            method: 'delete',
                            data: { id: id },
                            headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
                            success: function (response) {
                                if (response && response['success']) {
                                    toastr.info('حافظه انتخاب شده حذف شد');
                                    const parent = event.target.closest('tr');
                                    datatable.row($(parent)).remove().draw();
                                } else {
                                    toastr.error(response['message']);
                                }

                            },
                            error: function (response) {
                                toastr.error('خطا در حذف حافظه رخ داد');
                                console.log(response);
                            }
                        })
                    } else if (result.dismiss === 'cancel') {

                    }
                });
            });
        });
        editBtns.forEach((e, i) => {
            e.addEventListener("click", function (event) {
                event.preventDefault();
                const id = e.dataset.tableEdit;

                // await fetch(`?handler=ById?id=${id}`)
                //     .then(function (response) {
                //      if (response.ok) {
                //             // Success
                //       
                //             return response.text();
                //         } else {
                //             // Error
                //             throw new Error(response.statusText);
                //         }
                //
                //     })
                //     .then(function (data) {
                //         console.log(data);
                //         const record = JSON.parse(data);
                //         modalElement.querySelector('[name="MyInput.Id"]').value = id;
                //         modalElement.querySelector('[name="MyInput.Title"]').value = record.title;
                //         modalElement.querySelector('[name="MyInput.TaxMemoryId"]').value = record.taxMemoryId;
                //         modalElement.querySelector('[name="MyInput.PrivateKey"]').value = record.AccessKey;
                //         modalElement.querySelector('[name="MyInput.Active"]').checked = record.Active;
                //         modalElement.querySelector('[name="MyInput.CompanyCode"]').value = record.CompanyEconomicCode;
                //         modalElement.querySelector('[name="MyInput.Default"]').checked = record.Default;
                //         modalElement.querySelector('[name="MyInput.Url"]').value = record.Url;
                //         modalElement.querySelector('[name="MyInput.Motamed"]').checked = record.Motamed;
                //         modal.show();
                //     })
                //     .catch(function (error) {
                //         // Handle the error
                //         console.log(error);
                //         console.error(error);
                //
                //     });

                $.ajax({
                    url: '?handler=ById',
                    method: 'get',
                    data: { id },
                    success: function (record) {
                        //console.log(record);
                        modalElement.querySelector('[name="MyInput.Id"]').value = id;
                        modalElement.querySelector('[name="MyInput.Title"]').value = record.title;
                        modalElement.querySelector('[name="MyInput.TaxMemoryId"]').value = record.taxMemoryId;
                        modalElement.querySelector('[name="MyInput.PrivateKey"]').value = record.accessKey;
                        modalElement.querySelector('[name="MyInput.Active"]').checked = record.active;
                        modalElement.querySelector('[name="MyInput.WithoutVat"]').checked = record.withoutVat;
                        modalElement.querySelector('[name="MyInput.PreValidate"]').checked = record.preValidate;
                        modalElement.querySelector('[name="MyInput.CompanyCode"]').value = record.companyEconomicCode;
                        modalElement.querySelector('[name="MyInput.Default"]').checked = record.default;
                        modalElement.querySelector('[name="MyInput.Url"]').value = record.url;
                        modalElement.querySelector('[name="MyInput.Motamed"]').checked = record.motamed;
                        $("#database").val(record.irTaxIdRefDb).trigger('change');

                        modal.show();
                    },
                    error: function (response) {
                        toastr.error('رکورد یافت نشد');
                        console.error(response);
                    }
                })


            });
        });
    }

    return {
        init: function () {
            modalHandlers();
            globalHandlers();
            datatableHandlers();
        }
    }
}();

KTUtil.onDOMContentLoaded(function () {
    list.init();
});