예제 #1
0
 function generaLiga($equipos)
 {
     $this->equipos = $equipos;
     foreach ($equipos as $equipo) {
         $equipo = new Equipo($equipo);
         $equipo->persist();
     }
     //Intervalo entre jornadas y fecha 1ª jornada
     $intervalo = new DateInterval("P7D");
     $fecha = new DateTime("2014-11-2");
     //Por si hay equipos impares
     if (count($equipos) % 2 != 0) {
         array_push($equipos, "extra!!");
     }
     //Genera las jornadas de la 1ª vuelta
     for ($i = 0; $i < count($equipos) - 1; $i++) {
         //Formato fecha
         $fechaPartido = $fecha->format("Y-m-d");
         //Una jornada por cada vuelta del for
         $jornadaActual = new Jornada($fechaPartido);
         //Suma intervalo jornadas
         $fecha->add($intervalo);
         $jornadaActual->persist();
         //Coge del 1º a la mitad
         $locales = array_slice($equipos, 0, count($equipos) / 2);
         //De la mitad a los que haya
         $visitantes = array_reverse(array_slice($equipos, count($equipos) / 2));
         for ($j = 0; $j < count($visitantes); $j++) {
             $partidoActual = new Partido($jornadaActual->getId(), $locales[$j], $visitantes[$j]);
             $partidoActual->persist();
             //En la jornada i, el partido j, el local es j
             $liga[$i][$j]['local'] = $locales[$j];
             $liga[$i][$j]['visitante'] = $visitantes[$j];
         }
         //El 1er equipo
         $equipoBase = array_shift($equipos);
         array_unshift($equipos, array_pop($equipos));
         array_unshift($equipos, $equipoBase);
     }
     //Genera las jornadas de vuelta
     foreach ($liga as $jornada) {
         $fechaPartido = $fecha->format("Y-m-d");
         //Una jornada por cada vuelta del for
         $jornadaActual = new Jornada($fechaPartido);
         //Suma intervalo jornadas
         $fecha->add($intervalo);
         $jornadaActual->persist();
         $jornadaVuelta = [];
         foreach ($jornada as $partido) {
             $partidoActual = new Partido($jornadaActual->getId(), $partido["visitante"], $partido['local']);
             $partidoActual->persist();
             $partidoVuelta['local'] = $partido['visitante'];
             $partidoVuelta['visitante'] = $partido['local'];
             $jornadaVuelta[] = $partidoVuelta;
         }
         array_push($liga, $jornadaVuelta);
     }
     return $liga;
 }
예제 #2
0
파일: Liga.php 프로젝트: villapilla/PHP
 public function generaLiga($equipos)
 {
     $liga = new Collection();
     $id_equipos = [];
     foreach ($equipos as $equipo) {
         $eq = new Equipo($equipo);
         $eq->persist();
         array_push($id_equipos, $eq);
     }
     $jornadas = (count($id_equipos) - 1) * 2;
     $jornada = [];
     $intervalo = new DateInterval("P7D");
     $fecha = new DateTime("2014-11-2");
     shuffle($id_equipos);
     $equiposAmb = $id_equipos;
     array_pop($equiposAmb);
     $equiposRev = new ArrayObject(array_reverse($equiposAmb, false));
     $itRev = $equiposRev->getIterator();
     $equiposAmb = new ArrayObject($equiposAmb);
     $it = $equiposAmb->getIterator();
     $equipoComodin = $id_equipos[count($equipos) - 1];
     for ($i = 0; $i < $jornadas; $i++) {
         $fechaPartido = $fecha->format("Y-m-d");
         $jornada = new Jornada($this->getId_liga(), $fechaPartido);
         $jornada->persist();
         $fecha->add($intervalo);
         if ($i < $jornadas / 2) {
             for ($j = 0; $j < count($id_equipos) / 2; $j++) {
                 //Resetemos los iteradores
                 if (!$it->valid()) {
                     $it->rewind();
                 }
                 if (!$itRev->valid()) {
                     $itRev->rewind();
                 }
                 if ($j === 0) {
                     if ($j % 2 === 0) {
                         $partido = new Partido($jornada->getId_jornada(), $it->current(), $equipoComodin);
                     } else {
                         $partido = new Partido($jornada->getId_jornada(), $equipoComodin, $it->current());
                     }
                 } else {
                     $partido = new Partido($jornada->getId_jornada(), $it->current(), $itRev->current());
                     $itRev->next();
                 }
                 $it->next();
                 $partido->persist();
                 $jornada->getPartidos()->add($partido);
             }
         } else {
             for ($j = 0; $j < count($id_equipos) / 2; $j++) {
                 //Resetemos los iteradores
                 if (!$it->valid()) {
                     $it->rewind();
                 }
                 if (!$itRev->valid()) {
                     $itRev->rewind();
                 }
                 if ($j === 0) {
                     if ($j % 2 === 0) {
                         $partido = new Partido($jornada->getId_jornada(), $equipoComodin, $it->current());
                     } else {
                         $partido = new Partido($jornada->getId_jornada(), $it->current(), $equipoComodin);
                     }
                 } else {
                     $partido = new Partido($jornada->getId_jornada(), $itRev->current(), $it->current());
                     $itRev->next();
                 }
                 $it->next();
                 $partido->persist();
                 $jornada->getPartidos()->add($partido);
             }
         }
         $liga->add($jornada);
     }
     return $liga;
 }