3
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user