sessionUserDataProvider = $sessionUserDataProvider; $this->visitHistoryEntryFactory = $visitHistoryEntryFactory; $this->visitHistoryEntryRepository = $visitHistoryEntryRepository; $this->dateTime = $dateTime; } public function startVisit(): void { $userData = $this->sessionUserDataProvider->getUserPreparedData(); /** @var $visitHistoryEntryModel VisitHistoryEntryInterface */ $visitHistoryEntryModel = $this->visitHistoryEntryFactory->create(['data' => $userData]); $visitHistoryEntryModel->setSessionStart($this->dateTime->date()); $this->visitHistoryEntryRepository->save($visitHistoryEntryModel); } public function endVisit(string $sessionId = null): void { $sessionId = $sessionId ?: $this->sessionUserDataProvider->getSessionId(); /** @var $visitHistoryEntryModel VisitHistoryEntryInterface */ $visitHistoryEntryModel = $this->visitHistoryEntryRepository->getBySessionId($sessionId); $visitHistoryEntryModel->setSessionEnd($this->dateTime->date()); $this->visitHistoryEntryRepository->save($visitHistoryEntryModel); } public function clear(int $period = null): void { $this->visitHistoryEntryRepository->clean($period); } }