26 lines
1.1 KiB
PHP
26 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\Analytics\Http\Controllers;
|
|
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Illuminate\Validation\Rule;
|
|
use Modules\Analytics\Services\AnalyticsTracker;
|
|
|
|
final class TrackingController extends Controller
|
|
{
|
|
public function store(Request $request, AnalyticsTracker $tracker): JsonResponse
|
|
{
|
|
$data = $request->validate([
|
|
'event_type' => ['required', Rule::in(['page_view', 'search', 'conversion', 'content_view', 'form_submit', 'commerce'])],
|
|
'path' => ['nullable', 'string', 'max:2048'], 'title' => ['nullable', 'string', 'max:255'], 'referrer' => ['nullable', 'string', 'max:2048'],
|
|
'visitor_id' => ['nullable', 'string', 'max:255'], 'session_id' => ['nullable', 'string', 'max:255'],
|
|
'subject_type' => ['nullable', 'string', 'max:255'], 'subject_id' => ['nullable', 'integer'], 'properties' => ['nullable', 'array'],
|
|
]);
|
|
$event = $tracker->track($request, $data);
|
|
|
|
return response()->json(['recorded' => (bool) $event], $event ? 201 : 202);
|
|
}
|
|
}
|