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

//valdation file
require_once $base_path_to_learning_resources . 'lib/validate_function.php';
require_once $base_path_to_learning . 'user_management/authenticate.php';
//dynemic db
require_once $base_path_to_learning_resources . 'includes/specific_db_config.php';



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


checkIfNoPhpContentsReceive();

if (
    !isset($postdata['institution_id']) || !checkIfIssetAndNotEmpty($postdata['institution_id']) ||
    !isset($postdata['stop_id']) || !checkIfIssetAndNotEmpty($postdata['stop_id']) ||
    !isset($postdata['api_signature']) || !checkIfIssetAndNotEmpty($postdata['api_signature']) ||
    !isset($postdata['function_type']) || !checkIfIssetAndNotEmpty($postdata['function_type']) ||
    !isset($postdata['jwt_token']) || !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;

$institution_id = $postdata['institution_id'];
$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);
}

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


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

if ($postdata['function_type'] == 'delete_stop') {
    if (empty($postdata['stop_id'])) {
        errorreturn("Stop ID is required for deletion.");
    }

    $stop_id = $postdata['stop_id'];

    $check_stop_sql = "SELECT id FROM bus_stops WHERE id = ? AND institution_id = ?";
    $stmt = $conn_rjllearning_specific->prepare($check_stop_sql);
    $stmt->execute([$stop_id, $institution_id]);

    $existing_stop = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$existing_stop) {
        errorreturn("Stop ID does not exist.");
    }

    $check_routes_sql = "SELECT id FROM routes WHERE institution_id = ? AND academic_id = ? AND (stops_name LIKE ? OR 
    stops_name LIKE ? OR stops_name LIKE ? OR stops_name = ?)";

    $like_pattern_start = '[' . $stop_id . ',%';      
    $like_pattern_middle = '%,' . $stop_id . ',%';    
    $like_pattern_end = '%,' . $stop_id . ']';        
    $exact_pattern = '[' . $stop_id . ']';     

    $stmt = $conn_rjllearning_specific->prepare($check_routes_sql);
    $stmt->execute([
        $institution_id,
        $academic_id,
        $like_pattern_start,
        $like_pattern_middle,
        $like_pattern_end,
        $exact_pattern
    ]);

    $associated_routes = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if (!empty($associated_routes)) {
        errorreturn("Cannot delete stop. It is currently being used in one or more routes.");
    }

    $delete_stop_sql = "DELETE FROM bus_stops WHERE id = ? AND institution_id = ?";
    $stmt = $conn_rjllearning_specific->prepare($delete_stop_sql);
    $stmt->execute([$stop_id, $institution_id]);

    successreturn(['successmsg' => "Successfully deleted stop."]);
}
