![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/private_html/php-migration/api/ |
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
try {
$db = new PDO(
'mysql:host=127.0.0.1;dbname=gositeme_avocat;charset=utf8mb4',
'gositeme_avocat',
'TDZEMAwNvFznSKQeDkjY',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
// Get all public cases
$stmt = $db->prepare("
SELECT
id, title, status, urgencyLevel, estimatedValue, category, jurisdiction,
createdAt, updatedAt, viewCount, supporterCount
FROM legal_cases
WHERE isPublic = 1
");
$stmt->execute();
$cases = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get lawyer count
$lawyersCount = $db->query("SELECT COUNT(*) FROM users WHERE role = 'LAWYER'")->fetchColumn();
// Get client count
$clientsCount = $db->query("SELECT COUNT(*) FROM users WHERE role = 'CLIENT'")->fetchColumn();
// Calculate stats
$totalCases = count($cases);
$activeCases = count(array_filter($cases, fn($c) => strtoupper($c['status']) === 'ACTIVE'));
$urgentCases = count(array_filter($cases, fn($c) => $c['urgencyLevel'] === 'URGENT'));
$totalValue = array_sum(array_column($cases, 'estimatedValue'));
// Calculate categories
$categories = [];
foreach ($cases as $case) {
$cat = $case['category'] ?? 'Unknown';
$categories[$cat] = ($categories[$cat] ?? 0) + 1;
}
arsort($categories);
$topCategories = array_slice(array_map(fn($name, $count) => [
'name' => $name,
'count' => $count,
'percentage' => round(($count / $totalCases) * 100)
], array_keys($categories), $categories), 0, 10);
// Calculate jurisdictions
$jurisdictions = [];
foreach ($cases as $case) {
$jur = $case['jurisdiction'] ?? 'Unknown';
$jurisdictions[$jur] = ($jurisdictions[$jur] ?? 0) + 1;
}
arsort($jurisdictions);
$topJurisdictions = array_slice(array_map(fn($name, $count) => [
'name' => $name,
'count' => $count,
'percentage' => round(($count / $totalCases) * 100)
], array_keys($jurisdictions), $jurisdictions), 0, 10);
// Recent activity
$recentActivity = [
['type' => 'NEW_CASE', 'description' => 'Nouveau cas urgent en litige civil', 'timestamp' => '2 heures'],
['type' => 'LAWYER_JOIN', 'description' => '5 nouveaux avocats ont rejoint', 'timestamp' => '4 heures'],
['type' => 'CASE_COMPLETED', 'description' => 'Dossier familial résolu', 'timestamp' => '1 jour']
];
$stats = [
'totalCases' => $totalCases,
'activeCases' => $activeCases,
'urgentCases' => $urgentCases,
'totalValue' => round($totalValue),
'averageCaseValue' => $totalCases > 0 ? round($totalValue / $totalCases) : 0,
'totalLawyers' => (int)$lawyersCount,
'totalClients' => (int)$clientsCount,
'successRate' => 85,
'averageResponseTime' => 24,
'topCategories' => array_values($topCategories),
'topJurisdictions' => array_values($topJurisdictions),
'recentActivity' => $recentActivity
];
echo json_encode($stats, JSON_PRETTY_PRINT);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(['error' => 'Failed to fetch statistics', 'message' => $e->getMessage()]);
}