File "grading.php"
Full path: /home2/santhos2/public_html/bharath-coe.firstmatrix.in.net/api/seed/grading.php
File size: 3.85 KiB (3945 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
header('Content-Type: application/json');
require_once '../../config/config.php';
function findCourseId(PDO $pdo, string $code): int { $s=$pdo->prepare('SELECT course_id FROM courses WHERE course_code=?'); $s->execute([$code]); return (int)($s->fetchColumn()?:0); }
function findSubjectId(PDO $pdo, string $code): int { $s=$pdo->prepare('SELECT subject_id FROM subjects WHERE subject_code=?'); $s->execute([$code]); return (int)($s->fetchColumn()?:0); }
function ensureGradingSystem(PDO $pdo, int $courseId, string $name, int $isActive=1): int {
$s=$pdo->prepare('SELECT grading_system_id FROM grading_systems WHERE system_name=? AND course_id=?');
$s->execute([$name,$courseId]);
$id=(int)($s->fetchColumn()?:0);
if($id){ return $id; }
$i=$pdo->prepare('INSERT INTO grading_systems (system_name, course_id, is_active) VALUES (?,?,?)');
$i->execute([$name,$courseId,$isActive]);
return (int)$pdo->lastInsertId();
}
function ensureGrade(PDO $pdo, int $gsId, string $name, int $min, int $max, float $point, int $isPass): int {
$s=$pdo->prepare('SELECT grade_id FROM grades WHERE grading_system_id=? AND grade_name=?');
$s->execute([$gsId,$name]);
$id=(int)($s->fetchColumn()?:0);
if($id){
$u=$pdo->prepare('UPDATE grades SET min_marks=?, max_marks=?, grade_point=?, is_pass=? WHERE grade_id=?');
$u->execute([$min,$max,$point,$isPass,$id]);
return $id;
}
$i=$pdo->prepare('INSERT INTO grades (grading_system_id, grade_name, min_marks, max_marks, grade_point, is_pass) VALUES (?,?,?,?,?,?)');
$i->execute([$gsId,$name,$min,$max,$point,$isPass]);
return (int)$pdo->lastInsertId();
}
function ensureAssessment(PDO $pdo, int $subjectId, string $examType, int $max, int $pass, int $min): int {
$s=$pdo->prepare('SELECT setting_id FROM subject_assessment_settings WHERE subject_id=? AND exam_type=?');
$s->execute([$subjectId,$examType]);
$id=(int)($s->fetchColumn()?:0);
if($id){
$u=$pdo->prepare('UPDATE subject_assessment_settings SET max_marks=?, pass_marks=?, min_marks=? WHERE setting_id=?');
$u->execute([$max,$pass,$min,$id]);
return $id;
}
$i=$pdo->prepare('INSERT INTO subject_assessment_settings (subject_id, exam_type, max_marks, pass_marks, min_marks) VALUES (?,?,?,?,?)');
$i->execute([$subjectId,$examType,$max,$pass,$min]);
return (int)$pdo->lastInsertId();
}
try{
$pdo->beginTransaction();
// Map courses to grading systems
$courses = [
'BE-ME' => 'UG Regulation 2020',
'BE-CSE' => 'UG Regulation 2020',
'ME-MFG' => 'PG Regulation 2020',
'PHD-ME' => 'Research Regulation 2020'
];
$gsCreated = [];
foreach($courses as $courseCode => $systemName){
$cid = findCourseId($pdo, $courseCode);
if($cid<=0) continue;
$gsId = ensureGradingSystem($pdo, $cid, $systemName, 1);
$gsCreated[$courseCode] = $gsId;
// Standard grades
$grades = [
['S',90,100,10.0,1],
['A',80,89,9.0,1],
['B',70,79,8.0,1],
['C',60,69,7.0,1],
['D',50,59,6.0,1],
['E',40,49,5.0,1],
['F',0,39,0.0,0]
];
foreach($grades as $g){ ensureGrade($pdo,$gsId,$g[0],$g[1],$g[2],$g[3],$g[4]); }
}
// Subject assessment settings for a few seeded subjects
$subjects = [
'ME101','ME201','CS101','CS201'
];
$assessCreated = 0;
foreach($subjects as $scode){
$sid = findSubjectId($pdo, $scode);
if($sid<=0) continue;
ensureAssessment($pdo,$sid,'Semester',100,40,0);
ensureAssessment($pdo,$sid,'Internal',50,25,0);
$assessCreated+=2;
}
$pdo->commit();
echo json_encode(['status'=>'success','message'=>'Grading sample data seeded.','grading_systems'=>count($gsCreated),'assessments'=>$assessCreated]);
}catch(Throwable $e){ if($pdo->inTransaction()) $pdo->rollBack(); http_response_code(500); echo json_encode(['status'=>'error','message'=>$e->getMessage()]); }
?>