/**
 * Modal para agregar un nuevo empleado
 */
async function modalRegistrarEmpleado() {
  try {
    // Ocultar la modal si está abierta
    const existingModal = document.getElementById("agregarEmpleadoModal");
    if (existingModal) {
      const modal = bootstrap.Modal.getInstance(existingModal);
      if (modal) {
        modal.hide();
      }
      existingModal.remove(); // Eliminar la modal existente
    }

    const response = await fetch("modales/modalAdd.php");

    if (!response.ok) {
      throw new Error("Error al cargar la modal");
    }

    // Obtener el contenido de la modal
    const data = await response.text();

    // Crear un elemento div para almacenar el contenido de la modal
    const modalContainer = document.createElement("div");
    modalContainer.innerHTML = data;

    // Agregar la modal al documento actual
    document.body.appendChild(modalContainer);

    // Mostrar la modal
    const myModal = new bootstrap.Modal(
      modalContainer.querySelector("#agregarEmpleadoModal")
    );
    myModal.show();
  } catch (error) {
    console.error(error);
  }
}

/**
 * Función para enviar el formulario al backend
 */
async function registrarEmpleado(event) {
  try {
    event.preventDefault(); // Evitar que la página se recargue al enviar el formulario

    const formulario = document.querySelector("#formularioEmpleado");

    // Validación de obligatoriedad
    const inputs = formulario.querySelectorAll('input[required], select[required]');
    let valid = true;

    inputs.forEach(input => {
      if (!input.value) {
        valid = false;
        input.classList.add('is-invalid'); // Agregar clase para indicar error
      } else {
        input.classList.remove('is-invalid'); // Limpiar el estado de error
      }
    });

    // Si no es válido, mostrar mensaje y salir
    if (!valid) {
      toastr.options = window.toastrOptions;
      toastr.error("Por favor, completa todos los campos obligatorios.");
      return; // Salir de la función si hay campos obligatorios vacíos
    }

    // Crear un objeto FormData para enviar los datos del formulario
    const formData = new FormData(formulario);

    // Enviar los datos del formulario al backend usando Axios
    const response = await axios.post("acciones/acciones.php", formData);

      // Verificar la respuesta del backend
    if (response.status === 200) {
      // Llamar a la función insertEmpleadoTable para insertar el nuevo registro en la tabla
      window.insertEmpleadoTable();

      setTimeout(() => {
        $("#agregarEmpleadoModal").css("opacity", "");
        $("#agregarEmpleadoModal").modal("hide");

        // Llamar a la función para mostrar un mensaje de éxito
        toastr.options = window.toastrOptions;
        toastr.success("¡El usuario se registró correctamente!.");
      }, 600);
    } else {
      console.error("Error al registrar el usuario");
    }
  } catch (error) {
    console.error("Error al enviar el formulario", error);
  }
}
