51 lines
1.4 KiB
PHP
51 lines
1.4 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Modules\Risks;
|
|
|
|
use App\Core\{Database, Request, Response};
|
|
|
|
final class RiskController
|
|
{
|
|
public function index(Request $request): void
|
|
{
|
|
$db = Database::getInstance();
|
|
$stmt = $db->prepare(
|
|
"SELECT r.*, c.name AS company_name, i.invoice_number
|
|
FROM risk_scores r
|
|
LEFT JOIN companies c ON c.id = r.company_id
|
|
LEFT JOIN invoices i ON i.id = r.invoice_id
|
|
WHERE r.tenant_id = ? AND r.is_resolved = 0
|
|
ORDER BY r.score ASC, r.created_at DESC"
|
|
);
|
|
$stmt->execute([$request->tenantId]);
|
|
|
|
Response::json([
|
|
'success' => true,
|
|
'data' => $stmt->fetchAll(),
|
|
]);
|
|
}
|
|
|
|
public function resolve(Request $request, string $id): void
|
|
{
|
|
$db = Database::getInstance();
|
|
$resolvedBy = $request->user->user_id ?? null;
|
|
$stmt = $db->prepare(
|
|
"UPDATE risk_scores
|
|
SET is_resolved = 1, resolved_by = ?, resolved_at = NOW()
|
|
WHERE id = ? AND tenant_id = ?"
|
|
);
|
|
$stmt->execute([$resolvedBy, $id, $request->tenantId]);
|
|
|
|
if ($stmt->rowCount() === 0) {
|
|
Response::error('تنبيه المخاطر غير موجود', 'NOT_FOUND', 404);
|
|
return;
|
|
}
|
|
|
|
Response::json([
|
|
'success' => true,
|
|
'message' => 'تم حل التنبيه بنجاح',
|
|
]);
|
|
}
|
|
}
|