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

Download   Open   Back

<?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()]); }
?>


PHP File Manager