<script src="/admin/app-assets/js/core/libraries/jquery.min.js"></script>
<script>
$(document).ready(function () {
    const validateCommissionValue = (rawValue) => {
        const commission = String(rawValue ?? '').trim();
        const numericPattern = /^(0|[1-9]\d*)(\.\d+)?$/;

        if (!commission) {
            return { valid: false, message: '<%= i18n.__("advertisement.commissionRequired") %>' };
        }

        if (!numericPattern.test(commission)) {
            return { valid: false, message: '<%= i18n.__("advertisement.commissionInvalid") %>' };
        }

        const parsedCommission = Number(commission);
        if (!Number.isFinite(parsedCommission) || parsedCommission < 0) {
            return { valid: false, message: '<%= i18n.__("advertisement.commissionInvalid") %>' };
        }

        return { valid: true, value: commission };
    };

    $(document).on('click', '.approve-ad-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.approveConfirm") %>',
            html: '<p class="text-muted small mb-2"><%= i18n.__("advertisement.enterCommissionValueNotPercentage") %></p>' +
                  '<div class="mb-3"><label class="form-label"> </label>' +
                  '<input type="number" id="swal-commission" class="form-control" min="0" step="0.01" value="0" placeholder="<%= i18n.__("advertisement.commissionValuePlaceholder") %>"></div>',
            icon: 'question',
            showCancelButton: true,
            confirmButtonColor: '#28c76f',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.approve") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
            preConfirm: () => {
                const validation = validateCommissionValue(document.getElementById('swal-commission').value);
                if (!validation.valid) {
                    Swal.showValidationMessage(validation.message);
                    return false;
                }
                return { commission: validation.value };
            }
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/approve/' + id,
                    type: 'PATCH',
                    data: { commission: result.value.commission },
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.reject-ad-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.rejectConfirm") %>',
            input: 'textarea',
            inputLabel: '<%= i18n.__("advertisement.rejectionReason") %>',
            inputPlaceholder: '<%= i18n.__("advertisement.rejectionReasonPlaceholder") %>',
            inputAttributes: { 'aria-label': '<%= i18n.__("advertisement.rejectionReason") %>' },
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ea5455',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.reject") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
            inputValidator: (value) => {
                if (!value || value.trim().length < 3) return '<%= i18n.__("advertisement.reasonTooShort") %>';
            }
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/reject/' + id,
                    type: 'PATCH',
                    data: { reason: result.value },
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.set-commission-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.setCommission") %>',
            html: '<div class="mb-3"><label class="form-label"><%= i18n.__("advertisement.commission") %> (<%= i18n.__("common.currency") %>)</label>' +
                  '<input type="number" id="swal-commission-edit" class="form-control" min="0" step="0.01" placeholder="<%= i18n.__("advertisement.commissionValuePlaceholder") %>"></div>',
            icon: 'info',
            showCancelButton: true,
            confirmButtonColor: '#7367f0',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("common.confirm") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
            preConfirm: () => {
                const validation = validateCommissionValue(document.getElementById('swal-commission-edit').value);
                if (!validation.valid) {
                    Swal.showValidationMessage(validation.message);
                    return false;
                }
                return { commission: validation.value };
            }
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/setCommission/' + id,
                    type: 'PATCH',
                    data: { commission: result.value.commission },
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.approve-gold-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.approveGoldConfirm") %>',
            icon: 'question',
            showCancelButton: true,
            confirmButtonColor: '#ff9f43',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.approve") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/approveGold/' + id,
                    type: 'PATCH',
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.reject-gold-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.rejectGoldConfirm") %>',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ea5455',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.reject") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/rejectGold/' + id,
                    type: 'PATCH',
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.approve-edit-request-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.approveEditConfirm") %>',
            icon: 'question',
            showCancelButton: true,
            confirmButtonColor: '#28c76f',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.approve") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/editRequests/approve/' + id,
                    type: 'PATCH',
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

    $(document).on('click', '.reject-edit-request-btn', function (e) {
        e.preventDefault();
        var id = $(this).data('id');

        Swal.fire({
            title: '<%= i18n.__("advertisement.rejectEditConfirm") %>',
            input: 'textarea',
            inputLabel: '<%= i18n.__("advertisement.rejectionReason") %>',
            inputPlaceholder: '<%= i18n.__("advertisement.rejectionReasonPlaceholder") %>',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ea5455',
            cancelButtonColor: '#82868b',
            confirmButtonText: '<%= i18n.__("advertisement.reject") %>',
            cancelButtonText: '<%= i18n.__("common.cancel") %>',
            inputValidator: (value) => {
                if (!value || value.trim().length < 3) return '<%= i18n.__("advertisement.reasonTooShort") %>';
            }
        }).then((result) => {
            if (result.isConfirmed) {
                $.ajax({
                    url: '/dashboard/advertisements/editRequests/reject/' + id,
                    type: 'PATCH',
                    data: { reason: result.value },
                    success: function (res) {
                        if (res.key === 'success') {
                            Swal.fire({ icon: 'success', title: res.message, timer: 1500, showConfirmButton: false });
                            setTimeout(() => location.reload(), 1600);
                        } else {
                            Swal.fire({ icon: 'error', title: res.message });
                        }
                    },
                    error: function (xhr) {
                        var msg = xhr.responseJSON?.message || '<%= i18n.__("common.returnDeveloper") %>';
                        Swal.fire({ icon: 'error', title: msg });
                    }
                });
            }
        });
    });

});
</script>
