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

// Validation 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 . 'lib/common_modules/assignment/functions.php';

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

$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['student_id']) or !checkIfIssetAndNotEmpty($postdata['student_id']) or
    !isset($postdata['api_signature']) or !checkIfIssetAndNotEmpty($postdata['api_signature']) or
    !isset($postdata['function_type']) or !checkIfIssetAndNotEmpty($postdata['function_type'])  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;

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

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

    $institution_id = trim($postdata['institution_id']);
    $branch_id = trim($postdata['branch_id']);
    $student_id = trim($postdata['student_id']);
    
    $query = "SELECT user_id FROM students WHERE institution_id = ? AND id = ?";
    $stmt = $conn_rjllearning_specific->prepare($query);
    $stmt->execute([$institution_id, $student_id]);
    
    $student = $stmt->fetch(PDO::FETCH_ASSOC);
    $user_id = $student ? $student['user_id'] : null;

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

    $from_date = isset($postdata['from_date']) && !empty($postdata['from_date']) ? trim($postdata['from_date']) : date('Y-m-d');
    $to_date = isset($postdata['to_date']) && !empty($postdata['to_date']) ? trim($postdata['to_date']) : date('Y-m-d');

    if (!empty($from_date) && !empty($to_date) && ($from_date > $to_date)) {
        errorreturn('Invalid Date format');
    }
    
    $limit = $postdata['limit'];
    $page = (isset($postdata['page']) and isNumeric($postdata['page'])) ? (int)$postdata['page'] : 1;

    if ($limit != 'all') {
        $offset = ($page - 1) * $limit;
        $success['assignments_data'] = getStudents_assignment_status($conn_rjllearning_specific, $institution_id, $branch_id, $from_date,
        $to_date, $check_academic_confirmation_id, $student_id, $limit, $offset);
        successreturn($success);
    } else {
        $success['assignments_data'] = getStudents_assignment_status($conn_rjllearning_specific, $institution_id, $branch_id, $from_date,
        $to_date, $check_academic_confirmation_id, $student_id, $limit, null);
        successreturn($success);
    }
    
    // $success['assignments_data'] = getStudents_assignment_status($conn_rjllearning_specific, $institution_id, $branch_id, $from_date,
    // $to_date, $check_academic_confirmation_id, $student_id);
    // // $success['assignments_data'] =  getStudents_assignment_status($student_id, $from_date, $to_date, $institution_id, $branch_id, 
    // // $check_academic_confirmation_id, $conn_rjllearning_specific);
    // successreturn($success);
}
