<?php

namespace App\Helpers\Environment;

use Illuminate\Http\Request;

class DeviceManagementHelper
{
    /**
     * Valida si la solicitud recibida fue realizada desde algún dispositivo móvil (Teléfonos o Tabletas).
     *
     * @return bool ¿Fue solicitado desde un dispositivo móvil o tablet?
    */
    public static function isMobile(Request $request) : bool
    {
        $user_agent = $request->header('User-Agent');

        // Teléfonos (iPhone, Android Mobile, etc.)
            $is_mobile = preg_match(
                '/(iPhone|iPod|Android.*Mobile|Windows Phone|BlackBerry|Opera Mini|Mobile)/i',
                $user_agent
            );

        // iPad clásico (User-Agent contiene "iPad")
            $ua_has_ipad = preg_match('/iPad/i', $user_agent);

        // iPadOS moderno (Safari iPadOS se finge "Macintosh", pero incluye "Mobile/<version>")
            $ua_ipados_modern = (
                preg_match('/Macintosh; Intel Mac OS X/i', $user_agent)
                // && preg_match('/Mobile\/\w+/i', $user_agent)
            );

            $is_ipad = ($ua_has_ipad || $ua_ipados_modern);

        // Tablets Android: contienen "Android" pero sin "Mobile"
            $is_android_tablet = preg_match('/Android(?!.*Mobile)/i', $user_agent);

        // Otras tablets conocidas
            $is_other_tablet = preg_match(
                '/(Tablet|iPadOS|Kindle|Silk|PlayBook|Nexus 7|Nexus 10|SM-T|Lenovo Tab|Huawei MediaPad)/i',
                $user_agent
            );

            $is_tablet = $is_ipad || $is_android_tablet || $is_other_tablet;

        $is_mobile_device = ($is_mobile || $is_tablet);
        return $is_mobile_device;
    }

}
