예제 #1
0
 /**
  * Devuelve las fechas cumplidas por algun jugador en el partido.
  *
  * @return Collection(SuspensionFechaCumplida) 
  */
 public function getFechasCumplidasEnPartidoAttribute()
 {
     $fechas_cumplidas_en_partido = SuspensionFechaCumplida::where('partido_id', $this->id)->get();
     return $fechas_cumplidas_en_partido;
 }
예제 #2
0
 /** 
  * Te retorna la suspension activa en dicho partido
  *
  * @param int $partido_id :: partido en cuestion
  *
  * @return Suspension :: retorna una de las suspensiones activas en dicho partido
  */
 public function suspensionActivaEnPartido($partido_id)
 {
     $suspendido = null;
     $suspensiones = Suspension::where("socio_id", $this->socio_id)->get();
     $suspendido = $suspensiones->filter(function ($item) use($partido_id) {
         $cumplio_fecha_en_partido = SuspensionFechaCumplida::where("partido_id", $partido_id)->where("suspension_id", $item->id)->first();
         $vale = 1;
         if (is_null($cumplio_fecha_en_partido)) {
             $vale = 0;
         }
         return $vale;
     })->first();
     return $suspendido;
 }
예제 #3
0
 /**
  * Elimina un mal ingreso. 
  *
  * @param PartidoMalIngreso $mal_ingreso : mal ingreso a eliminar
  */
 protected function eliminarPartidoMalIngreso($mal_ingreso)
 {
     if ($mal_ingreso) {
         DB::transaction(function () use($mal_ingreso) {
             $partido = Partido::findOrFail($mal_ingreso->partido->id);
             $suspension_padre = $mal_ingreso->suspension_padre;
             if (is_null($suspension_padre)) {
                 // El mal ingresó fue generado por que el jugador no pertenece a la lista de buena fe del equipo. No hay algo que controlar.
             } else {
                 // El mal ingreso fue generado por que el jugador estaba suspendido al momento de firmar la planilla del partido.
                 // Como estoy borrando el mal ingreso, si el partido esta en un estado final (es decir en estado finalizado o suspendido), el jugador esta cumpliendo una fecha de la suspension que generó este mal ingreso.
                 if ($suspension_padre->cumplida) {
                     // La suspension esta cumplida, entonces cumplo fecha en este partido en lugar del ultimo partido en donde cumpli, siempre y cuando el partido este en un estado final (es decir en estado finalizado o suspendido).
                     /** 
                         Sabiendo que: dia_partido(P1) < dia_partido(P2) < ... < dia_partido(Px)
                     
                         Supongamos que en el partido P1 al jugador J se le genera una suspension S1.
                         Luego, J juega el partido P2 y se le genera un mal ingreso M a partir de S1.
                         Posteriormente, J no juega Px y se genera el cumplimiento Cx de la fecha de S1.
                     
                         Si edito P2 y J al final no juega, no solo no debió haberse generado M, sino que en ese partido J debió haber cumplido una fecha de S1. 
                     
                         Entonces, si la suspensión S1
                             - Aún no fue cumplida :  genero el cumplimiento C2. 
                             - Ya fue cumplida : 
                                 Supongamos que Px es el último partido donde se cumplió una fecha de S1.
                                 Entonces el cumplimiento Cx, no debería haberse generado ya que como vamos a agregar un cumplimiento anterior (el del partido P2), la suspensión se cumplió antes. 
                     */
                     $suspension_fecha_cumplida = $suspension_padre->ultimo_partido_cumplidor;
                     $partido_cumplidor = $suspension_fecha_cumplida->partido;
                     if ($partido_cumplidor->dia_partido > $partido->dia_partido) {
                         // Si existe un
                         $suspension_fecha_cumplida->paritido_id = $partido->id;
                         $suspension_fecha_cumplida->save();
                         $partido_plantel = $partido_cumplidor->jugador($item_de_evento->jugador->id);
                     } else {
                         // Inconsistencia : La suspensión se cumplió antes de este partido, lo cual no tiene sentido ya que nunca se habria generado este mal ingreso. Me hago el sota.
                     }
                 } else {
                     // La suspension no esta cumplida, entonces cumplo fecha en este partido sin algun otro control, siempre y cuando el partido este en un estado final (es decir en estado finalizado o suspendido).
                     if ($partido->finalizado || $partido->suspendido) {
                         $nueva_fecha_cumplida = SuspensionFechaCumplida::firstOrNew(['suspension_id' => $suspension_padre->id, 'partido_id' => $partido->id]);
                     }
                 }
             }
             $mal_ingreso->forceDelete();
         });
     }
 }