35819-vm/profile.php
2025-11-18 10:40:14 +00:00

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'; ?>