コード例 #1
0
 /**
  * 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.
     }
 }