public function fixtureStore() { $request = Input::all(); return $result = DB::transaction(function () use($request) { $result["result"] = "OK"; $fechas = $request["fechas"]; $dia = $request["inicio"]; $torneo_id = $request["torneo"]; $cant_fechas = TorneoFase::where('torneo_id', $torneo_id)->get()->last()->grupos->first()->cantidad_fechas; $fecha = new TorneoFecha(); $partido = new Partido(); $partido_club = new PartidoClub(); $fechas_creadas = $fecha::where('torneo_id', $torneo_id)->get(); //todas las fechas creadas $partidos_creados = $partido::whereIn('fecha_id', $fechas_creadas->pluck("id"))->get(); //todos los partidos creados $partidos_club_creados = $partido_club::whereIn('partido_id', $partidos_creados->pluck("id"))->get(); //todos las instancias de clubes en los partidos foreach ($partidos_creados as $partido) { //de todos los partidos if ($partido->borrable) { // si son borrables, no tienen incidencias $partido->local->forceDelete(); //borro el local $partido->visitante->forceDelete(); //borro el visitante $partido->forceDelete(); //luego, borro el partido } } foreach ($fechas_creadas as $fecha) { //de todas las fechas if ($fecha->borrable) { // si la fecha es borrable, es decir no tiene partidos $fecha->forceDelete(); // la borro ameo } } //foreach ($fechas as $key => $fecha){ for ($orden = 0; $orden < $cant_fechas; $orden++) { $fecha = array_key_exists($orden, $fechas) ? $fechas[$orden] : false; if ($fecha) { // si me llegaron cosas de la fecha, entonces tengo que hacer. $torneo_fecha = TorneoFecha::where('torneo_id', $torneo_id)->where('orden', $orden + 1)->get(); if ($torneo_fecha->count()) { //si tengo fecha con ese orden debo insertar todos los partidos en esa fecha previamente creada $torneo_fecha = $torneo_fecha->first(); } else { // sino, debo crear la fecha primero y luego insertar. $torneo_fecha = new TorneoFecha(); $torneo_fecha->orden = $orden + 1; $torneo_fecha->torneo_id = $torneo_id; $torneo_fecha->horario_preferido = $request["horario"]; $torneo_fecha->fecha_ini = $dia; $torneo_fecha->save(); } $dia_array = explode('/', $dia); $dia = $dia_array[2] . '/' . $dia_array[1] . '/' . $dia_array[0]; $dia = strtotime('+7 day', strtotime($dia)); $dia = date('d/m/Y', $dia); foreach ($fecha as $partido_fecha) { // if (!$this->controlarClubPartidos($torneo_fecha->id,$partido_fecha["l"]) && !$this->controlarClubPartidos($torneo_fecha->id,$partido_fecha["v"])){ $partido = new Partido(); $partido->fecha_id = $torneo_fecha->id; $partido->estado_id = 1; $partido->save(); $partido_club_local = new PartidoClub(); $partido_club_local->local = 1; $partido_club_local->partido_id = $partido->id; $local_id = TorneoGrupoClub::where('torneo_club_id', $partido_fecha["l"])->first(); $partido_club_local->club_id = $local_id->id; $partido_club_local->save(); $partido_club_visitante = new PartidoClub(); $partido_club_visitante->local = 0; $partido_club_visitante->partido_id = $partido->id; $visita_id = TorneoGrupoClub::where('torneo_club_id', $partido_fecha["v"])->first(); $partido_club_visitante->club_id = $visita_id->id; $partido_club_visitante->save(); /* }else{ $result["result"] = "Error"; $result["description"] = "" ; return $result; } */ } } } //a esta altura tengo todo lo que estaba borrable eliminado //CONTINUAR AQUI ASOCIANDO LOS PARTIDOS NUEVOS A LAS FECHAS QUE QUEDARON CREADAS O CREARLAS RECORRIENDO LO QUE RECIBO . VER FOREACH DE ABAJO /* function aca puedo achicar el comentario () { $partidos_finalizados = $partido::whereIn('fecha_id',$fechas_creadas->pluck("id"))->where('estado_id','=',4)->get(); //todos los partidos finalizados $partidos_club_con_partidos_finalizados = $partido_club::whereIn('partido_id',$partidos_finalizados->pluck("id"))->get(); //todos los partidos clubes con partidos finalizados $fechas_con_partidos_finalizados = $fecha::whereIn('id',$partidos_finalizados->pluck("fecha_id"))->get(); //las fechas con partidos finalizdos //calculo los elementos borrables por medio de las diferencias $partidos_club_borrables = $partidos_club_creados->diff($partidos_club_con_partidos_finalizados); $partidos_borrables = $partidos_club_creados->diff($partidos_finalizados); $fechas_borrables = $fechas_creadas->diff($fechas_con_partidos_finalizados); foreach ($partidos_club_borrables as $partido_club_creado_item) { $partido_club_creado_item->delete(); } foreach ($partidos_borrables as $partido_creado_item) { $partido_creado_item->delete(); } foreach ($fechas_borrables as $fecha_creada_item) { $fecha_creada_item->delete(); } } foreach ($fechas as $key => $fecha){ $torneo_fecha = new TorneoFecha; $torneo_fecha->orden = $key + 1; $torneo_fecha->torneo_id = $torneo_id; $torneo_fecha->horario_preferido = $request["horario"]; $torneo_fecha->fecha_ini = $dia; $torneo_fecha->save(); $dia_array= explode('/',$dia); $dia = $dia_array[2].'/'.$dia_array[1].'/'.$dia_array[0]; $dia = strtotime ( '+7 day' , strtotime ( $dia ) ) ; $dia = date ( 'd/m/Y' , $dia ); foreach ($fecha as $partido_fecha) { if (!$this->controlarClubPartidos($torneo_fecha->id,$partido_fecha["l"]) && !$this->controlarClubPartidos($torneo_fecha->id,$partido_fecha["v"])){ $partido = new Partido; $partido->fecha_id = $torneo_fecha->id; $partido->estado_id = 1; $partido->save(); $partido_club_local = new PartidoClub; $partido_club_local->local = 1; $partido_club_local->partido_id = $partido->id; $local_id = TorneoGrupoClub::where('torneo_club_id', $partido_fecha["l"])->first(); $partido_club_local->club_id = $local_id->id; $partido_club_local->save(); $partido_club_visitante = new PartidoClub; $partido_club_visitante->local = 0; $partido_club_visitante->partido_id = $partido->id; $visita_id = TorneoGrupoClub::where('torneo_club_id', $partido_fecha["v"])->first(); $partido_club_visitante->club_id = $visita_id->id; $partido_club_visitante->save(); }else{ $result["result"] = "Error"; $result["description"] = "" ; return $result; } } } */ return $result; }); }