<?php
require_once '../../config/config.php';
header('Content-Type: application/json');

try {
    $input = json_decode(file_get_contents('php://input'), true);
    
    if (!$input) {
        throw new Exception('Invalid JSON input');
    }

    if (!isset($input['session_id']) || empty($input['session_id'])) {
        throw new Exception('Session ID is required');
    }

    $session_id = $input['session_id'];

    // Start transaction
    $pdo->beginTransaction();

    // Update mark entry session
    $sql = "UPDATE mark_entry_sessions SET 
            session_name = ?, 
            exam_subject_id = ?, 
            pattern_id = ?, 
            academic_year = ?, 
            exam_type_id = ?, 
            session_date = ?, 
            status = ?,
            updated_at = CURRENT_TIMESTAMP
            WHERE session_id = ?";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([
        $input['session_name'],
        $input['exam_subject_id'],
        $input['pattern_id'],
        $input['academic_year'],
        $input['exam_type_id'],
        $input['session_date'],
        $input['status'] ?? 'Draft',
        $session_id
    ]);

    // If assignments are provided, update them
    if (isset($input['assignments']) && is_array($input['assignments'])) {
        // Delete existing assignments
        $deleteSql = "DELETE FROM mark_entry_assignments WHERE session_id = ?";
        $deleteStmt = $pdo->prepare($deleteSql);
        $deleteStmt->execute([$session_id]);

        // Insert new assignments
        $assignmentSql = "INSERT INTO mark_entry_assignments 
                         (session_id, valuator_id, question_range_start, question_range_end, total_questions, status) 
                         VALUES (?, ?, ?, ?, ?, ?)";
        
        $assignmentStmt = $pdo->prepare($assignmentSql);
        
        foreach ($input['assignments'] as $assignment) {
            $assignmentStmt->execute([
                $session_id,
                $assignment['valuator_id'],
                $assignment['question_range_start'],
                $assignment['question_range_end'],
                $assignment['total_questions'],
                $assignment['status'] ?? 'Assigned'
            ]);
        }
    }

    // Commit transaction
    $pdo->commit();

    echo json_encode([
        'status' => 'success',
        'message' => 'Mark entry session updated successfully'
    ]);

} catch (Exception $e) {
    // Rollback transaction on error
    if ($pdo->inTransaction()) {
        $pdo->rollback();
    }
    
    echo json_encode([
        'status' => 'error',
        'message' => $e->getMessage()
    ]);
}
?>
