document.addEventListener("DOMContentLoaded", () => {
  console.log("✅ solicitud-PRM.js cargado");

  const form = document.getElementById("formSolicitarPRM");
  const btnAbrirModal = document.querySelector('[data-bs-target="#modalSolicitarPRM"]');
  const curp = document.getElementById("curpAspirante")?.value?.trim();

  // 🔍 Validar si ya fue enviada la solicitud PRM
  if (curp && curp.length === 18 && btnAbrirModal) {
    fetch("../../backend/recruiter/validar_solicitud_prm.php", {
      method: "POST",
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      body: new URLSearchParams({ curp })
    })
      .then(res => res.json())
      .then(data => {
        if (data.enviada) {
          btnAbrirModal.disabled = true;
          btnAbrirModal.classList.remove("btn-primary");
          btnAbrirModal.classList.add("btn-secondary");
          btnAbrirModal.textContent = "Solicitud PRM enviada";
        }
      })
      .catch(err => {
        console.error("Error al validar solicitud PRM:", err);
      });
  }

  if (btnAbrirModal) {
    btnAbrirModal.addEventListener("click", () => {
      console.log("🟢 Botón Solicitar PRM clickeado");

      if (!curp || curp.length !== 18) {
        console.warn("CURP inválido o no encontrado.");
        return;
      }

      // 🔄 Obtener tipo de comisión desde Plantilla
      fetch("../../backend/recruiter/obtener_tipo_comision.php", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: new URLSearchParams({ curp })
      })
        .then(res => res.json())
        .then(data => {
          const inputTexto = document.getElementById("tipoComisionTexto");
          const inputHidden = document.getElementById("tipoComisionInput");

          if (data.success) {
            inputTexto.value = data.tipo_comision;
            inputHidden.value = data.tipo_comision;
          } else {
            inputTexto.value = "No determinado";
            inputHidden.value = "";
            Swal.fire("Atención", data.message, "warning");
          }
        })
        .catch(err => {
          console.error("Error en fetch tipo comisión:", err);
          document.getElementById("tipoComisionTexto").value = "Error";
          Swal.fire("Error", "No se pudo obtener el tipo de comisión.", "error");
        });

      // 🔄 Obtener datos generales desde Plantilla
      fetch("../../backend/recruiter/obtener_datos_prm.php", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: new URLSearchParams({ curp })
      })
        .then(res => res.json())
        .then(data => {
          if (data.success) {
            document.getElementById("nombreCompletoPRM").value = data.nombre;
            document.getElementById("pdvPRM").value = data.pdv;
            document.getElementById("puestoPRM").value = data.puesto;
          } else {
            Swal.fire("Atención", data.message, "warning");
          }
        })
        .catch(err => {
          console.error("Error en fetch datos plantilla:", err);
          Swal.fire("Error", "No se pudo obtener los datos desde plantilla", "error");
        });
    });
  }

  // Envío del formulario
  if (form) {
    form.addEventListener("submit", async (e) => {
      e.preventDefault();

      const formData = new FormData(form);

      try {
        const response = await fetch("../../backend/recruiter/guardar_solicitud_prm.php", {
          method: "POST",
          body: formData
        });

        const result = await response.json();

        if (result.success) {
          Swal.fire({
            icon: 'success',
            title: 'Éxito',
            text: result.message,
            confirmButtonText: 'Aceptar'
          }).then(() => {
            const modal = bootstrap.Modal.getInstance(document.getElementById("modalSolicitarPRM"));
            if (modal) modal.hide();
            location.reload();
          });
        } else {
          Swal.fire('Error', result.message, 'error');
        }

      } catch (error) {
        Swal.fire('Error', 'No se pudo enviar la solicitud.', 'error');
      }
    });
  }
});
