- handle contact PATCH failures by checking model save result and returning HTTP 400 with the model error message - update ContactDetailModel nested updates to enforce active-detail checks and use model update() with explicit failure propagation - extend contact patch assertions and align test-create variants expectations to status=success for POST responses - refresh composer lock metadata/dependency constraints and include generated docs/data/test files updated during normalization - impact: API contract unchanged except clearer 400 error responses on invalid contact detail updates
61 lines
2.0 KiB
PHP
Executable File
61 lines
2.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Controllers\Audit;
|
|
|
|
use App\Controllers\BaseController;
|
|
use App\Services\AuditLogService;
|
|
use App\Traits\ResponseTrait;
|
|
use CodeIgniter\HTTP\ResponseInterface;
|
|
use InvalidArgumentException;
|
|
|
|
class AuditLogController extends BaseController
|
|
{
|
|
use ResponseTrait;
|
|
|
|
private AuditLogService $auditLogService;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->auditLogService = new AuditLogService();
|
|
}
|
|
|
|
public function index(): ResponseInterface
|
|
{
|
|
$filters = [
|
|
'table' => $this->request->getGet('table'),
|
|
'rec_id' => $this->request->getGet('rec_id') ?? $this->request->getGet('recId'),
|
|
'event_id' => $this->request->getGet('event_id') ?? $this->request->getGet('eventId'),
|
|
'activity_id' => $this->request->getGet('activity_id') ?? $this->request->getGet('activityId'),
|
|
'from' => $this->request->getGet('from'),
|
|
'to' => $this->request->getGet('to'),
|
|
'search' => $this->request->getGet('search'),
|
|
'page' => $this->request->getGet('page'),
|
|
'perPage' => $this->request->getGet('perPage') ?? $this->request->getGet('per_page'),
|
|
];
|
|
|
|
try {
|
|
$payload = $this->auditLogService->fetchLogs($filters);
|
|
|
|
return $this->respond([
|
|
'status' => 'success',
|
|
'message' => 'Audit logs retrieved successfully',
|
|
'data' => $payload,
|
|
], 200);
|
|
|
|
} catch (InvalidArgumentException $e) {
|
|
return $this->respond([
|
|
'status' => 'failed',
|
|
'message' => $e->getMessage(),
|
|
'data' => null,
|
|
], 400);
|
|
} catch (\Throwable $e) {
|
|
log_message('error', 'AuditLogController::index error: ' . $e->getMessage());
|
|
return $this->respond([
|
|
'status' => 'failed',
|
|
'message' => 'Unable to retrieve audit logs',
|
|
'data' => null,
|
|
], 500);
|
|
}
|
|
}
|
|
}
|