111 lines
5.4 KiB
PHP
111 lines
5.4 KiB
PHP
<?php
|
|
require_once 'partials/header.php';
|
|
require_once 'db/config.php';
|
|
|
|
if (!isset($_SESSION['user_id'])) {
|
|
header('Location: login.php');
|
|
exit;
|
|
}
|
|
|
|
$user_id = $_SESSION['user_id'];
|
|
$results = [];
|
|
|
|
try {
|
|
$pdo = db();
|
|
$stmt = $pdo->prepare('SELECT * FROM survey_results WHERE user_id = :user_id ORDER BY created_at DESC');
|
|
$stmt->execute([':user_id' => $user_id]);
|
|
$results = $stmt->fetchAll();
|
|
} catch (PDOException $e) {
|
|
// handle error
|
|
}
|
|
|
|
?>
|
|
|
|
<h2>Your Past Results</h2>
|
|
|
|
<?php if (empty($results)): ?>
|
|
<p>You have no past survey results.</p>
|
|
<?php else: ?>
|
|
<div class="accordion" id="resultsAccordion">
|
|
<?php foreach ($results as $index => $result): ?>
|
|
<?php $data = json_decode($result['results_json'], true); ?>
|
|
<div class="accordion-item">
|
|
<h2 class="accordion-header" id="heading<?php echo $index; ?>">
|
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse<?php echo $index; ?>" aria-expanded="false" aria-controls="collapse<?php echo $index; ?>">
|
|
Survey from <?php echo date('F j, Y, g:i a', strtotime($result['created_at'])); ?>
|
|
</button>
|
|
</h2>
|
|
<div id="collapse<?php echo $index; ?>" class="accordion-collapse collapse" aria-labelledby="heading<?php echo $index; ?>" data-bs-parent="#resultsAccordion">
|
|
<div class="accordion-body">
|
|
<h5>Overall Summary</h5>
|
|
<p><?php echo htmlspecialchars($data['summary'] ?? ''); ?></p>
|
|
|
|
<h5>Score Breakdown</h5>
|
|
<canvas id="chart-<?php echo $index; ?>" width="400" height="400"></canvas>
|
|
|
|
<h5>Recommendations</h5>
|
|
<div class="accordion" id="recommendationsAccordion-<?php echo $index; ?>">
|
|
<?php foreach ($data['recommendations'] as $rec_index => $rec): ?>
|
|
<div class="accordion-item">
|
|
<h2 class="accordion-header" id="rec-heading-<?php echo $index; ?>-<?php echo $rec_index; ?>">
|
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#rec-collapse-<?php echo $index; ?>-<?php echo $rec_index; ?>" aria-expanded="false" aria-controls="rec-collapse-<?php echo $index; ?>-<?php echo $rec_index; ?>">
|
|
<?php echo htmlspecialchars($rec['title']); ?>
|
|
</button>
|
|
</h2>
|
|
<div id="rec-collapse-<?php echo $index; ?>-<?php echo $rec_index; ?>" class="accordion-collapse collapse" aria-labelledby="rec-heading-<?php echo $index; ?>-<?php echo $rec_index; ?>" data-bs-parent="#recommendationsAccordion-<?php echo $index; ?>">
|
|
<div class="accordion-body">
|
|
<?php echo htmlspecialchars($rec['description']); ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
|
|
<h5>Next Steps</h5>
|
|
<ul>
|
|
<?php foreach ($data['next_steps'] as $step): ?>
|
|
<li><?php echo htmlspecialchars($step); ?></li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
new Chart(document.getElementById('chart-<?php echo $index; ?>'), {
|
|
type: 'radar',
|
|
data: {
|
|
labels: ['Exhaustion', 'Cynicism', 'Inefficacy'],
|
|
datasets: [{
|
|
label: 'Burnout Score',
|
|
data: [
|
|
<?php echo $data['scores']['Exhaustion'] ?? 0; ?>,
|
|
<?php echo $data['scores']['Cynicism'] ?? 0; ?>,
|
|
<?php echo $data['scores']['Inefficacy'] ?? 0; ?>
|
|
],
|
|
fill: true,
|
|
backgroundColor: 'rgba(255, 99, 132, 0.2)',
|
|
borderColor: 'rgb(255, 99, 132)',
|
|
pointBackgroundColor: 'rgb(255, 99, 132)',
|
|
pointBorderColor: '#fff',
|
|
pointHoverBackgroundColor: '#fff',
|
|
pointHoverBorderColor: 'rgb(255, 99, 132)'
|
|
}]
|
|
},
|
|
options: {
|
|
elements: {
|
|
line: {
|
|
borderWidth: 3
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<?php require_once 'partials/footer.php'; ?>
|