@extends('admin.reportes.pdf.base') @section('title', 'Reporte de Reservas') @section('content')
Período: {{ date('d/m/Y', strtotime($fechaInicio)) }} - {{ date('d/m/Y', strtotime($fechaFin)) }}
@if($estado)
Estado: {{ ucfirst($estado) }}
@endif @if($canchaId)
Cancha Específica: {{ $reservas->first()->cancha->nombre ?? 'N/A' }}
@endif

{{ $totalReservas }}

Total Reservas

{{ $reservasConfirmadas }}

Confirmadas

{{ $reservas->count() }}

En este Reporte

Detalle de Reservas

@forelse($reservas as $reserva) @empty @endforelse @if($reservas->count() > 0) @endif
Fecha Hora Cancha Cliente Estado Precio
{{ date('d/m/Y', strtotime($reserva->fecha)) }} {{ date('H:i', strtotime($reserva->hora_inicio)) }} - {{ date('H:i', strtotime($reserva->hora_fin)) }} {{ $reserva->cancha->nombre }} {{ $reserva->usuario->name }} @if($reserva->estado == 'confirmada') Confirmada @elseif($reserva->estado == 'pendiente') Pendiente @elseif($reserva->estado == 'cancelada') Cancelada @else {{ ucfirst($reserva->estado) }} @endif ${{ number_format($reserva->precio_total, 2) }}
No se encontraron reservas para el período seleccionado
TOTAL INGRESOS ${{ number_format($reservas->sum('precio_total'), 2) }}
@if($reservas->count() > 0)

Estadísticas por Estado

@php $estadosReservas = $reservas->groupBy('estado'); $totalReservasReporte = $reservas->count(); @endphp @foreach($estadosReservas as $estado => $reservasEstado) @endforeach
Estado Cantidad Porcentaje Ingresos
@if($estado == 'confirmada') Confirmada @elseif($estado == 'pendiente') Pendiente @elseif($estado == 'cancelada') Cancelada @else {{ ucfirst($estado) }} @endif {{ $reservasEstado->count() }} {{ number_format(($reservasEstado->count() / $totalReservasReporte) * 100, 1) }}% ${{ number_format($reservasEstado->sum('precio_total'), 2) }}

Reservas por Cancha

@php $reservasPorCancha = $reservas->groupBy('cancha.nombre'); @endphp @foreach($reservasPorCancha as $nombreCancha => $reservasCancha) @php $cancha = $reservasCancha->first()->cancha; $totalIngresos = $reservasCancha->sum('precio_total'); $cantidadReservas = $reservasCancha->count(); @endphp @endforeach
Cancha Categoría Reservas Ingresos Promedio por Reserva
{{ $nombreCancha }} {{ $cancha->categoria->nombre }} {{ $cantidadReservas }} ${{ number_format($totalIngresos, 2) }} ${{ number_format($totalIngresos / $cantidadReservas, 2) }}

Análisis Temporal

@php $reservasPorDia = $reservas->groupBy(function($reserva) { return date('Y-m-d', strtotime($reserva->fecha)); }); $diaConMasReservas = $reservasPorDia->sortByDesc(function($reservas) { return $reservas->count(); })->first(); $fechaDiaConMasReservas = $reservasPorDia->search($diaConMasReservas); $promedioReservasPorDia = $reservasPorDia->count() > 0 ? $reservas->count() / $reservasPorDia->count() : 0; $promedioIngresosPorDia = $reservasPorDia->count() > 0 ? $reservas->sum('precio_total') / $reservasPorDia->count() : 0; @endphp
Día con más reservas: {{ date('d/m/Y', strtotime($fechaDiaConMasReservas)) }} ({{ $diaConMasReservas->count() }} reservas)
Promedio de reservas por día: {{ number_format($promedioReservasPorDia, 1) }}
Promedio de ingresos por día: ${{ number_format($promedioIngresosPorDia, 2) }}
Días con actividad: {{ $reservasPorDia->count() }} de {{ \Carbon\Carbon::parse($fechaInicio)->diffInDays(\Carbon\Carbon::parse($fechaFin)) + 1 }} días
@endif @endsection