@extends('templates.adminlte') @section('content-header')

Dashboard

@endsection @section('main-content')
Dashboard operativo {{ $rangeLabel }}

Panel de control con rango filtrado

Todas las métricas comerciales y operativas del dashboard están calculadas con eventos entre {{ $rangeLabel }}. La comparación de tendencia usa el rango anterior equivalente: {{ $comparisonRangeLabel }}.

Eventos filtrados

{{ $eventsInRangeCount }}

Pendientes en rango

{{ $futureEventsInRangeCount }}

Comparativo

{{ $comparisonRangeLabel }}

Rango de fechas

Filtrar dashboard

date_range
restart_alt Restablecer

Rendimiento comercial

Ingreso contratado agrupado por {{ $chartGranularityLabel }} dentro de {{ $rangeLabel }}.

Ingresos {{ $comparisonRangeLabel }}

Eventos por categoría

Distribución de eventos dentro del rango seleccionado.

Cobertura de empleados

Eventos cubiertos por colaborador dentro de {{ $rangeLabel }}.

groups Ver plantilla
@if (count($employeeCoverageRows) > 0) @php $coverageLeaders = collect($employeeCoverageRows)->take(3)->values(); @endphp
@foreach ($coverageLeaders as $leaderIndex => $leader) @php $position = $leaderIndex + 1; $toneClasses = match ($position) { 1 => 'border-secondary/40 bg-secondary/10', 2 => 'border-accent/40 bg-accent/10', default => 'border-warning/40 bg-warning/10', }; $badgeClasses = match ($position) { 1 => 'bg-secondary text-on-secondary', 2 => 'bg-accent text-on-accent', default => 'bg-warning text-on-warning', }; @endphp

{{ $position === 1 ? 'Lider de cobertura' : 'Top ' . $position }}

{{ $leader['name'] }}

{{ $leader['experienceLevel'] }}

#{{ $position }}

Eventos cubiertos

{{ $leader['eventCount'] }}

{{ $leader['referenceLabel'] }}

@endforeach
@foreach ($employeeCoverageRows as $employeeCoverage) @endforeach
Empleado Eventos Pendientes Finalizados Referencia
{{ \Illuminate\Support\Str::of($employeeCoverage['name'])->trim()->substr(0, 2) }}

{{ $employeeCoverage['name'] }}

{{ $employeeCoverage['experienceLevel'] }}

{{ $employeeCoverage['eventCount'] }} {{ $employeeCoverage['upcomingCount'] }} {{ $employeeCoverage['completedCount'] }} {{ $employeeCoverage['referenceLabel'] }}
@else
groups

Sin cobertura registrada en el rango

Los eventos encontrados en este periodo todavía no tienen empleados asignados o no hubo eventos dentro del filtro aplicado.

@endif

Resumen operativo

Cobertura humana dentro del rango activo.

supervisor_account

Colaboradores programados

{{ $coveredEmployeesCount }}

Empleados con al menos un evento dentro del rango.

Coberturas asignadas

{{ $employeeCoverageAssignments }}

Suma total de asignaciones empleado-evento.

Promedio por empleado

{{ $averageCoveragePerEmployee }}

Eventos cubiertos en promedio por colaborador.

Eventos sin equipo humano

{{ $eventsWithoutEmployeesCount }}

{{ $eventsWithoutEmployeesCount > 0 ? 'Todavia requieren asignacion de personal dentro del rango.' : 'Todos los eventos del rango ya tienen personal asignado.' }}

Eventos pendientes del rango

Primeros 5 eventos pendientes dentro del filtro actual.

Bajo stock proyectado

Considera apartados activos dentro del rango.

Ver todo
@forelse ($lowStockItems as $item) @empty

Sin alertas para el rango

No hay productos comprometidos por debajo del mínimo en este periodo.

@endforelse
inventory

Resumen del rango

@if ($lowStockCount > 0) {{ $criticalLowStockCount }} críticos y {{ $lowStockCount - $criticalLowStockCount }} en seguimiento por debajo del mínimo. @else Inventario estable para el rango filtrado. @endif

Generar orden
@endsection