<?php
require_once "/home/mysamm/price_checker/lib/connections.php";

if (isset($_SESSION['user_type']) && $_SESSION['user_type'] !== 'superadmin') {
    header("Location: login.php");
    exit();
}


$db = new Connection();

// Get parameters from DataTables request
$start  = isset($_GET['start']) ? $_GET['start'] : 0;
$length = isset($_GET['length']) ? $_GET['length'] : 10;
$searchValue = isset($_GET['search']['value']) ? $_GET['search']['value'] : '';
$orderColumnIndex = isset($_GET['order'][0]['column']) ? $_GET['order'][0]['column'] : 0;
$orderDir = isset($_GET['order'][0]['dir']) ? $_GET['order'][0]['dir'] : 'desc';


// Define columns mapping for ordering
$columns = ['id', 'user_name', 'admin_name', 'last_login', 'ip_address', 'last_page'];
$orderColumn = isset($columns[$orderColumnIndex]) ? $columns[$orderColumnIndex] : 'id';


// Base query
$query = "SELECT * FROM users_log WHERE 1";
//$query = "SELECT * FROM users_log WHERE last_login >= DATE_SUB(NOW(), INTERVAL 1 MONTH)";

// Apply search filter
if (!empty($searchValue)) {
    $query .= " AND (user_name LIKE '%$searchValue%' 
                OR admin_name LIKE '%$searchValue%' 
                OR last_login LIKE '%$searchValue%' 
                OR ip_address LIKE '%$searchValue%' 
                OR last_page LIKE '%$searchValue%')";
}


// Get total records without filtering
$totalRecordsQuery = $db->Query("SELECT COUNT(*) as total FROM users_log ");

$totalRecords = $totalRecordsQuery[0]['total'];

// Get filtered records count
$filteredQuery = $db->Query("SELECT COUNT(*) as total FROM ($query) as filtered");
$filteredRecords = $filteredQuery[0]['total'];

// Apply ordering and pagination
$query .= " ORDER BY $orderColumn $orderDir LIMIT $start, $length";
$users = $db->Query($query);

// Prepare response
$data = [];
foreach ($users as $row) {
    $data[] = [
        "id" => $row['id'],
        "user_name" => htmlspecialchars(ucfirst($row['user_name'])),
        "admin_name" => htmlspecialchars($row['admin_name']),
        "last_login" => date("F j, Y, g:i a", strtotime($row['last_login'])),
        "ip_address" => $row['ip_address'],
        "last_page" => htmlspecialchars($row['last_page'])
    ];
}

echo json_encode([
    "draw" => isset($_GET['draw']) ? intval($_GET['draw']) : 1,
    "recordsTotal" => $totalRecords,
    "recordsFiltered" => $filteredRecords,
    "data" => $data
]);
?>