<%- include('../catalogCommerce/crudAssets.ejs') %>
<!-- jQuery and Bootstrap are loaded once by the authenticated dashboard shell. -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

<script>
  $(document).on("click", ".open-cancel", function () {
    $(".orderId").val($(this).data("id"));
    $("#cancel").modal("show");
    // $('#cancelForm').val('').removeClass('is-invalid').css('border', '');

  });

  $(document).ready(function () {
    $(document).on("submit", "#cancelForm", function (e) {
      e.preventDefault();

      const input = document.querySelector('#cancelReason');
      const isValid = validateInput(input);
      if (!isValid) return;

      const form = $(".cancel-form");
      const url = form.attr('action');
      const method = form.attr('method');


      $.ajax({
        method,
        url,
        data: {
          id: $(".orderId").val(),
          reason: $("#cancelReason").val(),
        },
        beforeSend: function () {
          $('#submitButton').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr('disabled', true);
        },
        success: (response) => {
          if (response.status === 200) {
            $('#cancel').modal('hide');

            Swal.fire({
              position: "top-center",
              icon: "success",
              title: response.message,
              showConfirmButton: false,
              timer: 1500,
              buttonsStyling: false,
            });

            window.location.href = "https://cliff.4hoste.com/" + response.data.url;
          }
        },
        error: (err) => {
          Swal.fire({
            position: "top-start",
            icon: "error",
            title: `${err?.responseJSON?.message || err.responseJSON || err.message}`,
            showConfirmButton: false,
            timer: 1500,
            buttonsStyling: false,
          });
        },
      });
    });
  });
  function validateInput(input) {
    try {
      const trimmedValue = input.value.trim();
      const minLength = 2;
      const feedback = input.closest('.controls').querySelector('.invalid-feedback');

      if (trimmedValue === "") {
        feedback.textContent = "<%= i18n.__('common.emptyField') %>";
        input.classList.add('is-invalid');
        input.setCustomValidity("Invalid");
        return false;
      } else if (trimmedValue.length < minLength) {
        feedback.textContent = "<%= i18n.__('common.minLength', { minLength: 2 }) %>";
        input.classList.add('is-invalid');
        input.setCustomValidity("Invalid");
        return false;
      } else {
        feedback.textContent = "";
        input.classList.remove('is-invalid');
        input.setCustomValidity("");
        return true;
      }
    } catch (error) {
      console.error("Validation error:", error);
      return false;
    }
  }
</script>
