/** * Constructor * @param {integer} $prueba Prueba ID * @param {integer} $jornada Jormada ID * @param {integer} $manga Manga ID * @throws Exception */ function __construct($prueba, $jornada) { parent::__construct('Portrait', "print_equiposByJornada", $prueba, $jornada); if ($prueba <= 0 || $jornada <= 0) { $this->errormsg = "print_teamsByJornada: either prueba or jornada data are invalid"; throw new Exception($this->errormsg); } // comprobamos que estamos en una jornada por equipos $flag = intval($this->jornada->Equipos3) + intval($this->jornada->Equipos4); if ($flag == 0) { $this->errormsg = "print_teamsByJornada: Jornada {$jornada} has no Team competition declared"; throw new Exception($this->errormsg); } // Datos de equipos de la jornada $m = new Equipos("print_teamsByJornada", $prueba, $jornada); $teams = $m->getTeamsByJornada(); // reindexamos por ID y anyadimos un campo extra "Perros" con los perros del equipo $this->equipos = array(); foreach ($teams as &$equipo) { $equipo['Perros'] = $m->getPerrosByTeam($equipo['ID']); $this->equipos[$equipo['ID']] = $equipo; } // Datos de los participantes (indexados por ID de perro) $m = new DBObject("print_teamsByJornada"); $r = $m->__select("*", "Resultados", "(Jornada={$jornada})", "", ""); $this->perros = array(); foreach ($r['rows'] as $item) { $this->perros[intval($item['Perro'])] = $item; } // finalmente internacionalizamos cabeceras $this->cellHeader = array(_('Dorsal'), _('Name'), _('Breed'), _('Lic'), _('Category'), _('Handler'), $this->strClub, _('Heat'), _('Comments')); }
/** * enumera las diversas rondas (Pre-agility, Grado I, Grado II, etc de la jornada ) con sus mangas asociadas * @param $jornadaid * @return array|null */ static function enumerateRondasByJornada($jornadaid) { if ($jornadaid <= 0) { // no jornada id provided return array('total' => 0, 'rows' => array()); } $dbobj = new DBObject("enumerateRondasByJornada"); $dbobj->myLogger->enter(); $jornada = $dbobj->__getArray("Jornadas", $jornadaid); $prueba = $dbobj->__getArray("pruebas", $jornada['Prueba']); $mangas = $dbobj->__select("*", "Mangas", "(Jornada={$jornadaid})", "TIPO ASC", "")['rows']; $data = array(); if ($jornada['PreAgility2'] != 0) { // $dbobj->myLogger->trace("Procesando mangas de preagility-2"); /* Pre-Agility siempre tiene recorrido comun para todas las categorias */ $m1 = Jornadas::__searchManga(1, $mangas); // PA-1 $m2 = Jornadas::__searchManga(2, $mangas); // PA-2 Jornadas::__compose($data, $prueba, $jornadaid, 2, $m1, $m2); } else { if ($jornada['PreAgility'] != 0) { // $dbobj->myLogger->trace("Procesando mangas de preagility-1"); /* Pre-Agility siempre tiene recorrido comun para todas las categorias */ $m1 = Jornadas::__searchManga(1, $mangas); // PA-1 Jornadas::__compose($data, $prueba, $jornadaid, 1, $m1, null); } } if ($jornada['Grado1'] != 0) { // Jornadas::tiporonda=3 $m1 = Jornadas::__searchManga(3, $mangas); // Agility 1 Grado I $m2 = Jornadas::__searchManga(4, $mangas); // Agility 2 Grado I Jornadas::__compose($data, $prueba, $jornadaid, 3, $m1, $m2); } if ($jornada['Grado2'] != 0) { // Jornadas::tiporonda=4 $m1 = Jornadas::__searchManga(5, $mangas); // Agility Grado II $m2 = Jornadas::__searchManga(10, $mangas); // Jumping Grado II Jornadas::__compose($data, $prueba, $jornadaid, 4, $m1, $m2); } if ($jornada['Grado3'] != 0) { // Jornadas::tiporonda=5 $m1 = Jornadas::__searchManga(6, $mangas); // Agility Grado III $m2 = Jornadas::__searchManga(11, $mangas); // Jumping Grado III Jornadas::__compose($data, $prueba, $jornadaid, 5, $m1, $m2); } if ($jornada['Open'] != 0) { // Jornadas::tiporonda=6 $m1 = Jornadas::__searchManga(7, $mangas); // Agility Open $m2 = Jornadas::__searchManga(12, $mangas); // Jumping Open Jornadas::__compose($data, $prueba, $jornadaid, 6, $m1, $m2); } if ($jornada['Equipos3'] != 0) { // Jornadas::tiporonda=7 $m1 = Jornadas::__searchManga(8, $mangas); // Agility Equipos3 $m2 = Jornadas::__searchManga(13, $mangas); // Jumping Equipos3 Jornadas::__compose($data, $prueba, $jornadaid, 7, $m1, $m2); } if ($jornada['Equipos4'] != 0) { // Jornadas::tiporonda=8 $m1 = Jornadas::__searchManga(9, $mangas); // Agility Equipos3 $m2 = Jornadas::__searchManga(14, $mangas); // Jumping Equipos3 Jornadas::__compose($data, $prueba, $jornadaid, 8, $m1, $m2); } if ($jornada['KO'] != 0) { // $dbobj->myLogger->trace("Procesando mangas K.O."); // TODO: write return null; } if ($jornada['Especial'] != 0) { // Jornadas::tiporonda=10 $m1 = Jornadas::__searchManga(16, $mangas); // Manga especial a una vuelta Jornadas::__compose($data, $prueba, $jornadaid, 10, $m1, null); } // TODO: evaluate conjuntas Grado II y III $result = array('total' => count($data), 'rows' => $data); return $result; }