36459-vm/coding/submit_project.php
2026-05-27 14:29:58 +05:30

90 lines
2.2 KiB
PHP

<?php
session_start();
require_once(__DIR__ . "/../config/db.php");
$name = $_SESSION['student_name'] ?? 'Student';
$roll = $_SESSION['student_id'] ?? 'NA';
$class = $_SESSION['student_class'] ?? '';
$code = $_POST['code'] ?? '';
/* 🔥 TIME TRACKING */
$start_time = $_POST['start_time'] ?? round(microtime(true) * 1000);
$end_time = round(microtime(true) * 1000);
$time_taken = ($end_time - $start_time) / 1000; // seconds
$topic_id = $_POST['topic_id'] ?? 1;
if(strlen(trim($code)) < 20){
die("❌ Write proper logic (too short)");
}
/* 🔥 SMART CHECK */
$passed = false;
$score = 0;
if($topic_id == 1){
if(strpos($code, 'if') !== false && strpos($code, 'average') !== false){
$passed = true;
$score = 90;
} else {
$score = 40;
}
}
/* 🔥 THINKING TYPE LOGIC */
if($time_taken < 30){
$thinking_type = "⚡ Quick Thinker";
}
elseif($time_taken > 120){
$thinking_type = "🧠 Deep Thinker";
}
else{
$thinking_type = "🚶 Balanced Learner";
}
/* SAVE TO DB */
$status = $passed ? 'approved' : 'rejected';
$stmt = $pdo->prepare("
INSERT INTO project_submissions
(student_name, student_id, class, topic_id, score, status, thinking_type)
VALUES (?,?,?,?,?,?,?)
");
$stmt->execute([$name, $roll, $class, $topic_id, $score, $status, $thinking_type]);
/* RESULT UI */
if($passed){
echo "
<div style='text-align:center;margin-top:100px'>
<h2 style='color:#22c55e'>✅ Project Approved 🎉</h2>
<h3 style='color:#facc15'>$thinking_type</h3>
<p style='color:#94a3b8'>
You solved this in ".round($time_taken)." seconds
</p>
<a href='/rs_lab/student/leaderboard.php'
style='display:inline-block;margin-top:20px;padding:12px 30px;
background:#facc15;color:#020617;border-radius:999px;
text-decoration:none;font-weight:bold'>
🏆 View Leaderboard
</a>
</div>
";
}else{
echo "
<div style='text-align:center;margin-top:100px'>
<h2 style='color:#f87171'>❌ Improve your logic</h2>
<h3 style='color:#38bdf8'>$thinking_type</h3>
<p style='color:#94a3b8'>
Try again. You spent ".round($time_taken)." seconds
</p>
</div>
";
}
?>