. */ namespace SP\Domain\Security\Services; use SP\Core\Application; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\Core\Exceptions\SPException; use SP\DataModel\EventlogData; use SP\DataModel\ItemSearchData; use SP\Domain\Common\Services\Service; use SP\Domain\Security\EventlogServiceInterface; use SP\Domain\Security\In\EventlogRepositoryInterface; use SP\Http\RequestInterface; use SP\Infrastructure\Database\QueryResult; use SP\Infrastructure\Security\Repositories\EventlogRepository; /** * Class EventlogService * * @package SP\Domain\Common\Services\EventLog */ final class EventlogService extends Service implements EventlogServiceInterface { protected EventlogRepository $eventLogRepository; protected RequestInterface $request; public function __construct( Application $application, EventlogRepositoryInterface $eventLogRepository, RequestInterface $request ) { parent::__construct($application); $this->eventLogRepository = $eventLogRepository; $this->request = $request; } /** * @throws ConstraintException * @throws QueryException */ public function search(ItemSearchData $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(EventlogData $eventlogData): int { $userData = $this->context->getUserData(); $eventlogData->setUserId($userData->getId()); $eventlogData->setLogin($userData->getLogin() ?: '-'); $eventlogData->setIpAddress($this->request->getClientAddress()); return $this->eventLogRepository->create($eventlogData); } }