This commit is contained in:
Laucha1312
2026-06-04 15:20:26 -03:00
parent fdd0fef3f0
commit cc049c6cb6
64 changed files with 8914 additions and 0 deletions
@@ -0,0 +1,142 @@
@extends('admin.layout')
@section('title', 'Gestión de Playoffs - ' . $torneo->nombre)
@section('content')
<div class="page-header">
<div class="d-flex align-items-center gap-3">
<a href="{{ route('admin.torneos.edit', $torneo->id) }}" class="btn-admin-outline p-2">
<i class="bi bi-arrow-left"></i>
</a>
<h2 class="mb-0"><i class="bi bi-diagram-3-fill text-primary"></i> Gestión de Playoffs</h2>
</div>
</div>
<div class="admin-card mb-4 border-primary">
<div class="card-body">
<div class="row align-items-center">
<div class="col-md-8">
<h4 class="fw-bold mb-1">{{ $torneo->nombre }}</h4>
<p class="text-muted mb-0">Control de llaves y avance manual de ganadores por serie.</p>
</div>
<div class="col-md-4 text-end">
<button class="btn btn-admin" onclick="window.location.reload()">
<i class="bi bi-arrow-clockwise"></i> Actualizar Estado
</button>
</div>
</div>
</div>
</div>
@php
$fases = [
\App\Models\Evento::FASE_CUARTOS => 'Cuartos de Final',
\App\Models\Evento::FASE_SEMIS => 'Semifinales',
\App\Models\Evento::FASE_FINAL => 'Gran Final'
];
@endphp
@foreach($fases as $faseId => $faseNombre)
<div class="mb-5">
<h3 class="h4 fw-bold text-uppercase border-bottom pb-2 mb-4">
<span class="badge bg-primary me-2">{{ $faseNombre }}</span>
</h3>
<div class="row g-4">
@php $hayPartidos = isset($bracket[$faseId]) && count($bracket[$faseId]) > 0; @endphp
@if($hayPartidos)
@foreach($bracket[$faseId] as $nroBracket => $serie)
<div class="col-lg-6 col-xl-3">
<div class="admin-card h-100 border-{{ ($serie['wins_local'] >= 2 || $serie['wins_visitante'] >= 2) ? 'success' : 'light' }}">
<div class="card-header bg-white d-flex justify-content-between align-items-center py-2">
<span class="small fw-bold text-muted">LLAVE #{{ $nroBracket }}</span>
<span class="badge bg-light text-dark border small">Serie: {{ $serie['wins_local'] }} - {{ $serie['wins_visitante'] }}</span>
</div>
<div class="card-body">
<div class="team-row d-flex justify-content-between align-items-center mb-3">
<div class="d-flex align-items-center gap-2">
@if($serie['equipo_local'])
<img src="{{ $serie['equipo_local']->club->imagen ? asset('storage/'.$serie['equipo_local']->club->imagen) : asset('static/escudo_default.png') }}" width="24" class="rounded-circle border">
<span class="fw-bold {{ $serie['wins_local'] > $serie['wins_visitante'] ? 'text-success' : '' }}">
{{ $serie['equipo_local']->club->nombre }}
</span>
@else
<span class="text-muted italic">Por definir</span>
@endif
</div>
<span class="badge {{ $serie['wins_local'] > $serie['wins_visitante'] ? 'bg-success' : 'bg-secondary' }}">{{ $serie['wins_local'] }}</span>
</div>
<div class="team-row d-flex justify-content-between align-items-center mb-4">
<div class="d-flex align-items-center gap-2">
@if($serie['equipo_visitante'])
<img src="{{ $serie['equipo_visitante']->club->imagen ? asset('storage/'.$serie['equipo_visitante']->club->imagen) : asset('static/escudo_default.png') }}" width="24" class="rounded-circle border">
<span class="fw-bold {{ $serie['wins_visitante'] > $serie['wins_local'] ? 'text-success' : '' }}">
{{ $serie['equipo_visitante']->club->nombre }}
</span>
@else
<span class="text-muted fst-italic">Por definir</span>
@endif
</div>
<span class="badge {{ $serie['wins_visitante'] > $serie['wins_local'] ? 'bg-success' : 'bg-secondary' }}">{{ $serie['wins_visitante'] }}</span>
</div>
<hr>
<div class="d-grid gap-2">
<!-- Botón de Avance -->
@php
$needed = floor($serie['total_partidos'] / 2) + 1;
$readyToAdvance = ($serie['wins_local'] >= $needed || $serie['wins_visitante'] >= $needed);
$winnerId = $serie['wins_local'] > $serie['wins_visitante'] ? ($serie['equipo_local']->id_equipo ?? null) : ($serie['equipo_visitante']->id_equipo ?? null);
@endphp
@if($readyToAdvance && $faseId < \App\Models\Evento::FASE_FINAL)
<form action="{{ route('admin.torneos.playoffs.avanzar', $torneo->id) }}" method="POST">
@csrf
<input type="hidden" name="fase" value="{{ $faseId }}">
<input type="hidden" name="nro_bracket" value="{{ $nroBracket }}">
<input type="hidden" name="id_ganador" value="{{ $winnerId }}">
<button type="submit" class="btn btn-success btn-sm w-100 fw-bold">
<i class="bi bi-chevron-double-right"></i> PROMOCIONAR GANADOR
</button>
</form>
@endif
<button class="btn btn-outline-primary btn-sm" type="button" data-bs-toggle="collapse" data-bs-target="#matches-{{ $faseId }}-{{ $nroBracket }}">
Ver Partidos ({{ $serie['total_partidos'] }})
</button>
</div>
<div class="collapse mt-3" id="matches-{{ $faseId }}-{{ $nroBracket }}">
<ul class="list-group list-group-flush small">
@foreach($serie['matches'] as $idx => $m)
<li class="list-group-item d-flex justify-content-between align-items-center px-0">
<span>G{{ $idx+1 }} - {{ $m->fecha_evento->format('d/m') }}</span>
<div class="d-flex align-items-center gap-2">
<span class="fw-bold">{{ $m->marcador_local ?? '-' }} : {{ $m->marcador_visitante ?? '-' }}</span>
<a href="{{ route('admin.eventos.edit', $m->id_evento) }}" class="btn btn-sm p-0 text-primary">
<i class="bi bi-pencil-square"></i>
</a>
</div>
</li>
@endforeach
</ul>
</div>
</div>
</div>
</div>
@endforeach
@else
<div class="col-12">
<div class="alert alert-light border fst-italic py-4 text-center">
No hay llaves generadas para esta fase.
</div>
</div>
@endif
</div>
</div>
@endforeach
@endsection