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



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

checkIfNoPhpContentsReceive();

if (
    !isset($postdata['institution_id']) or !checkIfIssetAndNotEmpty($postdata['institution_id']) or
    !isset($postdata['branch_id']) || !checkIfIssetAndNotEmpty($postdata['branch_id']) or
    !isset($postdata['function_type']) or !checkIfIssetAndNotEmpty($postdata['function_type']) or
    !isset($postdata['api_signature']) or !checkIfIssetAndNotEmpty($postdata['api_signature']) or
    !isset($postdata['jwt_token']) or !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;
$name = $jwt_validate->data->name;

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

$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/common_functions.php';
require_once $base_path_to_learning . 'functions/get_branch_functions.php';

$academicSessionId = CheckAcademicSession($conn_rjllearning_specific, $institution_id);
if (!$academicSessionId) {
    errorreturn("Invalid institution_id");
}

$isBranchClassSubjectValid = checkBranchClassSubject($conn_rjllearning_specific, $branch_id, null, null, $institution_id);
if (!$isBranchClassSubjectValid) {
    errorreturn("Invalid branch_id.");
}

// function getspecific_book_detail($conn_rjllearning_specific, $book_id, $institution_id, $branch_id)
// {
//     //check if the book exist
//     $sql = "SELECT id FROM library_management WHERE id = ? AND institution_id = ? AND branch_id = ?";
//     $stmt = $conn_rjllearning_specific->prepare($sql);
//     $stmt->execute([$book_id,$institution_id,$branch_id]);
//     $book = $stmt->fetch();

//     if (!$book) {
//         errorreturn("No Book exist for the given institution and branch.");
//     }


//     //count the issue
//     $sql = "SELECT COUNT(*) as issue_count FROM book_issues WHERE book_id = ? AND date_of_issue IS NOT NULL";
//     $stmt = $conn_rjllearning_specific->prepare($sql);
//     $stmt->execute(array($book_id));
//     $issue_count = $stmt->fetch()['issue_count'];

//     //count the return
//     $sql = "SELECT COUNT(*) as return_count FROM book_issues WHERE book_id = ? AND date_of_return IS NOT NULL";
//     $stmt = $conn_rjllearning_specific->prepare($sql);
//     $stmt->execute(array($book_id));
//     $return_count = $stmt->fetch()['return_count'];

//     //get the last purchase and the current quantity
//     $sql = "SELECT MAX(date_added) as last_purchase_date, current_quantity,opening_quantity,book_name,author,genre,year_of_publication,language,publisher FROM library_management WHERE id = ?";
//     $stmt = $conn_rjllearning_specific->prepare($sql);
//     $stmt->execute(array($book_id));
//     $result = $stmt->fetch();

//     $last_purchase_date = $result['last_purchase_date'];
//     $current_quantity = $result['current_quantity'];
//     $total_quantity = $result['opening_quantity'];
//     $book_name = $result['book_name'];
//     $author_name = $result['author'];
//     $book_genre = $result['genre'];
//     $publication_year = $result['year_of_publication'];
//     $language = $result['language'];
//     $publisher = $result['publisher'];

//     return array(
//         "book_name" => $book_name,
//         'author' => $author_name,
//         'last_purchase_date' => $last_purchase_date,
//         'issued' => $issue_count . " times",
//         'returned' => $return_count . " times",
//         'genre' => $book_genre,
//         'publication_year' => $publication_year,
//         'language' => $language,
//         'publisher' => $publisher,
//         'current_quantity' => $current_quantity,
//         'total_quantity' => $total_quantity,
//     );
// }

if ($postdata['function_type'] == "fetch_specific_book_details") {

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

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

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

    // if (isset($postdata['search_string']) && !empty($postdata['search_string'])) {
    //     $search_string = trim($postdata['search_string']);
    // } else {
    //     $search_string = null;
    // }

    $fetch_book_details = getspecific_book_detail($conn_rjllearning_specific, $book_id, $institution_id, $branch_id);

    if ($fetch_book_details) {
        successreturn($fetch_book_details);
    } else {
        errorreturn("No book details available.");
    }
} else {
    errorreturn("Invalid Function_type");
}
