<?php
ini_set('display_errors', 1);

require_once '../../../resources/base_path_include.php';
require_once $base_path_to_learning_resources  . "includes/connect.php"; // use require for mandatory files
require_once $base_path_to_learning_resources . 'lib/function.php';
require_once $base_path_to_learning_resources . 'lib/validate_api_signature.php';
//valdation file
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';
//db access function
require_once $base_path_to_learning_resources . 'includes/specific_db_config.php';
//aws image store
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 . 'external_requests/finware_curl/student_receipts/curl_get_finware_student_specific_receipt.php';
require_once $base_path_to_learning_resources . 'external_requests/finware_curl/groups_ledgers/curl_function_branch_students.php';
$postdata = json_decode(file_get_contents("php://input"), true);
// print_r($postdata);die();
checkIfNoPhpContentsReceive();

if (
    //   !isset($postdata['institution_id']) or !checkIfIssetAndNotEmpty($postdata['institution_id']) or 
    //   !isset($postdata['branch_id']) or !checkIfIssetAndNotEmpty($postdata['branch_id']) or 
      !isset($postdata['api_signature']) or !checkIfIssetAndNotEmpty($postdata['api_signature']) or 
      !isset($postdata['function_type']) or !checkIfIssetAndNotEmpty($postdata['function_type'])  or 
      !isset($postdata['transaction_id']) or !checkIfIssetAndNotEmpty($postdata['transaction_id'])  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);
//then workspace_id is iin decodede data of jwt use from there
$userid = $jwt_validate->data->id;
$workspace_id = $jwt_validate->data->workspace_id;
$username = $jwt_validate->data->username;
$role = $jwt_validate->data->role;
$institution_id = $jwt_validate->data->institution_id;
$branch_id = $jwt_validate->data->branch_id;
$class_id = $jwt_validate->data->class;
$section_id = $jwt_validate->data->section;

// Validate user access
$specific_db_name = validateStudentAcess($conn_rjllearning, $role, $workspace_id, ["student"], null, null, $userid);
if (!$specific_db_name) {
    errorreturn('Access denied.');
} else {
    $conn_rjllearning_specific = dynamicDbConnection($specific_db_name);
}
validateStudentClassSection($conn_rjllearning_specific, $userid, $institution_id, $branch_id, $class_id, $section_id);
require_once $base_path_to_learning . 'functions/get_branch_functions.php';

if ($postdata['function_type'] == "student_fetch_specific_receipts") {
    
    // $branch_id = $postdata['branch_id']; 
    // $institution_id =  $postdata['institution_id'];
    $transaction_id = $postdata['transaction_id'];
    
    $check_academic_confirmation = CheckAcademicSession($conn_rjllearning_specific, $institution_id);
    if ($check_academic_confirmation != true) {
        errorreturn("Access denied. Academic session not active.");
    }
    
    $getstudentsql = "Select id from students where institution_id= ? and branch_id = ? and user_id = ?";
    $stmtStuddent = $conn_rjllearning_specific->prepare($getstudentsql);
    $stmtStuddent->execute(array($institution_id, $branch_id, $userid));
    $result = $stmtStuddent->fetchAll();
    if(count($result) != 1){
        errorreturn("student not found");
    }
    $student_id = $result[0]['id'];
    
    $mindate = date('Y-m-d'); //today date
    $academic_data = compareDatesAcademicSession($conn_rjllearning_specific, $institution_id, $mindate, $maxdate = null, $must_be_active_academic = false);
    $export_type = (isset($postdata['export_type']) and !empty($postdata['export_type'])) ? ($postdata['export_type']) : null;

    $data = array("learning_branch_id"=>$branch_id,'student'=>$student_id,'transaction_id'=>$transaction_id);
    $branch = getBranchDetails($conn_rjllearning_specific, $branch_id, $institution_id);
    if(!empty($branch)){

        // Create final array containing branch info, groups, and student data
        $finalArray = array('workspace_id' => $workspace_id, 'branch' =>  $branch, 'student_data' => $data);
        
        $success = curlGetStudentSpecificReceipt($finalArray);
        if($export_type == null){
            successreturn($success);
        }else if($export_type == 'print'){
            require_once $base_path_to_learning . 'students_api/modules/student_receipts/export/print/export_student_transaction_receipt.php';
        }
    }
}
