Exemplo n.º 1
0
 public function armarTorneo($request)
 {
     //$response["result"] = "Error";
     $response["paso"] = 0;
     $response = DB::transaction(function () use($request, $response) {
         $response["result"] = "Ok";
         $tipo_torneo_id = $request->get("tipo_torneo");
         $tipo_torneo = TipoTorneo::with('fases.tipo_fase')->findOrFail($tipo_torneo_id);
         $torneo = new Torneo();
         $torneo->fill($request->all());
         $torneo->cant_equipos = $tipo_torneo->cant_equipos;
         $torneo->cant_fases = $tipo_torneo->fases->count();
         $torneo->cant_ascensos = $tipo_torneo->cant_ascensos;
         $torneo->cant_descensos = $tipo_torneo->cant_descensos;
         $torneo->division_id = $request->get("division");
         $torneo->temporada_id = $request->get("temporada");
         $torneo->tipo_torneo_id = $request->get("tipo_torneo");
         //$torneo->torneo_anterior_id = null;
         $torneo->save();
         $tipo_primera_fase = $tipo_torneo->fases->where('fase_numero', 1)->first();
         //$torneos_clubes = new Collection();
         $error_msg = '';
         $mensajes = $this->createTorneosClubes($tipo_primera_fase->cant_grupos, $torneo, $request);
         if ($mensajes->isEmpty()) {
             $cant_equipos_ingresados = $torneo->clubes->count();
             /*if ($tipo_torneo->cant_equipos != $cant_equipos_ingresados) {
                                     $error_msg = "Ha ingresado " . $cant_equipos_ingresados . " equipos en lugar de " . $tipo_torneo->cant_equipos . ".";
             
                                     $mensajes->push($error_msg);
                                 } else {*/
             // Por ahora se crea solo la primer fase.
             // Despues de la definicion de los partidos, se crea la proxima fase
             $fase = new TorneoFase();
             $fase->torneo_id = $torneo->id;
             $fase->cant_equipos = $tipo_torneo->cant_equipos;
             $fase->fase_numero = $tipo_primera_fase->fase_numero;
             $fase->cant_grupos = $tipo_primera_fase->cant_grupos;
             $fase->ida_y_vuelta = $tipo_primera_fase->ida_y_vuelta;
             $fase->gol_visitante = $tipo_primera_fase->gol_visitante;
             $fase->cant_interzonales = $tipo_primera_fase->cant_interzonales;
             $fase->cant_clasificados = $tipo_primera_fase->cant_clasificados;
             $fase->nombre = $tipo_primera_fase->tipo_fase->nombre;
             $fase->tipo_fase_id = $tipo_primera_fase->tipo_fase->id;
             $fase->fase_anterior_id = null;
             $fase->save();
             $partidos_grupos = [];
             for ($i = 1; $i <= $fase->cant_grupos; $i++) {
                 $equipos_grupo = $request->get("grupo_" . $i);
                 $cant_equipos = sizeof($equipos_grupo);
                 $grupo = new TorneoGrupo();
                 $grupo->orden = $i;
                 //$grupo->about         = "";
                 $grupo->cant_equipos = $cant_equipos;
                 $grupo->fase_id = $fase->id;
                 $grupo->save();
                 $equipos = [];
                 $iPartido = 0;
                 for ($j = 0; $j < $cant_equipos; $j++) {
                     $club_id = $equipos_grupo[$j];
                     //$equipo = new TorneoClub;
                     //    //$equipo->pseudonimo = chr($j+96);
                     //    $equipo->club_id    = $club_id;
                     //    $equipo->torneo_id  = $torneo->id;
                     //$equipo->save();
                     //$club_data = Club::where("id",$club_id)->first();
                     //$equipo->club = $club_data;
                     //$equipos[$j] = $equipo;
                     // Hacer esta próxima consulta, me permite independizar el ingreso de los clubes al torneo de la asignación de grupos a los mismos.
                     $torneo_club = TorneoClub::with('club')->where('club_id', $club_id)->where('torneo_id', $torneo->id)->first();
                     if (is_null($torneo_club)) {
                         die('El Club indicado no forma parte del torneo.');
                     }
                     $torneo_grupo_club = new TorneoGrupoClub();
                     $torneo_grupo_club->torneo_club_id = $torneo_club->id;
                     $torneo_grupo_club->grupo_id = $grupo->id;
                     $torneo_grupo_club->save();
                     $equipos[$j] = $torneo_club;
                 }
                 $partidos = [];
                 for ($j = 0; $j < $cant_equipos; $j++) {
                     for ($k = $j + 1; $k < $cant_equipos; $k++) {
                         $partidos[] = ["l" => $equipos[$j], "v" => $equipos[$k]];
                     }
                 }
                 $partidos_grupos[] = ["grupo" => $i, "partidos" => $partidos];
             }
             $response["response"] = ["torneo" => $torneo, "partidos_grupos" => $partidos_grupos];
             //}
         }
         //$response["description"] = $error_msg;
         $response["mensajes"] = $mensajes;
         if (!$mensajes->isEmpty()) {
             $response["result"] = "Error";
             DB::rollback();
         }
         //dd($response);
         return $response;
     });
     //return $result;
     return $response;
 }
Exemplo n.º 2
0
 public function crearTorneoFase($torneo, $torneo_fase)
 {
     $tipo_torneo = $torneo->tipo_torneo;
     if (is_null($torneo_fase)) {
         $tipo_torneo_fase_actual = $tipo_torneo->fases->where('fase_numero', 1)->first();
         $tipo_torneo_fase_siguiente = $tipo_torneo_fase_actual;
     } else {
         $tipo_torneo_fase_actual = $tipo_torneo->fases->where('fase_numero', $torneo_fase->fase_numero)->first();
         $tipo_torneo_fase_siguiente = $tipo_torneo_fase_actual->fase_siguiente;
     }
     if (!is_null($tipo_torneo_fase_siguiente)) {
         $new_toreno_fase = TorneoFase::firstOrCreate(['fase_numero' => $tipo_torneo_fase_siguiente->fase_numero, 'torneo_id' => $torneo->id, 'tipo_fase_id' => $tipo_torneo_fase_siguiente->tipo_fase_id]);
         $new_toreno_fase->cant_equipos = $torneo_fase->cant_clasificados;
         $new_toreno_fase->fase_anterior_id = $torneo_fase->id;
         $new_toreno_fase->nombre = $tipo_torneo_fase_siguiente->tipo_fase->nombre;
         $new_toreno_fase->ida_y_vuelta = $tipo_torneo_fase_siguiente->ida_y_vuelta;
         $new_toreno_fase->gol_visitante = $tipo_torneo_fase_siguiente->gol_visitante;
         $new_toreno_fase->cant_grupos = $tipo_torneo_fase_siguiente->cant_grupos;
         $new_toreno_fase->cant_interzonales = $tipo_torneo_fase_siguiente->cant_interzonales;
         $new_toreno_fase->cant_clasificados = $tipo_torneo_fase_siguiente->cant_clasificados;
         $new_toreno_fase->tipo_partido_definicion_id = $tipo_torneo_fase_siguiente->tipo_partido_definicion_id;
         $new_toreno_fase->save();
         for ($i = 1; $i <= $new_toreno_fase->cant_grupos; $i++) {
             $new_torneo_grupo = new TorneoGrupo();
             $new_torneo_grupo->orden = $i;
             $new_torneo_grupo->cant_equipos = $new_toreno_fase->cant_equipos_x_grupo;
             $new_torneo_grupo->fase_id = $new_toreno_fase->id;
             $new_torneo_grupo->save();
             $equipos_grupo = $grupos[$i]->equipos_grupo;
             for ($j = 1; $j <= $new_torneo_grupo->cant_equipos; $j++) {
                 $club_id = $equipos_grupo[$j];
                 $torneo_club = TorneoClub::with('club')->where('club_id', $club_id)->where('torneo_id', $torneo->id)->first();
                 $new_torneo_grupo_club = TorneoGrupoClub::firstOrCreate(['grupo_id' => $new_torneo_grupo->id, 'torneo_club_id' => $torneo_club_->id]);
             }
         }
         dd($tipo_torneo_fase_siguiente, $new_toreno_fase, $new_toreno_fase->grupos);
     } else {
         die('Forbidden.');
     }
 }