<?php

namespace App\Http\Controllers;

use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Services\AnalyticsEventService;
use Illuminate\Support\Facades\DB;

class AnalyticsEventController extends Controller
{
    protected $eventService;

    public function __construct(AnalyticsEventService $eventService)
    {
        $this->eventService = $eventService;
    }

    public function storeEvent(request $request)
    {
        // Log the event
        DB::table('logs')->insert([
            'data' => json_encode($request->all()),
            'server' => json_encode($request->server()),
            'headers' => json_encode($request->header()),
            'created_at' => Carbon::now(),
            'updated_at' => Carbon::now()
        ]);
        $this->validate($request, [
            'application_id' => 'required',
            'event_name' => 'required',
            'user_id' => 'sometimes',
            'event_data' => 'nullable',
            'event_data.is_organic' => 'sometimes|boolean',
            'route_name' => 'sometimes',
            'event_url' => 'sometimes',
            'referrer' => 'sometimes',
        ]);
        $event = $this->eventService->add($request);
        return response()->json();
    }
}
