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; }
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.'); } }