<?php

ini_set('display_errors', 1);

require_once '../../../../resources/base_path_include.php';
require_once $base_path_to_learning_resources  . "includes/connect.php";
require_once $base_path_to_learning_resources . 'lib/function.php';
require_once $base_path_to_learning_resources . 'lib/validate_api_signature.php';
require_once $base_path_to_learning_resources . 'lib/validate_function.php';
require_once $base_path_to_learning . 'user_management/authenticate.php';
require_once $base_path_to_learning . 'functions/common_functions.php';
require_once $base_path_to_learning_resources . 'includes/specific_db_config.php';
require_once $base_path_to_learning . 'functions/get_branch_functions.php';
require_once $base_path_to_learning . 'admin_api/global_settings/otp_settings/functions.php';
require_once $base_path_to_learning . "faculty_api/faculty_function/common_faculty_function.php";
require_once $base_path_to_learning . "principal_api/principal_function/principal_function.php";
require_once $base_path_to_learning_resources . 'lib/bucket_functions/bucket_functions.php';
require_once $base_path_to_learning . "vendor/autoload.php";
require_once $base_path_to_learning_resources . 'includes/aws_bucket_config.php';
require_once $base_path_to_learning_resources . 'lib/common_modules/fun_tasks/speech_assessment/faculty_speech_assessment_function.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$postdata = json_decode(file_get_contents("php://input"), true);

checkIfNoPhpContentsReceive();

if (
    !isset($postdata['api_signature']) || !checkIfIssetAndNotEmpty($postdata['api_signature']) ||
    !isset($postdata['function_type']) || !checkIfIssetAndNotEmpty($postdata['function_type']) ||
    !isset($postdata['jwt_token']) || !checkIfIssetAndNotEmpty($postdata['jwt_token'])
) {
    errorreturn("All * fields are required.");
}

validateApiSignature($postdata['api_signature']);

$jwttoken     = $postdata['jwt_token'];
$jwt_validate = authenticate_jwt($jwttoken);

$userid         = $jwt_validate->data->id;
$workspace_id   = $jwt_validate->data->workspace_id;
$username       = $jwt_validate->data->username;
$role           = $jwt_validate->data->role;
$branch_id      = $jwt_validate->data->branch_id;
$institution_id = $jwt_validate->data->institution_id;
$institution_id = 2;
$specific_db_name = validateUserAccess($conn_rjllearning, $userid, $role, $workspace_id, ["superadmin","admin"], null);
if (!$specific_db_name) {
    errorreturn('Access denied.1');
} else {
    $conn_rjllearning_specific = dynamicDbConnection($specific_db_name);
}

require_once $base_path_to_learning . 'user_management/user_versioning.php';

$version      = isset($_POST['version']) ? $_POST['version'] : ($postdata['version'] ?? null);
$updated_time = isset($_POST['updated_time']) ? $_POST['updated_time'] : ($postdata['updated_time'] ?? null);

$response = user_data_refresh(
    $conn_rjllearning,
    $conn_rjllearning_specific,
    $version,
    $updated_time,
    $userid,
    $institution_id
);

$function_type = trim($postdata['function_type']);

if ($function_type === "fetch_mark_student_speech_assesment_submission") {
    $check_academic_confirmation = CheckAcademicSession($conn_rjllearning_specific, $institution_id);
    if ($check_academic_confirmation !== true) {
        errorreturn("Access denied. Academic session not active.");
    }

    // Required fields
    if (
        !isset($postdata['student_id']) ||
        !isset($postdata['speech_task_id']) ||
        !isset($postdata['submission_id']) ||
        !isset($postdata['remarks']) ||
        !isset($postdata['rating'])
    ) {
        errorreturn("Missing required fields: student_id, speech_task_id, submission_id, remarks, rating.");
    }

    $student_id      = trim($postdata['student_id']);
    $speech_task_id  = trim($postdata['speech_task_id']);
    $submission_id   = trim($postdata['submission_id']);
    $remarks         = trim($postdata['remarks']);
    $rating          = (int)$postdata['rating'];
    $another_attempt = isset($postdata['another_attempt']) ? (int)$postdata['another_attempt'] : 0;

    $teacher_username = $username; // from JWT

    $result = markSpeechTaskSubmission(
        $conn_rjllearning_specific,
        $student_id,
        $speech_task_id,
        $submission_id,
        $remarks,
        $rating,
        $another_attempt,
        $teacher_username
    );

    successreturn(["message" => "Submission marked successfully", "result" => $result]);

} else {
    errorreturn("Invalid Function Type");
}
