public function crearPartidoClub($club_id, $es_local, $partido_id) { $equipo_partido = new PartidoClub(); $equipo_partido->club_id = $club_id; $equipo_partido->local = $es_local; $equipo_partido->partido_id = $partido_id; $equipo_partido->save(); }
/** * @return int : De los partidos finalizados del club, devuelve los que tienen el resultado forzado. */ public function getPartidosResultadoForzadoClubAttribute() { /*$partidos_resultado_forzado_club = $this->partidos_finalizados_club->filter( function($item) { return ($item->partido->forzar_resultado); });*/ $partidos_resultado_forzado_club = PartidoClub::select('partidos_clubes.*')->join('partidos', 'partidos.id', '=', 'partidos_clubes.partido_id')->where('partidos_clubes.club_id', '=', $this->id)->where('partidos.forzar_resultado', 1)->get(); $partidos_resultado_forzado_club = $partidos_resultado_forzado_club->filter(function ($item) { return $item->partido->estado_compuesto->id == EstadoPartido::FINALIZADO; }); return $partidos_resultado_forzado_club; }
/** * Devuelve los partidos programados anteriormente mas cercanos sin jugar, de alguno de los clubes * @return Partido */ public function getPartidosProgramadosAnterioresAttribute() { /* ESTO ES LO MISMO QUE LAS TRES LINEAS DE ABAJO, LA DIFERENCIA ES QUE ABAJO LO PIDO POR CADA PARTIDO CLUB Y ACA LO CALCULO DESDE EL PARTIDO, DB::enableQueryLog(); $partidos_programados = Partido::where("estado_id",EstadoPartido::PROGRAMADO) ->where("dia_partido","<",$this->dia_partido) ->where("id","<>",$this->id) ->get(); $clubes = PartidoClub::where("partido_id",$this->id)->get(); $partidos_clubes = PartidoClub::whereIn("club_id",$clubes->pluck("club_id")->toArray()) ->whereIn("partido_id",$partidos_programados->pluck("id")->toArray())->get(); $partidos = $partidos_clubes->pluck("partido_id")->unique(); $partidos = Partido::whereIn("id",$partidos->toArray())->orderBy("dia_partido","DESC")->get(); dd(array_sum(array_pluck(DB::getQueryLog(), 'time'))); */ $clubes = PartidoClub::where("partido_id", $this->id)->get(); $partidos = $clubes->first()->partidos_programados_anteriores; $partidos->merge($clubes->get(1)->partidos_programados_anteriores); return $partidos->unique(); }
/** * @return Collection[TorneoPlantel] : los jugadores de la lista de buena fe que estan suspendidos */ public function getPartidosProgramadosAnterioresAttribute() { $partidos_anteriores = PartidoClub::where("club_id", $this->club_id)->get(); $partidos_ids = $partidos_anteriores->pluck("partido_id")->toArray(); $dia_partido = $this->date_latino_to_mysql($this->partido->dia_partido); $partidos_programados = Partido::whereIn("id", $partidos_ids)->whereDate("dia_partido", "<", $dia_partido)->where("estado_id", EstadoPartido::PROGRAMADO)->orderBy("dia_partido", "DESC")->get(); return $partidos_programados; }
protected function terminarPartido($partido, $estado_id) { $nuevo_estado = EstadoPartido::find($estado_id); # Por defecto finalizo el partido $nuevo_estado_id = 4; if ($nuevo_estado) { $nuevo_estado_id = $nuevo_estado->id; } if ($nuevo_estado_id == 5) { # Quiero suspender el partido if (is_null($partido->partido_complemento)) { # No estaba previamente suspendido, creo el partido continuacion $complemento = new Partido(); $complemento->fecha_id = $partido->fecha_id; $complemento->estado_id = 1; $complemento->partido_complemento_id = $partido->id; $complemento->save(); foreach ($partido->clubes as $club) { $nuevo_partido_club = new PartidoClub(); $nuevo_partido_club->club_id = $club->club_id; $nuevo_partido_club->local = $club->local; $nuevo_partido_club->partido_id = $complemento->id; $nuevo_partido_club->save(); } } else { # Estoy editando un partido previamente suspendido. # Debería revisar si los eventos tienen efecto sobre el partido siguiente. } } elseif ($nuevo_estado_id == 4) { if ($partido->partido_complemento) { # Si el partido estaba previamente suspendido, no se puede finalizar $nuevo_estado_id = 5; // tirar cartel error } } else { # En esta instancia solo puedo o finalizar, o suspender die("Forbidden"); } $partido->estado_id = intval($nuevo_estado_id); $partido->save(); }