SearchLogService.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace Webkul\Marketing\Services;
  3. use Illuminate\Http\Request;
  4. use Webkul\Marketing\Contracts\SearchLog;
  5. use Webkul\Marketing\Repositories\SearchLogRepository;
  6. class SearchLogService
  7. {
  8. public function __construct(
  9. protected SearchLogRepository $searchLogRepository
  10. ) {}
  11. public function recordWhenSuggested(
  12. mixed $suggest,
  13. string $searchText,
  14. string $queryText,
  15. int $results,
  16. ?Request $request = null
  17. ): ?SearchLog {
  18. if (
  19. ! filter_var($suggest, FILTER_VALIDATE_BOOLEAN)
  20. || trim($searchText) === ''
  21. ) {
  22. return null;
  23. }
  24. return $this->record($searchText, $queryText, $results, $request);
  25. }
  26. public function record(
  27. string $searchText,
  28. string $queryText,
  29. int $results,
  30. ?Request $request = null
  31. ): SearchLog {
  32. $request ??= request();
  33. return $this->searchLogRepository->create([
  34. 'search_text' => mb_substr(trim($searchText), 0, 512),
  35. 'query_text' => mb_substr(trim($queryText), 0, 512),
  36. 'results' => max(0, $results),
  37. 'ip_address' => $request->ip(),
  38. ]);
  39. }
  40. }