<?php 
// Start session at the beginning of the file
session_start();
error_reporting(E_ALL & ~E_NOTICE); 
include_once "utils_database.php";
include_once "utils.php";
require_once "session_check.php";

// Extract request variables with prefix
$prefix = "P";
foreach ($_REQUEST as $key => $value) {
    $varname = $prefix . '_' . $key;
    $$varname = $value;
}


?>

<?php
// transfer_evaluadores.php

// Incluir el archivo de utilidades de base de datos
require_once 'utils_database.php';

// Función para obtener todos los evaluadores
function getEvaluadores() {
    // Usar el método Activarmysql para obtener la conexión
    $conn = Activarmysql();
    
    // Obtener los evaluadores de la tabla tusuario
    $query = "SELECT id, nombre, avatar FROM tusuario ORDER BY nombre";
    $result = $conn->query($query);
    $evaluadores = [];
    
    if ($result && $result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $evaluadores[] = $row;
        }
    }
    
    // Cerrar la conexión
    $conn->close();
    
    return $evaluadores;
}

// Función para obtener los trabajos asignados a un evaluador
function getTrabajosEvaluador($evaluador_id) {
    // Usar el método Activarmysql para obtener la conexión
    $conn = Activarmysql();
    
    // Obtener los trabajos donde el evaluador aparece como evaluador1, evaluador2 o evaluador3
    // y donde la calificación correspondiente aún no ha sido ingresada
    $query = "SELECT 
                t.id, 
                t.codigo, 
                t.titulo,
                CASE 
                    WHEN t.evaluador1 = ? AND t.calificacion1_fecha IS NULL THEN 1
                    WHEN t.evaluador2 = ? AND t.calificacion2_fecha IS NULL THEN 2
                    WHEN t.evaluador3 = ? AND t.calificacion3_fecha IS NULL THEN 3
                    ELSE 0
                END AS posicion_evaluador
              FROM 
                ttrabajo t
              WHERE 
                (t.evaluador1 = ? AND t.calificacion1_fecha IS NULL) OR
                (t.evaluador2 = ? AND t.calificacion2_fecha IS NULL) OR
                (t.evaluador3 = ? AND t.calificacion3_fecha IS NULL)
              ORDER BY 
                t.codigo";
    
    $stmt = $conn->prepare($query);
    $stmt->bind_param("iiiiii", $evaluador_id, $evaluador_id, $evaluador_id, $evaluador_id, $evaluador_id, $evaluador_id);
    $stmt->execute();
    $result = $stmt->get_result();
    
    $trabajos = [];
    if ($result && $result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $trabajos[] = $row;
        }
    }
    
    // Cerrar la conexión
    $stmt->close();
    $conn->close();
    
    return $trabajos;
}

// Función para transferir evaluaciones seleccionadas
function transferirEvaluacionesSeleccionadas($evaluador_viejo, $evaluador_nuevo, $trabajos_seleccionados) {
    // Usar el método Activarmysql para obtener la conexión
    $conn = Activarmysql();
    
    // Inicializar contadores
    $trabajos_actualizados = 0;
    $trabajos_evaluador1 = 0;
    $trabajos_evaluador2 = 0;
    $trabajos_evaluador3 = 0;
    $trabajos_no_actualizados = 0;
    $trabajos_con_conflicto = [];
    
    // Verificar cada trabajo seleccionado
    foreach ($trabajos_seleccionados as $trabajo_id) {
        // Obtener información del trabajo
        $query_info = "SELECT 
                        id, 
                        codigo,
                        evaluador1, 
                        evaluador2, 
                        evaluador3,
                        calificacion1_fecha,
                        calificacion2_fecha,
                        calificacion3_fecha
                      FROM 
                        ttrabajo 
                      WHERE 
                        id = ?";
        
        $stmt_info = $conn->prepare($query_info);
        $stmt_info->bind_param("i", $trabajo_id);
        $stmt_info->execute();
        $result_info = $stmt_info->get_result();
        
        if ($result_info && $result_info->num_rows > 0) {
            $trabajo = $result_info->fetch_assoc();
            
            // Verificar si el evaluador1 es el evaluador_viejo y no hay calificación
            if ($trabajo['evaluador1'] == $evaluador_viejo && is_null($trabajo['calificacion1_fecha'])) {
                // Verificar que el evaluador_nuevo no esté ya asignado como evaluador2 o evaluador3
                if ($trabajo['evaluador2'] != $evaluador_nuevo && $trabajo['evaluador3'] != $evaluador_nuevo) {
                    // Actualizar evaluador1
                    $query_update = "UPDATE ttrabajo SET evaluador1 = ? WHERE id = ?";
                    $stmt_update = $conn->prepare($query_update);
                    $stmt_update->bind_param("ii", $evaluador_nuevo, $trabajo_id);
                    $stmt_update->execute();
                    
                    if ($stmt_update->affected_rows > 0) {
                        $trabajos_actualizados++;
                        $trabajos_evaluador1++;
                    }
                    
                    $stmt_update->close();
                } else {
                    // Hay conflicto
                    $trabajos_no_actualizados++;
                    $trabajos_con_conflicto[] = [
                        'codigo' => $trabajo['codigo'],
                        'motivo' => 'El evaluador destino ya está asignado como otro evaluador'
                    ];
                }
            }
            
            // Verificar si el evaluador2 es el evaluador_viejo y no hay calificación
            if ($trabajo['evaluador2'] == $evaluador_viejo && is_null($trabajo['calificacion2_fecha'])) {
                // Verificar que el evaluador_nuevo no esté ya asignado como evaluador1 o evaluador3
                if ($trabajo['evaluador1'] != $evaluador_nuevo && $trabajo['evaluador3'] != $evaluador_nuevo) {
                    // Actualizar evaluador2
                    $query_update = "UPDATE ttrabajo SET evaluador2 = ? WHERE id = ?";
                    $stmt_update = $conn->prepare($query_update);
                    $stmt_update->bind_param("ii", $evaluador_nuevo, $trabajo_id);
                    $stmt_update->execute();
                    
                    if ($stmt_update->affected_rows > 0) {
                        $trabajos_actualizados++;
                        $trabajos_evaluador2++;
                    }
                    
                    $stmt_update->close();
                } else {
                    // Hay conflicto
                    $trabajos_no_actualizados++;
                    $trabajos_con_conflicto[] = [
                        'codigo' => $trabajo['codigo'],
                        'motivo' => 'El evaluador destino ya está asignado como otro evaluador'
                    ];
                }
            }
            
            // Verificar si el evaluador3 es el evaluador_viejo y no hay calificación
            if ($trabajo['evaluador3'] == $evaluador_viejo && is_null($trabajo['calificacion3_fecha'])) {
                // Verificar que el evaluador_nuevo no esté ya asignado como evaluador1 o evaluador2
                if ($trabajo['evaluador1'] != $evaluador_nuevo && $trabajo['evaluador2'] != $evaluador_nuevo) {
                    // Actualizar evaluador3
                    $query_update = "UPDATE ttrabajo SET evaluador3 = ? WHERE id = ?";
                    $stmt_update = $conn->prepare($query_update);
                    $stmt_update->bind_param("ii", $evaluador_nuevo, $trabajo_id);
                    $stmt_update->execute();
                    
                    if ($stmt_update->affected_rows > 0) {
                        $trabajos_actualizados++;
                        $trabajos_evaluador3++;
                    }
                    
                    $stmt_update->close();
                } else {
                    // Hay conflicto
                    $trabajos_no_actualizados++;
                    $trabajos_con_conflicto[] = [
                        'codigo' => $trabajo['codigo'],
                        'motivo' => 'El evaluador destino ya está asignado como otro evaluador'
                    ];
                }
            }
        }
        
        $stmt_info->close();
    }
    
    // Cerrar la conexión
    $conn->close();
    
    // Preparar mensaje de resultado
    $mensaje = "Reasignación completada. Total de trabajos actualizados: " . $trabajos_actualizados . 
               " (Evaluador1: " . $trabajos_evaluador1 . 
               ", Evaluador2: " . $trabajos_evaluador2 . 
               ", Evaluador3: " . $trabajos_evaluador3 . 
               "). Trabajos no actualizados por conflicto: " . $trabajos_no_actualizados;
    
    return [
        'mensaje' => $mensaje,
        'trabajos_actualizados' => $trabajos_actualizados,
        'trabajos_no_actualizados' => $trabajos_no_actualizados,
        'trabajos_con_conflicto' => $trabajos_con_conflicto
    ];
}

// Inicializar variables
$evaluadores = [];
$mensaje = "";
$success = false;
$trabajos_evaluador = [];
$evaluador_id = "";
$evaluador_destino_id = "";
$resultado_transferencia = null;

// Obtener la lista de evaluadores
$evaluadores = getEvaluadores();

// Procesar la selección de evaluador origen (para mostrar trabajos)
if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET['evaluador_id'])) {
    $evaluador_id = $_GET['evaluador_id'];
    $trabajos_evaluador = getTrabajosEvaluador($evaluador_id);
}

// Procesar el formulario de transferencia si se ha enviado
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['transferir'])) {
    $evaluador_viejo = $_POST['evaluador_origen'];
    $evaluador_nuevo = $_POST['evaluador_destino'];
    $evaluador_id = $evaluador_viejo; // Para mantener la selección
    $evaluador_destino_id = $evaluador_nuevo; // Para mantener la selección
    
    // Validar que los evaluadores sean diferentes
    if ($evaluador_viejo == $evaluador_nuevo) {
        $mensaje = "Error: El evaluador de origen y destino deben ser diferentes.";
    } 
    // Validar que se hayan seleccionado trabajos
    elseif (!isset($_POST['trabajos']) || empty($_POST['trabajos'])) {
        $mensaje = "Error: Debe seleccionar al menos un trabajo para transferir.";
    } 
    else {
        try {
            $trabajos_seleccionados = $_POST['trabajos'];
            $resultado_transferencia = transferirEvaluacionesSeleccionadas($evaluador_viejo, $evaluador_nuevo, $trabajos_seleccionados);
            $mensaje = $resultado_transferencia['mensaje'];
            $success = $resultado_transferencia['trabajos_actualizados'] > 0;
            
            // Recargar la lista de trabajos
            $trabajos_evaluador = getTrabajosEvaluador($evaluador_id);
        } catch (Exception $e) {
            $mensaje = "Error al transferir evaluaciones: " . $e->getMessage();
        }
    }
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Transferencia de Evaluaciones</title>
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
    <style>
        :root {
            --primary-color: #377970;
            --secondary-color: #2980b9;
            --success-color: #2ecc71;
            --danger-color: #e74c3c;
            --light-bg: #f8f9fa;
        }
        
        body {
            background-color: var(--light-bg);
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        .card {
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            margin-top: 2rem;
        }
        
        .card-header {
            background-color: var(--primary-color);
            color: white;
            border-radius: 10px 10px 0 0 !important;
            padding: 1rem;
        }
        
        .btn-primary {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
        }
        
        .btn-primary:hover {
            background-color: var(--secondary-color);
            border-color: var(--secondary-color);
        }
        
        .select-evaluador {
            border-radius: 5px;
            border: 1px solid #ced4da;
            padding: 10px;
        }
        
        .evaluador-icon {
            font-size: 3rem;
            color: var(--primary-color);
        }
        
        .transfer-icon {
            font-size: 2rem;
            color: var(--primary-color);
        }
        
        .alert-success {
            background-color: var(--success-color);
            color: white;
        }
        
        .alert-danger {
            background-color: var(--danger-color);
            color: white;
        }
        
        .avatar-container {
            width: 80px;
            height: 80px;
            margin: 0 auto 15px;
            border-radius: 50%;
            overflow: hidden;
            border: 3px solid var(--primary-color);
        }
        
        .avatar-container img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
        
        .default-avatar {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 100%;
            height: 100%;
            background-color: #e9ecef;
            color: var(--primary-color);
            font-size: 2rem;
        }
        
        .trabajo-card {
            border: 1px solid #ddd;
            border-radius: 8px;
            margin-bottom: 15px;
            transition: all 0.3s ease;
            background-color: white;
            position: relative;
        }
        
        .trabajo-card:hover {
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
            transform: translateY(-2px);
        }
        
        .trabajo-card.selected {
            border-color: var(--primary-color);
            background-color: rgba(55, 121, 112, 0.05);
        }
        
        .trabajo-card .card-body {
            padding: 1rem;
        }
        
        .trabajo-card .custom-control {
            position: absolute;
            top: 10px;
            right: 10px;
        }
        
        .trabajo-card .codigo {
            font-weight: bold;
            color: var(--primary-color);
        }
        
        .trabajo-card .titulo {
            margin-top: 5px;
            font-size: 0.9rem;
        }
        
        .trabajo-card .evaluador-tipo {
            display: inline-block;
            padding: 3px 8px;
            border-radius: 4px;
            font-size: 0.8rem;
            margin-top: 8px;
            background-color: #e9ecef;
        }
        
        .select-controls {
            margin-bottom: 1rem;
        }
        
        .select-controls button {
            margin-right: 0.5rem;
        }
        
        .trabajo-filtro {
            margin-bottom: 1rem;
        }
        
        .contador-seleccion {
            background-color: var(--primary-color);
            color: white;
            padding: 0.3rem 0.7rem;
            border-radius: 50px;
            font-size: 0.9rem;
            margin-left: 10px;
        }
        
        .sticky-controls {
            position: sticky;
            top: 0;
            background-color: white;
            z-index: 10;
            padding: 10px;
            border-radius: 8px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            margin-bottom: 15px;
        }
        
        @media (max-width: 768px) {
            .arrow-col {
                transform: rotate(90deg);
                margin: 1rem 0;
            }
        }
    </style>
</head>
<body>
    <div class="container py-5">
        <div class="row justify-content-center">
            <div class="col-lg-10">
                <div class="card">
                    <div class="card-header d-flex justify-content-between align-items-center">
                        <h3 class="mb-0"><i class="fas fa-exchange-alt me-2"></i> Transferencia de Evaluaciones</h3>
                    </div>
                    <div class="card-body">
                        <?php if (!empty($mensaje)): ?>
                            <div class="alert <?php echo $success ? 'alert-success' : 'alert-danger'; ?> alert-dismissible fade show" role="alert">
                                <?php echo $mensaje; ?>
                                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                            </div>
                            
                            <?php if ($success && isset($resultado_transferencia['trabajos_con_conflicto']) && !empty($resultado_transferencia['trabajos_con_conflicto'])): ?>
                                <div class="alert alert-warning alert-dismissible fade show mt-3" role="alert">
                                    <h5 class="alert-heading">Trabajos con conflictos no actualizados:</h5>
                                    <ul>
                                    <?php foreach ($resultado_transferencia['trabajos_con_conflicto'] as $conflicto): ?>
                                        <li>Trabajo <strong><?php echo $conflicto['codigo']; ?></strong>: <?php echo $conflicto['motivo']; ?></li>
                                    <?php endforeach; ?>
                                    </ul>
                                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                                </div>
                            <?php endif; ?>
                        <?php endif; ?>
                        
                        <!-- Selección de Evaluador Origen (para mostrar trabajos) -->
                        <form method="get" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" id="selectEvaluadorForm" class="mb-4">
                            <div class="row align-items-center">
                                <div class="col-md-8">
                                    <div class="form-group">
                                        <label for="evaluador_id" class="form-label mb-2"><i class="fas fa-user me-2"></i>Seleccione el evaluador origen para ver sus trabajos pendientes:</label>
                                        <select name="evaluador_id" id="evaluador_id" class="form-select select-evaluador" required onchange="this.form.submit()">
                                            <option value="">-- Seleccione evaluador --</option>
                                            <?php foreach ($evaluadores as $evaluador): ?>
                                                <option value="<?php echo $evaluador['id']; ?>" 
                                                        <?php echo (isset($_GET['evaluador_id']) && $_GET['evaluador_id'] == $evaluador['id']) ? 'selected' : ''; ?>
                                                        data-avatar="<?php echo htmlspecialchars($evaluador['avatar']); ?>">
                                                    <?php echo htmlspecialchars($evaluador['nombre'] . ' [ID: ' . $evaluador['id'] . ']'); ?>
                                                </option>
                                            <?php endforeach; ?>
                                        </select>
                                    </div>
                                </div>
                                <div class="col-md-4 text-center">
                                    <?php if (!empty($evaluador_id)): ?>
                                        <div id="evaluador-origen-avatar" class="avatar-container">
                                            <?php 
                                            $avatar = "";
                                            foreach ($evaluadores as $evaluador) {
                                                if ($evaluador['id'] == $evaluador_id) {
                                                    $avatar = $evaluador['avatar'];
                                                    break;
                                                }
                                            }
                                            ?>
                                            <?php if (!empty($avatar)): ?>
                                                <img src="dist/pages/evaluadores/acciones_evaluador/fotos_empleados/<?php echo htmlspecialchars($avatar); ?>" 
                                                     alt="Avatar" 
                                                     onerror="this.onerror=null; this.parentNode.innerHTML='<div class=\'default-avatar\'><i class=\'fas fa-user\'></i></div>';">
                                            <?php else: ?>
                                                <div class="default-avatar">
                                                    <i class="fas fa-user"></i>
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                    <?php endif; ?>
                                </div>
                            </div>
                        </form>
                        
                        <?php if (!empty($evaluador_id) && !empty($trabajos_evaluador)): ?>
                            <!-- Formulario de Transferencia de Evaluaciones -->
                            <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" id="transferForm">
                                <input type="hidden" name="evaluador_origen" value="<?php echo $evaluador_id; ?>">
                                
                                <div class="row mb-4">
                                    <div class="col-md-8">
                                        <div class="form-group">
                                            <label for="evaluador_destino" class="form-label mb-2"><i class="fas fa-user-check me-2"></i>Seleccione el evaluador destino:</label>
                                            <select name="evaluador_destino" id="evaluador_destino" class="form-select select-evaluador" required>
                                                <option value="">-- Seleccione evaluador destino --</option>
                                                <?php foreach ($evaluadores as $evaluador): ?>
                                                    <?php if ($evaluador['id'] != $evaluador_id): ?>
                                                        <option value="<?php echo $evaluador['id']; ?>"
                                                                <?php echo (isset($evaluador_destino_id) && $evaluador_destino_id == $evaluador['id']) ? 'selected' : ''; ?>
                                                                data-avatar="<?php echo htmlspecialchars($evaluador['avatar']); ?>">
                                                            <?php echo htmlspecialchars($evaluador['nombre'] . ' [ID: ' . $evaluador['id'] . ']'); ?>
                                                        </option>
                                                    <?php endif; ?>
                                                <?php endforeach; ?>
                                            </select>
                                        </div>
                                    </div>
                                    <div class="col-md-4 text-center">
                                        <div id="evaluador-destino-avatar" class="avatar-container">
                                            <div class="default-avatar">
                                                <i class="fas fa-user"></i>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                
                                <!-- Lista de Trabajos -->
                                <div class="row">
                                    <div class="col-12">
                                        <h4 class="mb-3"><i class="fas fa-list-check me-2"></i>Seleccione los trabajos a transferir:</h4>
                                        
                                        <div class="sticky-controls">
                                            <div class="row">
                                                <div class="col-md-6 select-controls">
                                                    <button type="button" class="btn btn-sm btn-outline-primary" id="selectAllTrabajos">Seleccionar Todos</button>
                                                    <button type="button" class="btn btn-sm btn-outline-secondary" id="deselectAllTrabajos">Deseleccionar Todos</button>
                                                    <span class="contador-seleccion" id="contadorSeleccion">0 / <?php echo count($trabajos_evaluador); ?></span>
                                                </div>
                                                <div class="col-md-6">
                                                    <div class="input-group trabajo-filtro">
                                                        <span class="input-group-text"><i class="fas fa-search"></i></span>
                                                        <input type="text" class="form-control" id="filtroTrabajos" placeholder="Filtrar por código o título...">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        
                                        <div class="row" id="listadoTrabajos">
                                            <?php foreach ($trabajos_evaluador as $trabajo): ?>
                                                <div class="col-md-4 trabajo-item">
                                                    <div class="trabajo-card" data-codigo="<?php echo htmlspecialchars($trabajo['codigo']); ?>" data-titulo="<?php echo htmlspecialchars($trabajo['titulo']); ?>">
                                                        <div class="card-body">
                                                            <div class="custom-control custom-checkbox">
                                                                <input type="checkbox" class="custom-control-input trabajo-checkbox" id="trabajo-<?php echo $trabajo['id']; ?>" name="trabajos[]" value="<?php echo $trabajo['id']; ?>">
                                                                <label class="custom-control-label" for="trabajo-<?php echo $trabajo['id']; ?>"></label>
                                                            </div>
                                                            <div class="codigo"><?php echo htmlspecialchars($trabajo['codigo']); ?></div>
                                                            <div class="titulo"><?php echo htmlspecialchars($trabajo['titulo']); ?></div>
                                                            <div class="evaluador-tipo">
                                                                <?php 
                                                                switch ($trabajo['posicion_evaluador']) {
                                                                    case 1:
                                                                        echo 'Evaluador 1';
                                                                        break;
                                                                    case 2:
                                                                        echo 'Evaluador 2';
                                                                        break;
                                                                    case 3:
                                                                        echo 'Evaluador 3';
                                                                        break;
                                                                    default:
                                                                        echo 'Evaluador';
                                                                }
                                                                ?>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            <?php endforeach; ?>
                                        </div>
                                        
                                        <?php if (empty($trabajos_evaluador)): ?>
                                            <div class="alert alert-info">
                                                No se encontraron trabajos pendientes de calificación para este evaluador.
                                            </div>
                                        <?php endif; ?>
                                    </div>
                                </div>
                                
                                <div class="row mt-4">
                                    <div class="col-12 text-center">
                                        <button type="submit" name="transferir" class="btn btn-primary btn-lg px-5" <?php echo empty($trabajos_evaluador) ? 'disabled' : ''; ?>>
                                            <i class="fas fa-exchange-alt me-2"></i> Transferir Evaluaciones Seleccionadas
                                        </button>
                                    </div>
                                </div>
                            </form>
                        <?php elseif (!empty($evaluador_id) && empty($trabajos_evaluador)): ?>
                            <div class="alert alert-info">
                                <i class="fas fa-info-circle me-2"></i> Este evaluador no tiene trabajos pendientes de calificación.
                            </div>
                        <?php endif; ?>
                    </div>
                    <div class="card-footer bg-white border-top-0 text-center text-muted">
                        <small>Esta acción transferirá las evaluaciones seleccionadas del evaluador origen al evaluador destino.</small>
                    </div>
                </div>
                
                <div class="card mt-4">
                    <div class="card-header">
                        <h4 class="mb-0"><i class="fas fa-info-circle me-2"></i> Información</h4>
                    </div>
                    <div class="card-body">
                        <p>La transferencia de evaluaciones reasigna los trabajos que cumplan las siguientes condiciones:</p>
                        <ul>
                            <li>El evaluador origen debe estar asignado al trabajo y usted debe seleccionar cuáles transferir.</li>
                            <li>La calificación correspondiente no debe haber sido ingresada aún.</li>
                            <li>El evaluador destino no debe estar ya asignado como otro evaluador del mismo trabajo.</li>
                        </ul>
                        <p class="mb-0">El sistema mostrará un resumen de las transferencias realizadas y las que no pudieron completarse por conflictos.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <!-- Bootstrap JS Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
<script>
    document.addEventListener('DOMContentLoaded', function() {
        // Actualizar avatar del evaluador destino
        const evaluadorDestinoSelect = document.getElementById('evaluador_destino');
        const avatarContainer = document.getElementById('evaluador-destino-avatar');
        
        if (evaluadorDestinoSelect) {
            evaluadorDestinoSelect.addEventListener('change', function() {
                updateAvatar(this, avatarContainer);
            });
            
            // Actualizar al cargar si hay selección
            if (evaluadorDestinoSelect.value !== "") {
                updateAvatar(evaluadorDestinoSelect, avatarContainer);
            }
        }
        
        // Función para actualizar avatar (CORREGIDA para cargar correctamente el avatar)
        function updateAvatar(select, container) {
            if (select.value !== "") {
                const selectedOption = select.options[select.selectedIndex];
                const avatar = selectedOption.getAttribute('data-avatar');
                
                if (avatar && avatar !== "" && avatar !== "null") {
                    container.innerHTML = `<img src="dist/pages/evaluadores/acciones_evaluador/fotos_empleados/${avatar}" alt="Avatar" onerror="this.onerror=null; this.parentNode.innerHTML='<div class=\\'default-avatar\\'><i class=\\'fas fa-user\\'></i></div>';">`;
                } else {
                    container.innerHTML = `<div class="default-avatar"><i class="fas fa-user"></i></div>`;
                }
            } else {
                container.innerHTML = `<div class="default-avatar"><i class="fas fa-user"></i></div>`;
            }
        }
        
        // NUEVO: Función para cargar avatar del segundo evaluador
        function cargarAvatarSegundoEvaluador() {
            const avatarEvaluador2 = document.getElementById('avatar-evaluador-2');
            const evaluador2Select = document.getElementById('evaluador_2'); // Ajusta este ID según tu HTML
            
            if (avatarEvaluador2 && evaluador2Select && evaluador2Select.value !== "") {
                const selectedOption = evaluador2Select.options[evaluador2Select.selectedIndex];
                const avatar = selectedOption.getAttribute('data-avatar');
                
                if (avatar && avatar !== "" && avatar !== "null") {
                    avatarEvaluador2.src = `dist/pages/evaluadores/acciones_evaluador/fotos_empleados/${avatar}`;
                } else {
                    avatarEvaluador2.src = "dist/img/default-avatar.png"; // Ajusta la ruta según tu estructura
                }
            }
        }
        
        // Llamar a la función para cargar el avatar del segundo evaluador al inicio
        cargarAvatarSegundoEvaluador();
        
        // Si tienes un selector para el segundo evaluador, agrega un listener
        const evaluador2Select = document.getElementById('evaluador_2'); // Ajusta este ID según tu HTML
        if (evaluador2Select) {
            evaluador2Select.addEventListener('change', cargarAvatarSegundoEvaluador);
        }
        
        // Seleccionar/Deseleccionar todos los trabajos (CORREGIDO)
        const selectAllBtn = document.getElementById('selectAllTrabajos');
        const deselectAllBtn = document.getElementById('deselectAllTrabajos');
        const trabajoCheckboxes = document.querySelectorAll('.trabajo-checkbox');
        const contadorSeleccion = document.getElementById('contadorSeleccion');
        
        // NUEVO: Seleccionar/Deseleccionar todos con checkbox
        const selectAllCheckbox = document.getElementById('selectAll');
        if (selectAllCheckbox) {
            selectAllCheckbox.addEventListener('change', function() {
                const isChecked = this.checked;
                
                trabajoCheckboxes.forEach(checkbox => {
                    // Solo seleccionar/deseleccionar los elementos visibles
                    if (!checkbox.closest('.trabajo-item').classList.contains('d-none')) {
                        checkbox.checked = isChecked;
                        if (isChecked) {
                            checkbox.closest('.trabajo-card').classList.add('selected');
                        } else {
                            checkbox.closest('.trabajo-card').classList.remove('selected');
                        }
                    }
                });
                
                updateContador();
            });
        }
        
        if (selectAllBtn) {
            selectAllBtn.addEventListener('click', function() {
                trabajoCheckboxes.forEach(checkbox => {
                    if (!checkbox.closest('.trabajo-item').classList.contains('d-none')) {
                        checkbox.checked = true;
                        checkbox.closest('.trabajo-card').classList.add('selected');
                    }
                });
                // Si existe el checkbox de seleccionar todo, también actualizarlo
                if (selectAllCheckbox) selectAllCheckbox.checked = true;
                updateContador();
            });
        }
        
        if (deselectAllBtn) {
            deselectAllBtn.addEventListener('click', function() {
                trabajoCheckboxes.forEach(checkbox => {
                    checkbox.checked = false;
                    checkbox.closest('.trabajo-card').classList.remove('selected');
                });
                // Si existe el checkbox de seleccionar todo, también actualizarlo
                if (selectAllCheckbox) selectAllCheckbox.checked = false;
                updateContador();
            });
        }
        
        // Actualizar contador de selección
        function updateContador() {
            const totalSeleccionados = document.querySelectorAll('.trabajo-checkbox:checked').length;
            const totalVisibles = document.querySelectorAll('.trabajo-item:not(.d-none)').length;
            if (contadorSeleccion) {
                contadorSeleccion.textContent = totalSeleccionados + ' / ' + totalVisibles;
            }
        }
        
        // Manejar selección de trabajos individuales
        trabajoCheckboxes.forEach(checkbox => {
            checkbox.addEventListener('change', function() {
                if (this.checked) {
                    this.closest('.trabajo-card').classList.add('selected');
                } else {
                    this.closest('.trabajo-card').classList.remove('selected');
                }
                
                // Verificar si todos los checkboxes visibles están seleccionados
                if (selectAllCheckbox) {
                    const totalVisibles = document.querySelectorAll('.trabajo-item:not(.d-none)').length;
                    const totalSeleccionados = document.querySelectorAll('.trabajo-item:not(.d-none) .trabajo-checkbox:checked').length;
                    selectAllCheckbox.checked = (totalVisibles > 0 && totalVisibles === totalSeleccionados);
                }
                
                updateContador();
            });
        });
        
        // Filtrar trabajos
        const filtroInput = document.getElementById('filtroTrabajos');
        if (filtroInput) {
            filtroInput.addEventListener('input', function() {
                const filtro = this.value.toLowerCase();
                const items = document.querySelectorAll('.trabajo-item');
                
                items.forEach(item => {
                    const trabajoCard = item.querySelector('.trabajo-card');
                    const codigo = trabajoCard.dataset.codigo.toLowerCase();
                    const titulo = trabajoCard.dataset.titulo.toLowerCase();
                    
                    if (codigo.includes(filtro) || titulo.includes(filtro)) {
                        item.classList.remove('d-none');
                    } else {
                        item.classList.add('d-none');
                    }
                });
                
                // Actualizar estado del checkbox de seleccionar todo después de filtrar
                if (selectAllCheckbox) {
                    const totalVisibles = document.querySelectorAll('.trabajo-item:not(.d-none)').length;
                    const totalSeleccionados = document.querySelectorAll('.trabajo-item:not(.d-none) .trabajo-checkbox:checked').length;
                    selectAllCheckbox.checked = (totalVisibles > 0 && totalVisibles === totalSeleccionados);
                }
                
                updateContador();
            });
        }
        
        // Inicializar contador al cargar
        updateContador();
        
        // Hacer que los trabajos sean seleccionables al hacer clic en la tarjeta
        const trabajoCards = document.querySelectorAll('.trabajo-card');
        trabajoCards.forEach(card => {
            card.addEventListener('click', function(e) {
                // Evitar activar si se hizo clic directamente en el checkbox
                if (e.target.type !== 'checkbox') {
                    const checkbox = this.querySelector('.trabajo-checkbox');
                    checkbox.checked = !checkbox.checked;
                    
                    // Disparar el evento change para activar los listeners
                    const event = new Event('change');
                    checkbox.dispatchEvent(event);
                }
            });
        });
        
        // Validación del formulario
        const transferForm = document.getElementById('transferForm');
        if (transferForm) {
            transferForm.addEventListener('submit', function(event) {
                const checkboxes = document.querySelectorAll('.trabajo-checkbox:checked');
                const evaluadorDestino = document.getElementById('evaluador_destino').value;
                
                if (checkboxes.length === 0) {
                    event.preventDefault();
                    alert('Error: Debe seleccionar al menos un trabajo para transferir.');
                    return;
                }
                
                if (evaluadorDestino === '') {
                    event.preventDefault();
                    alert('Error: Debe seleccionar un evaluador destino.');
                    return;
                }
            });
        }
        
  
    });
</script>

</body>
</html>
            
            