<?php
require_once '../../config/config.php';
header('Content-Type: application/json');
try {
    $limit = isset($_GET['length']) ? (int)$_GET['length'] : 10;
    $offset = isset($_GET['start']) ? (int)$_GET['start'] : 0;
    $orderColumnIndex = isset($_GET['order'][0]['column']) ? (int)$_GET['order'][0]['column'] : 0;
    $orderDir = isset($_GET['order'][0]['dir']) && in_array(strtolower($_GET['order'][0]['dir']), ['asc','desc']) ? $_GET['order'][0]['dir'] : 'asc';
    $searchValue = isset($_GET['search']['value']) ? trim($_GET['search']['value']) : '';

    $columns = ['setting_id','exam_type','max_marks','pass_marks','min_marks'];
    $orderBy = isset($columns[$orderColumnIndex]) ? $columns[$orderColumnIndex] : 'setting_id';

    $where = '';
    $bindings = [];
    if ($searchValue !== '') { $where = 'WHERE s.subject_name LIKE :q OR sas.exam_type LIKE :q'; $bindings[':q'] = "%$searchValue%"; }

    $sql = "SELECT sas.setting_id, sas.exam_type, sas.max_marks, sas.pass_marks, sas.min_marks, s.subject_name
            FROM subject_assessment_settings sas JOIN subjects s ON s.subject_id=sas.subject_id $where
            ORDER BY $orderBy $orderDir LIMIT :limit OFFSET :offset";
    $stmt=$pdo->prepare($sql);
    foreach($bindings as $k=>$v){ $stmt->bindValue($k,$v,PDO::PARAM_STR);} $stmt->bindValue(':limit',$limit,PDO::PARAM_INT); $stmt->bindValue(':offset',$offset,PDO::PARAM_INT); $stmt->execute();
    $data=$stmt->fetchAll(PDO::FETCH_ASSOC);

    $total=(int)$pdo->query('SELECT COUNT(*) FROM subject_assessment_settings')->fetchColumn();
    if ($where){ $stmtF=$pdo->prepare("SELECT COUNT(*) FROM subject_assessment_settings sas JOIN subjects s ON s.subject_id=sas.subject_id $where"); foreach($bindings as $k=>$v){ $stmtF->bindValue($k,$v,PDO::PARAM_STR);} $stmtF->execute(); $filtered=(int)$stmtF->fetchColumn(); } else { $filtered=$total; }

    echo json_encode(['draw'=>(int)($_GET['draw']??0),'recordsTotal'=>$total,'recordsFiltered'=>$filtered,'data'=>$data]);
} catch (Throwable $e){ http_response_code(500); echo json_encode(['error'=>'Server error: '.$e->getMessage()]); }
?>


