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.'); } }