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>