/**
 * Función para mostrar la modal de detalles del empleado
 */
async function verDetallesEmpleado(idEmpleado) {
  try {
    // Hide and remove any existing modal
    const existingModal = document.getElementById("detalleEmpleadoModal");
    if (existingModal) {
      const modal = bootstrap.Modal.getInstance(existingModal);
      if (modal) modal.hide();
      existingModal.remove();
    }

    // Fetch the modal content from the server
    const response = await fetch("modales/modalDetalles.php");
    if (!response.ok) throw new Error("Error al cargar la modal de detalles del empleado");

    const modalHTML = await response.text();
    const modalContainer = document.createElement("div");
    modalContainer.innerHTML = modalHTML;
    document.body.appendChild(modalContainer);

    // Initialize the Bootstrap Modal
    const myModalElement = modalContainer.querySelector("#detalleEmpleadoModal");
    const myModal = new bootstrap.Modal(myModalElement);

    // Load user details and assigned work
    await cargarDetalleEmpleado(idEmpleado);
    await cargarTrabajosAsignados(idEmpleado);

    // Show the modal
    myModal.show();

    // Reload the page when modal is hidden
    myModalElement.addEventListener('hidden.bs.modal', () => location.reload());

  } catch (error) {
    console.error("Error al mostrar la modal de detalles:", error);
  }
}



/**
 * Función para cargar y mostrar los trabajos asignados al evaluador
 */
/**
 * Función para cargar y mostrar los trabajos asignados al evaluador
 */
async function cargarTrabajosAsignados(idEvaluador) {
    try {
        const response = await fetch('trabajosAsignados.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ idEvaluador })
        });

        const responseText = await response.text();
        console.log("Response Text:", responseText); // Para verificar la respuesta del servidor

        const data = JSON.parse(responseText);
        console.log("Parsed Data:", data); // Para verificar los datos parseados

        if (data.success && Array.isArray(data.trabajos)) {
            const trabajos = data.trabajos;
            const divTrabajos = document.querySelector("#detalleEmpleadoContenido #trabajosAsignados");

            divTrabajos.innerHTML = trabajos.map(trabajo => `
                <div class="col-3 mb-2">
                  <span class="badge text-bg-${
                     (trabajo.calificacion1_fecha && trabajo.evaluador1 == idEvaluador) || 
                     (trabajo.calificacion2_fecha && trabajo.evaluador2 == idEvaluador) || 
                     (trabajo.calificacion3_fecha && trabajo.evaluador3 == idEvaluador) 
                     ? 'secondary' : 'primary'}" 
                     style="width: 100%; text-align: center; font-size: 0.65rem; border-radius: 8px; padding: 8px;">
                      <a href="#" onclick="verDetallesResumen('${trabajo.id}','${trabajo.calificacion1_fecha}','${trabajo.calificacion2_fecha}','${trabajo.calificacion3_fecha}')" 
                         title="Ver detalles del resumen" style="text-decoration: none; color: white;">
                          ${trabajo.codigo}
                      </a>
                  </span>
                </div>
            `).join('');

            divTrabajos.classList.add('row');
        } else {
            console.error("Error en la respuesta JSON o 'trabajos' no es un array:", data);
        }
    } catch (error) {
        console.error("Error al cargar trabajos asignados:", error);
    }
}



/**
 * Función para cargar y mostrar los detalles del empleado en la modal
 */
async function cargarDetalleEmpleado(idEmpleado) {
  try {
    const response = await axios.get(`acciones_evaluador/detallesEmpleado.php?id=${idEmpleado}`);
    if (response.status === 200) {
      const { nombre, edad, cedula, sexo, telefono, tipousuario, usuario, correo, cant_trabajos, contrasena, Idioma, areas, activo, avatar } = response.data;
      const avatarURL = avatar ? `acciones_evaluador/fotos_empleados/${avatar}` : 'assets/imgs/sin-foto.jpg';
      const logoURL = "https://kajabi-storefronts-production.kajabi-cdn.com/kajabi-storefronts-production/file-uploads/themes/2155932169/settings_images/66d23d-b423-4bdb-16af-b8b7dbc427b_Trauma_de_cuello_9_.png";

      const avatarExistente = await verificarExistenciaImagen(avatarURL);
      const avatarHTML = avatarExistente
        ? `<img src="${avatarURL}" alt="Avatar" class="avatar-img">`
        : "No disponible";

      let tipoUsuarioTexto = '';
      switch (tipousuario) {
        case 'S':
          tipoUsuarioTexto = 'Super-Administrador';
          break;
        case 'A':
          tipoUsuarioTexto = 'Administrador';
          break;
        case 'E':
          tipoUsuarioTexto = 'Evaluador';
          break;
        default:
          tipoUsuarioTexto = 'Desconocido';
      }

      // Llamada para obtener los resúmenes asignados
      const resResumenes = await obtenerResumenesAsignados(idEmpleado);
      console.log("Valor de resResumenes:", resResumenes); // Verificar valor recibido

      // Asignación directa, en caso de recibir un número
      const cantidadResumenes = typeof resResumenes === 'number' ? resResumenes : 0;

      // Verificar que cantidadResumenes tiene el valor correcto antes de mostrarlo
      console.log("Cantidad de resúmenes:", cantidadResumenes);

      const ulDetalleEmpleado = document.querySelector("#detalleEmpleadoContenido ul");
      ulDetalleEmpleado.innerHTML = `
        <div class="card">
          <div class="card-body">
            <div class="d-flex align-items-center">
              <div class="avatar-container" style="position: relative;">
                ${avatarHTML}
                <img src="${logoURL}" alt="Logo del evento" style="position: absolute; top: 0; right: 0; width: 50px; height: 50px; border-radius: 50%;">
              </div>
              <div class="ml-3">
                <h5 class="card-title">${nombre || "No disponible"}</h5>
				<p class="card-text"><i class="bi bi-person"></i> Cédula: ${cedula || "No disponible"}</p>
                <p class="card-text"><i class="bi bi-calendar"></i> Edad: ${edad || "No disponible"}</p>
                <p class="card-text"><i class="bi bi-gender-ambiguous"></i> Sexo: ${sexo || "No disponible"}</p>
                <p class="card-text"><i class="bi bi-telephone"></i> Teléfono: ${telefono || "No disponible"}</p>
				
              </div>
            </div>
            <hr>
            <div>
              <p><i class="bi bi-shield-lock"></i> <b>Tipo Usuario:</b> ${tipoUsuarioTexto || "No disponible"}</p>
              <p><i class="bi bi-translate"></i> <b>Idioma:</b> ${Idioma || "No disponible"}</p>
              <p><i class="bi bi-file-earmark-text"></i> <b>Resúmenes Asignados:</b> ${cantidadResumenes || "No disponible"}</p>
              <p><i class="bi bi-person-circle"></i> <b>Usuario:</b> ${usuario || "No disponible"}</p>
			  <p<i  class="bi bi-envelope"></i><b> Mail:</b> ${correo || "No disponible"}</p>
            </div>
          </div>
        </div>
      `;
    } else {
      throw new Error(`Error al cargar los detalles del usuario con ID ${idEmpleado}`);
    }
  } catch (error) {
    console.error("Error al cargar los detalles del empleado:", error);
    alert("Hubo un problema al cargar los detalles del usuario");
  }
}

/**
 * Función para obtener la cantidad total de resúmenes asignados al empleado
 */
async function obtenerResumenesAsignados(idEmpleado) {
  try {
    const response = await axios.get(`acciones_evaluador/resumenesAsignados.php?id=${idEmpleado}`);
    console.log("Respuesta completa del servidor:", response.data);  // Log completo

    if (response.status === 200 && response.data && typeof response.data.cantidad_resumenes === 'number') {
      console.log("Cantidad de trabajos asignados recibida:", response.data.cantidad_resumenes);
      return response.data.cantidad_resumenes;
    } else {
      throw new Error("No se recibieron datos válidos para la cantidad de trabajos asignados.");
    }
  } catch (error) {
    console.error("Error al obtener la cantidad de trabajos asignados:", error);
    return 0; // Retorna 0 si hay error o el valor no es válido
  }
}




/**
 * Función para verificar la existencia de una imagen
 */
async function verificarExistenciaImagen(url) {
  try {
    const response = await fetch(url, { method: "HEAD" });
    return response.ok;
  } catch (error) {
    console.error("Error al verificar la existencia de la imagen:", error);
    return false;
  }
}



