/** * Intenta cumplir una fecha de suspensión para alguna de la suspensiones activas del jugador. * * @param TorneoPlantel $jugador_torneo * @param Partido $partido */ protected function intentarCumplirFechaDeSuspension(TorneoPlantel $jugador_torneo, Partido $partido) { // Consulto si el jugador cumplio alguna fecha en el partido (no olvidar que puede estar editandose). $fecha_cumplida_por_jugador = SuspensionFechaCumplida::select('suspensiones_fechas_cumplidas.*')->join('suspensiones', 'suspensiones.id', '=', 'suspensiones_fechas_cumplidas.suspension_id')->where('suspensiones_fechas_cumplidas.partido_id', '=', $partido->id)->where('suspensiones.socio_id', '=', $jugador_torneo->socio_id)->first(); if (is_null($fecha_cumplida_por_jugador)) { // Si el jugador no cumplio ninguna fecha en ese partido, me fijo si puede cumplir alugna (controlando que sea anterior al partido en cuestion) $suspension = $jugador_torneo->suspensiones_activas_en_categoria->filter(function ($suspension) use($partido) { $inicio_suspension = strtotime($suspension->date_latino_to_mysql($suspension->fecha_ini_suspension)); $inicio_partido = strtotime($partido->date_latino_to_mysql($partido->dia_partido)); $anterior_al_partido = $inicio_suspension < $inicio_partido; $por_fechas = $suspension->por_fechas; return $anterior_al_partido && $por_fechas; })->first(); if (!is_null($suspension)) { $suspension_fecha_cumplida = new SuspensionFechaCumplida(); $suspension_fecha_cumplida->partido_id = $partido->id; $suspension_fecha_cumplida->suspension_id = $suspension->id; $suspension_fecha_cumplida->save(); $suspension->fechas_cumplidas++; if ($suspension->fechas_suspension == $suspension->fechas_cumplidas) { $suspension->estado_suspension = 4; } $suspension->save(); } else { // - El jugador no esta suspendido, // - o esta suspendido en otra categoria, por lo cual no puede cumplir en esta. // - o esta suspendido pero la suspensión es por lapso de tiempo. } } else { // En un partido, un jugador puede cumplir a lo sumo una fecha de a lo sumo una suspensión. } }