File "ver_evaluaciones-20260419174625.php"

Full Path: C:/wamp64/www/Formaciones/Vistas/Evaluaciones/ver_evaluaciones-20260419174625.php
File size: 9.02 KB
MIME-type: text/x-php
Charset: utf-8

<?php // Vistas/evaluaciones/ver_evaluaciones.php ?>

<style>
.dashboard-container {
  max-width: 1000px;
  margin: 20px auto;
  padding: 15px;
  background: #f8f9fa;
  min-height: auto;
  border-radius: 10px;
  border: 1px solid #000000;
}

.dashboard-header {
  background: white;
  padding: 30px;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  margin-bottom: 30px;
  text-align: center;
}

.dashboard-header h1 {
  margin: 0;
  color: #2c3e50;
  font-size: 2.5rem;
}

.dashboard-content {
  background: white;
  padding: 30px;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

.back-button {
  background: #95a5a6;
  color: white;
  padding: 10px 20px;
  text-decoration: none;
  border-radius: 5px;
  margin-bottom: 20px;
  display: inline-block;
}

.back-button:hover {
  background: #7f8c8d;
}

.attempt-card {
  background: #f8f9fa;
  padding: 20px;
  margin-bottom: 15px;
  border-radius: 8px;
  border-left: 4px solid #3498db;
}

.attempt-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}

.attempt-title {
  font-size: 1.2rem;
  font-weight: bold;
  color: #2c3e50;
}

.attempt-meta {
  color: #7f8c8d;
  font-size: 0.9rem;
}

.attempt-score {
  font-size: 1.1rem;
  font-weight: bold;
  color: #27ae60;
}

.view-button {
  background: #3498db;
  color: white;
  padding: 8px 15px;
  text-decoration: none;
  border-radius: 4px;
  font-size: 0.9rem;
}

.view-button:hover {
  background: #2980b9;
}

.question {
  background: #f8f9fa;
  padding: 20px;
  margin-bottom: 20px;
  border-radius: 8px;
  border-left: 4px solid #2ecc71;
}

.question.correct {
  border-left-color: #27ae60;
}

.question.incorrect {
  border-left-color: #e74c3c;
}

.question.manual {
  border-left-color: #f39c12;
}

.question-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 15px;
}

.question-text {
  font-weight: 600;
  color: #2c3e50;
  flex: 1;
}

.question-points {
  background: #3498db;
  color: white;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 0.9rem;
  margin-left: 10px;
}

.answer-section {
  background: white;
  padding: 15px;
  border-radius: 5px;
  margin-top: 10px;
}

.user-answer {
  background: #e8f4fd;
  padding: 10px;
  border-radius: 4px;
  margin-bottom: 10px;
}

.correct-answer {
  background: #d4edda;
  padding: 10px;
  border-radius: 4px;
  border-left: 3px solid #28a745;
}

.answer-status {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: bold;
  margin-bottom: 8px;
}

.status-correct {
  background: #d4edda;
  color: #155724;
}

.status-incorrect {
  background: #f8d7da;
  color: #721c24;
}

.status-pending {
  background: #fff3cd;
  color: #856404;
}

.signature-preview {
  text-align: center;
  margin: 20px 0;
  padding: 15px;
  background: #f8f9fa;
  border-radius: 5px;
}

.signature-preview img {
  max-width: 300px;
  border: 1px solid #ddd;
  border-radius: 4px;
}
</style>

<div class="dashboard-container">
    <div class="dashboard-header">
        <h1><?= $detailed_view ? 'Detalles de Evaluación' : 'Evaluaciones Realizadas' ?></h1>
        <p>Curso: <?= htmlspecialchars($course['title']) ?></p>
    </div>
    
    <div class="dashboard-content">
        <?php if (!$detailed_view): ?>
            <!-- Lista de evaluaciones -->
            <a href="index.php?r=evaluaciones/mis-cursos" class="back-button">← Volver a Mis Cursos</a>
            
            <h2>Evaluaciones Completadas</h2>
            
            <?php if ($attempts->num_rows === 0): ?>
                <p>No has completado ninguna evaluación en este curso.</p>
            <?php else: ?>
                <?php while($attempt = $attempts->fetch_assoc()): ?>
                    <div class="attempt-card">
                        <div class="attempt-header">
                            <div>
                                <div class="attempt-title"><?= htmlspecialchars($attempt['quiz_title']) ?></div>
                                <div class="attempt-meta">
                                    Intento #<?= (int)$attempt['attempt_number'] ?> • 
                                    Enviado: <?= htmlspecialchars($attempt['submitted_at']) ?>
                                </div>
                            </div>
                            <div class="attempt-score"><?= (float)$attempt['score'] ?>%</div>
                        </div>
                        <div style="text-align: right; margin-top: 10px;">
                            <a href="index.php?r=evaluaciones/ver-evaluaciones&course_id=<?= (int)$course_id ?>&attempt_id=<?= (int)$attempt['id'] ?>" class="view-button">
                                Ver Detalles
                            </a>
                        </div>
                    </div>
                <?php endwhile; ?>
            <?php endif; ?>
            
        <?php else: ?>
            <!-- Vista detallada de un intento específico -->
            <a href="index.php?r=evaluaciones/ver-evaluaciones&course_id=<?= (int)$course_id ?>" class="back-button">← Volver a la lista</a>
            
            <div class="attempt-card">
                <div class="attempt-header">
                    <div>
                        <div class="attempt-title"><?= htmlspecialchars($attempt_details['quiz_title']) ?></div>
                        <div class="attempt-meta">
                            Intento #<?= (int)$attempt_details['attempt_number'] ?> • 
                            Enviado: <?= htmlspecialchars($attempt_details['submitted_at']) ?>
                        </div>
                    </div>
                    <div class="attempt-score">Puntaje: <?= (float)$attempt_details['score'] ?>%</div>
                </div>
            </div>

            <?php if (!empty($attempt_details['firma'])): ?>
            <div class="signature-preview">
                <h4>Firma Digital:</h4>
                <img src="<?= htmlspecialchars($attempt_details['firma']) ?>" alt="Firma del estudiante">
            </div>
            <?php endif; ?>

            <h3>Respuestas</h3>
            
            <?php foreach($answers as $index => $answer): ?>
                <?php
                $status_class = '';
                $status_text = '';
                if ($answer['question_type'] === 'mcq') {
                    if ($answer['is_correct']) {
                        $status_class = 'correct';
                        $status_text = '<span class="answer-status status-correct">✓ Correcta</span>';
                    } else {
                        $status_class = 'incorrect';
                        $status_text = '<span class="answer-status status-incorrect">✗ Incorrecta</span>';
                    }
                } else {
                    $status_class = 'manual';
                    $status_text = '<span class="answer-status status-pending">⏳ Requiere revisión manual</span>';
                }
                ?>
                
                <div class="question <?= $status_class ?>">
                    <div class="question-header">
                        <div class="question-text">
                            <?= $status_text ?>
                            Pregunta <?= $index + 1 ?>: <?= htmlspecialchars($answer['question_text']) ?>
                        </div>
                        <div class="question-points">
                            <?= (int)$answer['points'] ?> pts
                            <?php if ($answer['awarded_points'] > 0): ?>
                                (Obtenidos: <?= (int)$answer['awarded_points'] ?>)
                            <?php endif; ?>
                        </div>
                    </div>
                    
                    <div class="answer-section">
                        <div class="user-answer">
                            <strong>Tu respuesta:</strong><br>
                            <?php if ($answer['question_type'] === 'mcq'): ?>
                                <?= htmlspecialchars($answer['selected_option_text'] ?? 'No seleccionada') ?>
                            <?php else: ?>
                                <?= nl2br(htmlspecialchars($answer['answer_text'])) ?>
                            <?php endif; ?>
                        </div>
                        
                        <?php if ($answer['question_type'] === 'mcq' && $answer['correct_option_text']): ?>
                            <div class="correct-answer">
                                <strong>Respuesta correcta:</strong><br>
                                <?= htmlspecialchars($answer['correct_option_text']) ?>
                            </div>
                        <?php endif; ?>
                    </div>
                </div>
            <?php endforeach; ?>
            
        <?php endif; ?>
    </div>
</div>