@extends('base')
@section('main')

@php
use Carbon\Carbon;
    $diasmes = date('t', strtotime("$anio-$mes"));
    $array_dias = range(1, $diasmes);
    $array_meses = [
        "01" => "ene", "02" => "feb", "03" => "mar", "04" => "abr", 
        "05" => "may", "06" => "jun", "07" => "jul", "08" => "ago", 
        "09" => "sep", "10" => "oct", "11" => "nov", "12" => "dic"
    ];
@endphp

<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-body">                
                    <form method="get" action="{{ route('informe2') }}" id="informesform">
                        Mes/año 
                        <input type="month" name="mes_anio" value="{{ $mes_anio }}" id="mes_anio">
                        <button class="btn btn-primary" type="submit">Filtrar</button>
                        <button class="btn btn-primary" type="button" onclick="exportar();">Exportar</button>
                    </form>
                    <table class="tablainformes" id="tabla3">
                        <thead>
                            <tr> 
                                <th></th>
                                <th>Cantidad de Salas</th>
                                <th>Cantidad de jugadores</th>
                                <th>Precio</th>
                                <th style="background:#ccc;">Total</th>
                                @foreach($mediosdepago as $medio)
                                    <th style="{{ $medio->suma ? 'background:#ccc;' : '' }}">{{ $medio->nombre }}</th>
                                @endforeach
                            </tr>
                        </thead>
                        <tbody>
                            @php
                                $total_cantidad_sala = 0;
                                $total_cantidadjugadores = 0;
                                $total_cantidadprecio = 0;
                                $total_sumaparcial = 0;
                                $array_suma_medios = [];
                                $senias = [];
                            @endphp
                            @foreach($array_dias as $diames)
                                @php
                                    $dia_formateado = str_pad($diames, 2, '0', STR_PAD_LEFT);
                                    $senia3 = DB::table('mediodepagoreserva')
                                        ->where('fecha', "$mes_anio-$dia_formateado")
                                        ->where('id_medio_pago', 3)
                                        ->sum('valor');
                                    $senia5 = DB::table('mediodepagoreserva')
                                        ->where('fecha', "$mes_anio-$dia_formateado")
                                        ->where('id_medio_pago', 5)
                                        ->sum('valor');
                                    $senias[$dia_formateado][3] = $senia3 ?: 0;
                                    $senias[$dia_formateado][5] = $senia5 ?: 0;
                                    $entro = false;
                                @endphp

                                @foreach($datos as $dato)
                                    @php
                                        $dia = date('d', strtotime($dato->fecha));
                                    @endphp

                                    @if($dia_formateado == $dia && !$entro)
                                        @php
                                            $entro = true;
                                            $cantidadsala = $dato->cantidadprecio ? $dato->sumsalas : 0;
                                            $total_cantidad_sala += $cantidadsala;
                                            $total_cantidadjugadores += $dato->cantidadjugadores;
                                            $total_cantidadprecio += $dato->cantidadprecio;

                                            $array_pagos = [];
                                            $sumaparcial = 0;

                                            // Obtener pagos por reservas
                                            $pagos = DB::table('reservas')
                                                ->leftJoin('mediodepagoreserva as m', 'reservas.id', '=', 'm.id_reserva')
                                                ->leftJoin('mediosdepagos as mp', 'm.id_medio_pago', '=', 'mp.id')
                                                ->where('reservas.fecha', $dato->fecha)
                                                ->groupBy('m.id_medio_pago')
                                                ->select('m.id_medio_pago', DB::raw('SUM(m.valor) as suma'), 'mp.suma as sumar')
                                                ->get();
                                               //agregado
                                               
/*
                                        $datoFecha = Carbon::parse($dato->fecha);
                                        $inicioDia = '05:00:00';
                                        $finDia = '04:59:59';
                                        
                                        $pagos = DB::table('reservas')
                                            ->leftJoin('mediodepagoreserva as m', 'reservas.id', '=', 'm.id_reserva')
                                            ->leftJoin('mediosdepagos as mp', 'm.id_medio_pago', '=', 'mp.id')
                                            ->where(function ($query) use ($datoFecha, $inicioDia, $finDia) {
                                                // Condición para el mismo día (de 05:00 a 23:59:59)
                                                $query->where(function ($subQuery) use ($datoFecha, $inicioDia) {
                                                    $subQuery->whereDate('reservas.fecha', $datoFecha)
                                                             ->whereTime('hora_inicio', '>=', $inicioDia);
                                                })
                                                // Condición para el día siguiente (de 00:00 a 04:59:59)
                                                ->orWhere(function ($subQuery) use ($datoFecha, $finDia) {
                                                    $subQuery->whereDate('reservas.fecha', $datoFecha->copy()->addDay())
                                                             ->whereTime('hora_inicio', '<=', $finDia);
                                                });
                                            })
                                            ->whereNull('m.fecha')
                                            ->groupBy('m.id_medio_pago')
                                            ->select('m.id_medio_pago', DB::raw('SUM(m.valor) as suma'), 'mp.suma as sumar')
                                            ->get();
*/
                                               //finagregado
                                            foreach ($pagos as $pago) {
                                                $valor_adicional = DB::table('mediodepagoreserva')
                                                    ->where('fecha', $dato->fecha)
                                                    ->where('id_categoria_medio', $pago->id_medio_pago)
                                                    ->whereIn('id_medio_pago', [5, 3])
                                                    ->sum('valor');

                                                $pago->suma += $valor_adicional;
                                                $array_pagos[$pago->id_medio_pago] = $pago->suma;

                                                // Solo sumar si el medio de pago est��� marcado para sumar
                                                if ($pago->sumar == 1) {
                                                    $sumaparcial += $pago->suma;
                                                }
                                            }

                                            // Incluir senias (valor de medio de pago 3)
                                            if (isset($senias[$dia_formateado][3])) {
                                                $array_pagos[3] = $senias[$dia_formateado][3];
                                                if ($pago->sumar == 1) {
                                                $sumaparcial += $senias[$dia_formateado][3];
                                                }
                                            } else {
                                                $array_pagos[3] = 0;
                                            }
                                                                if (isset($senias[$dia_formateado][5])) {
                                                $array_pagos[5] = $senias[$dia_formateado][5];
                                                if ($pago->sumar == 1) {
                                                $sumaparcial += $senias[$dia_formateado][5];
                                                }
                                            } else {
                                                $array_pagos[5] = 0;
                                            }

                                            // Actualizar totales por medios de pago
                                            foreach ($array_pagos as $medio_id => $valor) {
                                                $array_suma_medios[$medio_id] = ($array_suma_medios[$medio_id] ?? 0) + $valor;
                                            }

                                            // Incrementar el total global
                                            $total_sumaparcial += $sumaparcial;
                                        @endphp
                                        <tr>
                                            <td>{{ "$dia_formateado-{$array_meses[$mes]}" }}</td>
                                            <td>{{ $cantidadsala }}</td>
                                            <td>{{ $dato->cantidadjugadores }}</td>
                                            <td>{{ number_format($dato->cantidadprecio, 0, '', '') }}</td>
                                            <td align='right'>{{ number_format($sumaparcial, 0, '', '') }}</td>
                                            @foreach($mediosdepago as $medio)
                                                @php
                                                    $valor = $array_pagos[$medio->id] ?? 0;
                                                @endphp
                                                <td align='right'>{{ number_format($valor, 0, '', '') }}</td>
                                            @endforeach
                                        </tr>
                                    @endif
                                @endforeach

                                @if(!$entro)
                                    <tr>
                                        <td>{{ "$dia_formateado-{$array_meses[$mes]}" }}</td>
                                        <td colspan="4"></td>
                                        @foreach($mediosdepago as $medio)
                                            @if($medio->id == 3)
                                                <td align="right">{{ number_format($senias[$dia_formateado][3], 0, '', '') }}</td>
                                            @elseif($medio->id == 5)
                                                <td align="right">{{ number_format($senias[$dia_formateado][5], 0, '', '') }}</td>
                                            @else
                                                <td></td>
                                            @endif
                                        @endforeach
                                    </tr>
                                @endif
                            @endforeach

                            <tr>
                                <td>Totales</td>
                                <td>{{ $total_cantidad_sala }}</td>
                                <td>{{ $total_cantidadjugadores }}</td>
                                <td>{{ $total_cantidadprecio }}</td>
                                <td>{{ number_format($total_sumaparcial, 0, '', '') }}</td>
                                @foreach($mediosdepago as $medio)
                                    <td align="right">{{ number_format($array_suma_medios[$medio->id] ?? 0, 0, '', '') }}</td>
                                @endforeach
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

@push('stylesheets')
<style type="text/css">
    .tablainformes {
        width: 120%;
    }
    .tablainformes tr td {
        border-collapse: collapse;
        padding: 4px;
        border: 1px solid #000;
    }
    div.wrapper, div.content-wrapper {
        height: 2000px;
        overflow-y: scroll;
        overflow-x: scroll;
        width: 105%;
        padding-right: 100px;
    }
</style>
@endpush

@push('scripts')
<script src="js/jquery.tableToExcel.js" type="text/javascript"></script>
<script type="text/javascript">
    function exportar() {
        $('#tabla3').tblToExcel();        
    }
</script>
@endpush

@endsection
