<?php

namespace App\Models;

use App\Helpers\IpDetector;
use Illuminate\Database\Eloquent\Model;

class AnalyticsEvent extends Model
{
    protected $fillable = [
        'name',
        'user_id',
        'data',
        'ip',
        'country',
        'platform',
        'app_version',
        'app_screen'
    ];

    protected $casts = ['data' => 'object'];

    protected static function boot()
    {
        parent::boot();

        self::saving(function ($event) {
            $event->ip = request()->ip();
            $event->country = IpDetector::getCountryCodeFromClientIp();
            $event->platform = request()->header('platform');
            $event->app_version = request()->header('app-version');
        });
    }

    public static function saveEvent($name, $data, $routeName, $userID = null)
    {
        $event = new self();
        $event->name = $name;
        $event->user_id = $userID;
        $event->data = $data;
        $event->app_screen = $routeName;
        $event->save();
    }
}
