public function getCambiosAttribute() { //DB::enableQueryLog(); /*$cambios = PartidoCambio::with("jugador_entra.jugador.jugador") ->with("jugador_entra.club.torneo_grupo_club.torneo_club.club") ->with("jugador_sale.jugador.jugador") ->with("jugador_sale.club.torneo_grupo_club.torneo_club.club") ->with("evento.partido.clubes") ->select('partidos_cambios.*') ->join('partidos_eventos','partidos_eventos.id','=','partidos_cambios.evento_id') ->where('partidos_eventos.partido_id',$this->id) ->get();*/ $cambios = PartidoCambio::select('partidos_cambios.*')->join('partidos_eventos', 'partidos_eventos.id', '=', 'partidos_cambios.evento_id')->where('partidos_eventos.partido_id', $this->id)->get(); // $cambios = $this->clubes->pluck('cambios')->flatten(); return $cambios; }
/** * Dados dos jugadores y un partido, valida si el cambio puede ser realizado en el partido. * Si el cambio ya existe se devuelve, caso contrario se devuelve nulo. * * @param Partido $partido :: partido sobre el cual se quiere crear el cambio. * @param Int $entra_id :: id del jugador que entra (PartidoPlantel.id) * @param Int $sale_id :: id del jugador que sale (PartidoPlantel.id) * @param String $mensaje_error :: VALOR POR REFERENCIA que registra cualquier error que se produzca. * * @return PartidoCambio :: de existir el cambio que se intenta validar, se devuelve. */ protected function validarPartidoCambio(Partido $partido, $entra_id, $sale_id, &$mensaje_error) { $partido_cambio = null; $mensaje_error = ''; if ($entra_id != $sale_id) { $jugador_entra = PartidoPlantel::findOrFail($entra_id); $jugador_sale = PartidoPlantel::findOrFail($sale_id); if ($jugador_entra->club_id == $jugador_sale->club_id) { if ($jugador_entra->club->partido_id == $partido->id) { // Falta configurar. Si se quisiera permitir entrar y salir a un jugador. if (!$partido->permite_multiples_cambios) { $partido_cambio = PartidoCambio::select('partidos_cambios.*')->where('partidos_cambios.entra_id', '=', $entra_id)->where('partidos_cambios.sale_id', '=', $sale_id)->first(); if (is_null($partido_cambio)) { if ($jugador_entra->titular) { $mensaje_error = 'El jugador que quiere entrar es/era titular. Ya esta jugando, o salió pero no puede entrar nuevamete.'; } elseif (!is_null($jugador_entra->cambio_entra->first())) { $mensaje_error = 'El jugador que quiere entrar ya entró.'; } elseif (!is_null($jugador_sale->cambio_sale->first())) { $mensaje_error = 'El jugador que quiere salir ya salió.'; } } else { $mensaje_error = 'El cambio existe, lo devuelvo.'; } } else { // si se permiten multiples cambios hay que controlar si la combinacion de cambios da algo valido. } } else { $mensaje_error = 'Los jugadores son de otro partido.'; } } else { $mensaje_error = 'Los jugadores no son del mismo equipo.'; } } else { $mensaje_error = 'Se trata de hacer un autocambio.'; } if ($mensaje_error == '') { // Aca se deberian controlar la cantidad de cambios permitidos por el partido. } return $partido_cambio; }