<?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_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 . "user_management/functions/functions.php";
require_once $base_path_to_learning . "admin_api/modules/library_management/library_function.php";
// require_once $base_path_to_learning . "admin_api/modules/library_management/fetch_specific_book.php";

// Get and decode the JSON data from the request
$postdata = json_decode(file_get_contents("php://input"), true);


// Check if POST data is received
checkIfNoPhpContentsReceive();

// Validate required fields
$requiredFields = ['institution_id', 'branch_id', 'function_type', 'api_signature', 'jwt_token'];
foreach ($requiredFields as $field) {
    if (!isset($postdata[$field]) || !checkIfIssetAndNotEmpty($postdata[$field])) {
        errorreturn("All fields are required.");
    }
}

// Validate API signature
validateApiSignature($postdata['api_signature']);

// Authenticate JWT token
$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;
$name = $jwt_validate->data->name;

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

// Validate user access
$specific_db_name = validateUserAccess($conn_rjllearning, $userid, $role, $workspace_id,['superadmin','admin'], $institution_id);
if (!$specific_db_name) {
    errorreturn('Access denied.');
} else {
    $conn_rjllearning_specific = dynamicDbConnection($specific_db_name);
}

require_once $base_path_to_learning . 'functions/get_branch_functions.php';

// Check academic session validity
$academicSessionId = CheckAcademicSession($conn_rjllearning_specific, $institution_id);
if (!$academicSessionId) {
    errorreturn("Invalid institution_id");
}

// Validate branch and class details
$isBranchClassSubjectValid = checkBranchClassSubject($conn_rjllearning_specific, $branch_id, null, null, $institution_id);
if (!$isBranchClassSubjectValid) {
    errorreturn("Invalid branch_id.");
}

if ($function_type === "students_book_details") {
    if (!isset($postdata['book_id']) || empty(trim($postdata['book_id']))) {
        errorreturn("book_id is required.");
    }

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

    // Check if academic session is active
    $check_academic_confirmation = CheckAcademicSession($conn_rjllearning_specific, $institution_id);
    if (!$check_academic_confirmation) {
        errorreturn("Access denied. Academic session not active.");
    }

    // Get book details and student details
    $book_details = getspecific_book_detail($conn_rjllearning_specific, $book_id, $institution_id, $branch_id);
    $students_detail = get_students_for_books($conn_rjllearning_specific, $book_id);

    $result = array(
        "book_id" => $book_id,
        "book_name" => $book_details['book_name'],
        "details" => $students_detail
    );

    // Return result as JSON
    // echo json_encode($result);
    successreturn($result);
} else {
    errorreturn("Invalid function_type");
}

?>
