<?php
header('Content-Type: application/json');
require_once('../libs/classes/DbPathsArray.php');
require_once('../libs/classes/App_DB.php');

$db = new App_DB(DBU::$dba_user);

$response = [
    'success' => false,
    'message' => ''
];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $data = json_decode(file_get_contents('php://input'), true);
    
    $stdSno = $data['stdSno'] ?? '';
    $darja = $data['darja'] ?? '';
    $resultTerm = $data['resultTerm'] ?? '';
    $promotionDate = $data['promotionDate'] ?? '';
    $dateEnd = $data['dateEnd'] ?? '';
    $eduRemarks = $data['edu_year_remarks'] ?? '';
    $marksArray = $data['marks'] ?? [];

    if (empty($stdSno) || empty($darja) || empty($resultTerm) || empty($promotionDate) || empty($dateEnd) || empty($marksArray)) {
        $response['message'] = 'تمام ضروری معلومات فراہم کریں';
        echo json_encode($response);
        exit;
    }

    try {
        $db->beginTransactions();
        
        foreach ($marksArray as $mark) {
            $subjectSno = $mark['subjectsno'];
            $obtMarks = $mark['obtMarks'];

            // Duplicate Check
            $sqlsrch = "SELECT sno FROM result 
                        WHERE subjectsno = :subSno 
                          AND resultTerm = :term 
                          AND promotionDate = :pDate 
                          AND dateEnd = :dEnd 
                          AND stdSno = :stdSno";
            
            $existing = $db->dbQueryTrans($sqlsrch, [
                'subSno' => $subjectSno,
                'term' => $resultTerm,
                'pDate' => $promotionDate,
                'dEnd' => $dateEnd,
                'stdSno' => $stdSno
            ]);

            if (!empty($existing)) {
                $db->rollBackTransaction();
                $response['message'] = 'اس طالب علم کا نتیجہ پہلے ہی سے موجود ہے';
                echo json_encode($response);
                exit;
            }

            // Insert
            $sqlInsert = "INSERT INTO result (darjasno, stdSno, subjectsno, obtmarks, promotionDate, dateEnd, resultTerm, edu_year_remarks) 
                          VALUES (:darj, :std, :sub, :marks, :pDate, :dEnd, :term, :rem)";
            
            $inserted = $db->dbQueryTrans($sqlInsert, [
                'darj' => $darja,
                'std' => $stdSno,
                'sub' => $subjectSno,
                'marks' => $obtMarks,
                'pDate' => $promotionDate,
                'dEnd' => $dateEnd,
                'term' => $resultTerm,
                'rem' => $eduRemarks
            ]);

            if (!$inserted) {
                $db->rollBackTransaction();
                $response['message'] = 'کمپوٹر میں غلطی کی بناء پر نتیجہ محفوظ نہ ہوسکا';
                echo json_encode($response);
                exit;
            }
        }

        $db->commitTransaction();
        $response['success'] = true;
        $response['message'] = 'نتیجہ کامیابی کے ساتھ محفوظ ہو گیا';

    } catch (Exception $e) {
        $db->rollBackTransaction();
        $response['message'] = 'ڈیٹابیس کی خرابی: ' . $e->getMessage();
    }
}

echo json_encode($response);
