<?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_resources . 'includes/specific_db_config.php';
require_once $base_path_to_learning . 'functions/common_functions.php';
require_once $base_path_to_learning . 'functions/get_branch_functions.php';
require_once $base_path_to_learning .'admin_api/modules/daywise_attendance/datewise_functions.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['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);
}

function getStaffDateSpecificAttendance($conn_rjllearning_specific, $institution_id, $branch_id,$date) {
    try {
        // Build the SQL query
        $sql = "SELECT s.id, s.name,  s.email, d.value
                FROM staff_details s
                LEFT JOIN staff_attendance_daywise d ON s.id = d.user_id  WHERE d.date = ? AND s.institution_id = ? AND s.branch_id = ?";
        
        // Prepare the statement
        $stmt = $conn_rjllearning_specific->prepare($sql);
        
        // Bind parameters and execute the query
        $stmt->execute([$date, $institution_id, $branch_id]);
        
        // Fetch the results
        $result = $stmt->fetchAll();

        // Return the result
        
        $newArray = array();

foreach ($result as $item) {
     
    $newArray[] = array(
        'staff_id' => $item['id'],
        'name' => $item['name'],
        'value' => $item['value']
    );
    }
        return $newArray;
    } catch (PDOException $e) {
        errorreturn("Error executing query: " . $e->getMessage());
    }
}

// Check the function type
if ($postdata['function_type'] == "fetch_staff_datewise_attendance") {
    $date = isset($postdata['date']) ? $postdata['date'] : date('Y-m-d');
    $result = getStaffDateSpecificAttendance($conn_rjllearning_specific, $postdata['institution_id'], $postdata['branch_id'],$date );
  
    if ($result === false) {
        errorreturn("Error fetching specific datewise attendance.");
    } else {
        successreturn(['attendance_info' => $result]);
    }
} else {
    errorreturn("Invalid function type.");
}
?>
