38 lines
933 B
PHP
38 lines
933 B
PHP
<?php
|
|||
|
|
|
||
|
|
namespace App\Http\Controllers\Concerns;
|
||
|
|
|
||
|
|
use App\Models\Segment;
|
||
|
|
use App\Models\Website;
|
||
|
|
use App\Services\AnalyticsQueryService;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Collection;
|
||
|
|
|
||
|
|
trait ParsesSegment
|
||
|
|
{
|
||
|
|
private function applySegment(Request $request, Website $website, AnalyticsQueryService $service): AnalyticsQueryService
|
||
|
|
{
|
||
|
|
$segmentId = $request->get('segment');
|
||
|
|
if (! $segmentId) {
|
||
|
|
return $service;
|
||
|
|
}
|
||
|
|
|
||
|
|
$segment = $website->segments()->find($segmentId);
|
||
|
|
if (! $segment) {
|
||
|
|
return $service;
|
||
|
|
}
|
||
|
|
|
||
|
|
return $service->withSegment($segment->matchingVisitorIds());
|
||
|
|
}
|
||
|
|
|
||
|
|
private function activeSegment(Request $request, Website $website): ?Segment
|
||
|
|
{
|
||
|
|
$segmentId = $request->get('segment');
|
||
|
|
if (! $segmentId) {
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
return $website->segments()->find($segmentId);
|
||
|
|
}
|
||
|
|
}
|