. */ namespace SP\Domain\Security\Services; use SP\Core\Application; use SP\Domain\Common\Services\Service; use SP\Domain\Core\Dtos\ItemSearchDto; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Domain\Core\Exceptions\SPException; use SP\Domain\Http\RequestInterface; use SP\Domain\Security\Models\Eventlog as EventlogModel; use SP\Domain\Security\Ports\EventlogRepository; use SP\Domain\Security\Ports\EventlogService; use SP\Infrastructure\Database\QueryResult; /** * Class Eventlog */ final class Eventlog extends Service implements EventlogService { public function __construct( Application $application, private readonly EventlogRepository $eventLogRepository, private readonly RequestInterface $request ) { parent::__construct($application); } /** * @throws ConstraintException * @throws QueryException */ public function search(ItemSearchDto $itemSearchData): QueryResult { return $this->eventLogRepository->search($itemSearchData); } /** * @throws ConstraintException * @throws QueryException * @throws SPException */ public function clear(): bool { return $this->eventLogRepository->clear(); } /** * @throws ConstraintException * @throws QueryException */ public function create(EventlogModel $eventlog): int { $userData = $this->context->getUserData(); $data = [ 'userId' => $userData->getId(), 'login' => $userData->getLogin() ?: '-', 'ipAddress' => $this->request->getClientAddress() ]; return $this->eventLogRepository->create($eventlog->mutate($data))->getLastId(); } }