limpieza
This commit is contained in:
@@ -1,129 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Pase;
|
||||
use App\Models\Jugador;
|
||||
use App\Models\Club;
|
||||
|
||||
class PaseController extends Controller
|
||||
{
|
||||
private function checkGeneralAdmin(Request $request)
|
||||
{
|
||||
if (!session('admin_logged_in') || !in_array(session('admin_role'), [1, 2])) {
|
||||
abort(403, 'Acceso denegado');
|
||||
}
|
||||
}
|
||||
|
||||
private function checkSuperAdmin(Request $request)
|
||||
{
|
||||
if (!session('admin_logged_in') || session('admin_role') != 1) {
|
||||
abort(403, 'Acceso denegado. Solo Súper Administradores.');
|
||||
}
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->checkGeneralAdmin($request);
|
||||
|
||||
$query = Pase::with(['jugador', 'clubOrigen', 'clubDestino']);
|
||||
|
||||
if (session('admin_role') == 2) {
|
||||
$idClub = session('admin_id_club');
|
||||
$query->where(function ($q) use ($idClub) {
|
||||
$q->where('id_club_origen', $idClub)
|
||||
->orWhere('id_club_destino', $idClub);
|
||||
});
|
||||
}
|
||||
|
||||
$pases = $query->orderBy('created_at', 'desc')->paginate(20);
|
||||
return view('admin.pases.index', compact('pases'));
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$this->checkGeneralAdmin($request);
|
||||
return view('admin.pases.create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->checkGeneralAdmin($request);
|
||||
|
||||
$request->validate([
|
||||
'documento' => 'required|string|exists:jugadores,documento'
|
||||
], [
|
||||
'documento.exists' => 'No se encontró un jugador con ese DNI.'
|
||||
]);
|
||||
|
||||
$jugador = Jugador::where('documento', $request->documento)->first();
|
||||
|
||||
// Si el jugador ya pertenece al club destino, error
|
||||
$idClubDestino = session('admin_role') == 2 ? session('admin_id_club') : $request->input('id_club_destino');
|
||||
|
||||
if (!$idClubDestino) {
|
||||
return back()->withErrors(['id_club_destino' => 'Debe especificar el club destino.']);
|
||||
}
|
||||
|
||||
if ($jugador->id_club_actual == $idClubDestino) {
|
||||
return back()->withErrors(['documento' => 'Este jugador ya pertenece a tu club.']);
|
||||
}
|
||||
|
||||
// Crear la petición de pase
|
||||
Pase::create([
|
||||
'id_jugador' => $jugador->id_jugador,
|
||||
'id_club_origen' => $jugador->id_club_actual,
|
||||
'id_club_destino' => $idClubDestino,
|
||||
'estado' => 'Pendiente'
|
||||
]);
|
||||
|
||||
return redirect()->route('admin.pases.index')->with('admin_msg', 'Solicitud de pase creada correctamente y está pendiente de aprobación.');
|
||||
}
|
||||
|
||||
public function aprobar(Request $request, $id)
|
||||
{
|
||||
$this->checkSuperAdmin($request);
|
||||
$pase = Pase::findOrFail($id);
|
||||
|
||||
if ($pase->estado !== 'Pendiente') {
|
||||
return back()->withErrors(['pase' => 'Este pase ya fue procesado.']);
|
||||
}
|
||||
|
||||
$pase->update(['estado' => 'Aprobado']);
|
||||
|
||||
// Actualizar jugador
|
||||
if ($pase->jugador) {
|
||||
// Desvincular de equipos del club de origen
|
||||
$equiposOldClubIds = $pase->jugador->equipos()
|
||||
->where('id_club', $pase->id_club_origen)
|
||||
->pluck('equipos.id_equipo');
|
||||
|
||||
if ($equiposOldClubIds->count() > 0) {
|
||||
$pase->jugador->equipos()->detach($equiposOldClubIds);
|
||||
}
|
||||
|
||||
$pase->jugador->update([
|
||||
'id_club_origen' => $pase->id_club_origen,
|
||||
'id_club_actual' => $pase->id_club_destino
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()->route('admin.pases.index')->with('admin_msg', 'Pase aprobado correctamente y jugador desvinculado de equipos anteriores.');
|
||||
}
|
||||
|
||||
public function rechazar(Request $request, $id)
|
||||
{
|
||||
$this->checkSuperAdmin($request);
|
||||
$pase = Pase::findOrFail($id);
|
||||
|
||||
if ($pase->estado !== 'Pendiente') {
|
||||
return back()->withErrors(['pase' => 'Este pase ya fue procesado.']);
|
||||
}
|
||||
|
||||
$pase->update(['estado' => 'Rechazado']);
|
||||
|
||||
return redirect()->route('admin.pases.index')->with('admin_msg', 'Pase rechazado.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user