@php $cumpleHoy = $usuariosConCumple->filter(fn($u) => $u['cumpleHoy'])->values(); @endphp @if ($cumpleHoy->isNotEmpty())
@endif
@foreach ($eventos as $index => $evento) @endforeach

Sesiones Recientes

@foreach ($sesionesUsuario as $sesion) @php $esActual = $sesion->session_id === $currentSessionId; $estaActiva = $sesion->isActive(); @endphp
{{-- Ícono minimalista --}}
{{-- Información --}}
{{-- Columna izquierda --}}
{{-- Estado --}}

@if ($esActual) Sesión actual @elseif($estaActiva) Sesión activa @else Sesión cerrada @endif

{{-- Inicio --}}

Inicio: {{ $sesion->login_at->diffForHumans() }}

{{-- Duración o cierre --}} @if ($estaActiva)

Duración: {{ $sesion->login_at->diffForHumans(null, true) }}

@else

Cerrada: {{ $sesion->logout_at->diffForHumans() }}

@if ($sesion->duration) @php $duracion = $sesion->duration; if ($duracion >= 1440) { $dias = floor($duracion / 1440); $horas = floor(($duracion % 1440) / 60); $duracionTexto = $dias . ($dias == 1 ? ' día' : ' días'); if ($horas > 0) { $duracionTexto .= ' y ' . $horas . ($horas == 1 ? ' hora' : ' horas'); } } elseif ($duracion >= 60) { $horas = floor($duracion / 60); $minutos = $duracion % 60; $duracionTexto = $horas . ($horas == 1 ? ' hora' : ' horas'); if ($minutos > 0) { $duracionTexto .= ' y ' . $minutos . ($minutos == 1 ? ' minuto' : ' minutos'); } } else { $duracionTexto = $duracion . ($duracion == 1 ? ' minuto' : ' minutos'); } @endphp

Duración: {{ $duracionTexto }}

@endif @endif {{-- Ubicación --}}

Ubicación: {{ $sesion->city ?? 'Ciudad desconocida' }}, {{ $sesion->country ?? 'País desconocido' }}

{{-- Badge --}}

{{ $estaActiva ? 'Activa' : 'Cerrada' }} @if ($esActual) Actual @endif

{{-- Columna derecha --}}
{{-- IP --}}

IP: {{ $sesion->ip_address ?? 'Desconocida' }}

{{-- Dispositivo --}}

Dispositivo: {{ $sesion->device_type ?? 'N/A' }}

{{-- SO --}}

SO: {{ $sesion->os ?? 'Desconocido' }}

{{-- Navegador --}}

Navegador: {{ $sesion->browser ?? 'Desconocido' }}

{{-- Path --}}

Login desde: {{ Str::limit($sesion->login_path ?? 'Desconocido', 20) }}

{{-- Alerta de sospechosa --}} @if ($sesion->is_suspicious)

Sospechosa

@endif
@endforeach @if ($sesionesUsuario->isEmpty())

No se encontraron sesiones recientes.

@endif

Próximos Eventos

@forelse($eventos->take(3) as $evento)

{{ $evento->title }}

{{ $evento->date->format('d/m/Y') }}, {{ $evento->time->format('H:i') }}

@empty

No hay eventos próximos

@endforelse
@php $formattedEvents = $eventos->map(function ($evento) { return [ 'id' => $evento->id, 'title' => $evento->title, 'description' => $evento->description, 'formatted_date' => $evento->date->format('d/m/Y'), 'formatted_time' => $evento->time->format('H:i'), 'location' => $evento->location ?? 'No especificada', 'participants' => $evento->users()->wherePivot('confirmed', 1)->count(), 'agenda' => $evento->agenda ?? [], ]; }); @endphp @php $usuarioLogueadoId = Auth::id(); $cumpleHoyJson = $cumpleHoy ->map(function ($u) { return [ 'id' => $u['id'], 'nombre' => $u['nombre'], 'apellido' => $u['apellido'], ]; }) ->all(); @endphp