<?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);

    if (!$data) {
        $response['message'] = 'غلط ڈیٹا فارمیٹ';
        echo json_encode($response);
        exit;
    }

    $attendanceDate = $data['attendanceDate'] ?? '';
    $darja = $data['darja'] ?? '';
    $attendance = $data['attendance'] ?? []; // Array of {regSno: xxx, status: xxx}

    if (empty($attendanceDate) || empty($darja) || empty($attendance)) {
        $response['message'] = 'تمام معلومات فراہم کریں';
        echo json_encode($response);
        exit;
    }

    try {
        $db->beginTransactions();

        $sqlCheck = "SELECT sno FROM attendence 
                    WHERE darjaSno = :darja 
                      AND attendanceDate = :aDate 
                      AND regSno = :regSno";

        $sqlInsert = "INSERT INTO attendence (stdStatus, darjaSno, attendanceDate, regSno) 
                      VALUES (:status, :darja, :aDate, :regSno)";

        $savedCount = 0;
        $skippedCount = 0;

        foreach ($attendance as $entry) {
            $regSno = $entry['regSno'];
            $status = $entry['status'];

            // Check if attendance already exists for this student/date/class
            $existingSno = $db->getValueTrans($sqlCheck, [
                'darja' => $darja,
                'aDate' => $attendanceDate,
                'regSno' => $regSno
            ]);

            if (!$existingSno) {
                $db->dbQueryTrans($sqlInsert, [
                    'status' => $status,
                    'darja' => $darja,
                    'aDate' => $attendanceDate,
                    'regSno' => $regSno
                ]);
                $savedCount++;
            } else {
                $skippedCount++;
            }
        }

        if ($savedCount === 0 && $skippedCount > 0) {
            $db->rollBackTransaction();
            $response['success'] = false;
            $response['message'] = 'اس تاریخ کی حاضری پہلے سے موجود ہے۔';
        } else {
            $db->commitTransaction();
            $response['success'] = true;
            if ($skippedCount > 0) {
                $response['message'] = "$savedCount طلباء کی حاضری محفوظ ہو گئی، جبکہ $skippedCount کی پہلے سے موجود ہونے کی وجہ سے چھوڑ دی گئی۔";
            } else {
                $response['message'] = 'حاضری کامیابی کے ساتھ محفوظ ہو گئی';
            }
        }

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

echo json_encode($response);
