/**
  * Constructor
  * @param {integer} $prueba Prueba ID
  * @param {integer} $jornada Jormada ID
  * @param {integer} $manga Manga ID
  * @throws Exception
  */
 function __construct($prueba, $jornada, $manga)
 {
     parent::__construct('Portrait', "print_entradaDeDatosEquipos4", $prueba, $jornada);
     if ($prueba <= 0 || $jornada <= 0) {
         $this->errormsg = "print_datosEquipos4: 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_datosEquipos4: Jornada {$jornada} has no Team competition declared";
         throw new Exception($this->errormsg);
     }
     // guardamos info de la manga
     $this->manga = $this->myDBObject->__getObject("Mangas", $manga);
     // Datos del orden de salida de equipos
     $m = new OrdenSalida("ordenSalidaEquipos4", $manga);
     $teams = $m->getTeams();
     $this->equipos = $teams['rows'];
     // anyadimos el array de perros del equipo
     foreach ($this->equipos as &$equipo) {
         $equipo['Perros'] = array();
     }
     $r = $this->myDBObject->__select("*", "Resultados", "(Manga={$manga})", "", "");
     foreach ($r['rows'] as $perro) {
         foreach ($this->equipos as &$equipo) {
             if ($perro['Equipo'] == $equipo['ID']) {
                 array_push($equipo['Perros'], $perro);
                 break;
             }
         }
     }
 }
 /**
  * Constructor
  * @param {integer} $prueba Prueba ID
  * @param {integer} $jornada Jormada ID
  * @param {integer} $manga Manga ID
  * @throws Exception
  */
 function __construct($prueba, $jornada, $manga)
 {
     parent::__construct('Portrait', "print_ordenDeSalida", $prueba, $jornada);
     if ($prueba <= 0 || $jornada <= 0 || $manga <= 0) {
         $this->errormsg = "printOrdenDeSalida: either prueba/jornada/ manga/orden data are invalid";
         throw new Exception($this->errormsg);
     }
     // Datos de la manga
     $m = new Mangas("printOrdenDeSalida", $jornada);
     $this->manga = $m->selectByID($manga);
     // Datos del orden de salida
     $o = new OrdenSalida("printOrdenDeSalida", $manga);
     $os = $o->getData();
     $this->orden = $os['rows'];
     $this->categoria = "L";
     $this->cellHeader = array(_('Order'), _('Dorsal'), _('Name'), _('Breed'), _('Lic'), _('Handler'), $this->strClub, _('Heat'), _('Comments'));
     // obtenemos los datos de equipos de la jornada indexados por el ID del equipo
     $eq = new Equipos("print_ordenDeSalida", $prueba, $jornada);
     $this->teams = array();
     foreach ($eq->getTeamsByJornada() as $team) {
         $this->teams[$team['ID']] = $team;
     }
 }
<?php

/*
clubFunctions.php

Copyright  2013-2016 by Juan Antonio Martinez ( juansgaviota at gmail dot com )

This program is free software; you can redistribute it and/or modify it under the terms 
of the GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
require_once __DIR__ . "/../server/logging.php";
require_once __DIR__ . "/../server/tools.php";
require_once __DIR__ . "/../server/database/classes/OrdenSalida.php";
$os = new OrdenSalida("reassign", 11);
$os->reassignDorsal();
Exemple #4
0
 /**
  * Obtiene $after+$before+1 perros ordenados segun el orden de salida
  * @param $perro ID de perro tomado como referencia
  *  if ID==0 means at begin of queue
  *  if ID<0 means at end of queue
  * @param $before numero de perros a buscar que hayan salido antes del de referencia
  * @param $after numero de perros a introducir que tengan que salir despues del de referencia
  */
 function videowall_windowCall($perro, $before, $after)
 {
     $this->myLogger->enter();
     $nitems = $before + $after + 1;
     // obtenemos listado ordenado de perros de la manga
     $osobj = new OrdenSalida("VideoWall-ng", $this->mangaid);
     $os = $osobj->getData(false);
     // omit inserting team info rows
     // obtenemos categoria y grado de la tanda
     $catstr = Tandas::$tipo_tanda[$this->tandatype]['Categoria'];
     // categoria
     $gradostr = Tandas::$tipo_tanda[$this->tandatype]['Grado'];
     // grado ("-" means any grade)
     // componemos un array de $before+1+$after perros
     $result = array();
     // reserve $before +1 empty slots before dog list
     for ($n = 0; $n < $before + 1; $n++) {
         array_unshift($result, $this->getEmptyData());
     }
     $found = -1;
     // add dog list, setting up starting orden
     $orden = 0;
     // if dog found, mark index
     foreach ($os['rows'] as &$item) {
         if (strstr($catstr, $item['Categoria']) === false) {
             continue;
         }
         // category does not match, ignore
         if ($gradostr !== '-' && $gradostr !== $item['Grado']) {
             continue;
         }
         // grade differs, ignore entry
         // same category and (if required) grade
         $orden++;
         $item['Orden'] = $orden;
         array_unshift($result, $item);
         // if item matches requested dog, cut
         if ($item['Perro'] == $perro) {
             $found = count($result) - 1;
         }
         if ($found <= 0) {
             continue;
         }
         // not yet found
         if (count($result) - $found > $after) {
             break;
         }
         // enought dogs; iteration no longer needed
     }
     // fill array with $after empty rows
     for ($n = 0; $n < $after; $n++) {
         array_unshift($result, $this->getEmptyData());
         // if dogID<0 means seek at end of list
         if ($perro >= 0) {
             continue;
         }
         if ($n != 0) {
             continue;
         }
         $found = count($result) - 1;
     }
     // if dog is not provided nor found, just assume default
     if ($found < 0) {
         $found = $before;
     }
     // and return 3 arrays:
     $res = array("before" => array_slice($result, -$found, $before), "current" => array_slice($result, -($found + 1), 1), "after" => array_slice($result, -($found + 1 + $after), $after));
     echo json_encode($res);
     return 0;
 }
Exemple #5
0
 function delete($id)
 {
     $this->myLogger->enter();
     $jornada = $this->jornadaID;
     if ($id < 0) {
         return $this->error("Equipos::delete():Invalid Equipo ID:{$id} provided");
     }
     // fase 1: buscamos datos del equipo a borrar
     $team = $this->__getArray("Equipos", $id);
     if (!is_array($team)) {
         return $this->error("Equipos::delete(): No encuentro el equipo {$id} en la lista de equipos de esta jornada");
     }
     // fase 2: comprobamos que no sea el equipo por defecto
     if (intval($team['DefaultTeam']) != 0) {
         return $this->error("Equipos::delete():Cannot delete default team for this Contest");
     }
     // fase 3: reasignamos los perros al equipo por defecto
     $dteam = $this->getDefaultTeam()['ID'];
     $res = $this->query("UPDATE Resultados SET Equipo={$dteam} WHERE (Equipo={$id})");
     if (!$res) {
         return $this->error($this->conn->error);
     }
     // fase 4: borramos el equipo del orden de salida de equipos de la manga
     $mng = $this->__select("*", "Mangas", "(Jornada={$jornada})", "", "");
     // list of mangas for this jornada
     foreach ($mng['rows'] as $manga) {
         $this->myLogger->trace("Eliminando el equipo:{$id} de Orden_Equipos jornada:{$jornada} manga:{$manga['ID']}");
         $osobj = new OrdenSalida("Equipos::remove", $manga['ID']);
         // add team to Orden_Equipos in every related mangas
         $osobj->removeFromTeamList($id);
     }
     // fase 5: finalmente borramos el equipo antiguo de la base de datos
     $res = $this->query("DELETE FROM Equipos WHERE (ID={$id})");
     if (!$res) {
         return $this->error($this->conn->error);
     }
     $this->myLogger->leave();
     return "";
 }
Exemple #6
0
 /**
  * Obtiene la lista ordenada de perros de esta jornada asociadas a la sesion, y tandas especificadas
  * @param {integer} $s session id.
  *    0: ANY sesion
  *    1: ANY BUT User defined sessions
  *   -1: User defined sessions
  *    n: Session number "n"
  *   -n: Session number "n" PLUS User defined sessions
  * @param {number} $t Tanda ID.
  *     $t=0; mira todos los perros de todas las tandas de la sesion indicada
  *     $t>0; mira SOLO los perros de la tanda
  *     $t<0; mira todos los perros A PARTIR DE la tanda (-$t)
  * @param {number} $pendientes Pendientes $p==0 -> muestra todos los perros; else muestra los $p primeros pendientes de salir
  */
 private function getListaPerros($s = 0, $t = 0, $pendientes = 0)
 {
     $count = $pendientes;
     // contador de perros pendientes de listar
     $manga = 0;
     // variable para controlar manga "activa"
     $perrosmanga = null;
     // {array} lista de perros ordenada segun ordensalida de la manga
     $do_iterate = false;
     // indica si debe analizar los perros de la tanda
     $rows = array();
     // donde iremos guardando los resultados
     $result = array();
     // resultado a devolver en formato json
     // obtenemos la lista de tandas
     $lista_tandas = $this->getTandas($s);
     $club = new Clubes("Tandas::getListaPerros", $this->prueba->RSCE);
     // iteramos la lista de tandas
     foreach ($lista_tandas['rows'] as $tanda) {
         $this->myLogger->info("Analizando tanda \n" . json_encode($tanda));
         // Comprobamos si debemos analizar la tanda
         if ($t > 0) {
             $do_iterate = $tanda['ID'] == abs($t) ? true : false;
         }
         // iterar solo la tanda
         if ($t < 0) {
             if ($tanda['ID'] == abs($t)) {
                 $do_iterate = true;
             }
         }
         // iterar a partir de la tanda
         if ($t == 0) {
             $do_iterate = true;
         }
         // iterar TODAS las tandas
         if (!$do_iterate) {
             continue;
         }
         // this tanda is not the one we are looking for
         if ($tanda['Manga'] == 0) {
             continue;
         }
         // user defined tandas, has no manga associated
         // comprobamos ahora si hay cambio de manga
         if ($manga != $tanda['Manga']) {
             // cambio de manga
             $manga = $tanda['Manga'];
             // en cada manga cogemos  los perros ordenados segun el orden de salida
             $os = new OrdenSalida("Tandas::getListaPerros()", $manga);
             $perrosmanga = $os->getData(false);
             // false: do not include extra team information rows
         }
         // OK ya tenemos la lista ordenada de los perros de cada manga
         // Ahora vamos a sacar la lista por cada tanda
         foreach ($perrosmanga['rows'] as &$perro) {
             // si el perro no pertenece a la tanda skip (comprobar categoria)
             if (strpos($tanda['Categoria'], $perro['Categoria']) === false) {
                 continue;
             }
             $perro['Tanda'] = $tanda['Nombre'];
             $perro['ID'] = $tanda['ID'];
             // replace resultadoID por tandaID TODO: revise why
             if ($pendientes == 0) {
                 // include all
                 $perro['LogoClub'] = $club->getLogoName('NombreClub', $perro['NombreClub']);
                 array_push($rows, $perro);
                 continue;
             }
             if ($perro['Pendiente'] == 0) {
                 continue;
             }
             // not pendiente: skip
             if ($count > 0) {
                 // not yet at count: insert
                 $count--;
                 $perro['LogoClub'] = $club->getLogoName('NombreClub', $perro['NombreClub']);
                 array_push($rows, $perro);
                 continue;
             }
             // arriving here means that every requested dogs are filled
             $this->myLogger->debug("Tandas::getListaPerros() Already have {$pendientes} dogs");
             // so return
             $result['rows'] = $rows;
             $result['total'] = count($rows);
             $this->myLogger->leave();
             return $result;
         }
         // no more dogs in this tanda. go to next
     }
     $result['rows'] = $rows;
     $result['total'] = count($rows);
     $this->myLogger->leave();
     return $result;
 }
                    break;
            }
            $rowcount++;
            $orden++;
        }
        // Línea de cierre
        $this->Cell(array_sum($this->pos), 0, '', 'T');
        $this->myLogger->leave();
    }
}
// Consultamos la base de datos
try {
    $prueba = http_request("Prueba", "i", 0);
    $jornada = http_request("Jornada", "i", 0);
    $manga = http_request("Manga", "i", 0);
    $mode = http_request("Mode", "i", 0);
    // Datos de la manga y su manga hermana
    $m = new Mangas("printEntradaDeDatos", $jornada);
    $mangas = $m->getHermanas($manga);
    // Datos del orden de salida
    $o = new OrdenSalida("printEntradaDeDatos", $manga);
    $orden = $o->getData();
    // Creamos generador de documento
    $pdf = new EntradaDeDatos($prueba, $jornada, $mangas, $orden['rows'], $mode);
    $pdf->AliasNbPages();
    $pdf->composeTable();
    $pdf->Output("entradaDeDatos.pdf", "D");
    // "D" means open download dialog
} catch (Exception $e) {
    die("Error accessing database: " . $e->getMessage());
}
 $p = http_request("Prueba", "i", 0);
 $j = http_request("Jornada", "i", 0);
 $m = http_request("Manga", "i", 0);
 $d = http_request("Perro", "i", 0);
 // los siguiente campos se usan para drag and drop
 $f = http_request("From", "i", 0);
 $t = http_request("To", "i", 0);
 $w = http_request("Where", "i", 0);
 $tv = http_request("TeamView", "b", false);
 $team = http_request("Equipo", "i", 0);
 $mode = http_request("Mode", "i", 8);
 // sort everything LMST by default
 if ($p <= 0 || $j <= 0 || $m <= 0) {
     throw new Exception("Call to ordenSalidaFunctions with Invalid Prueba:{$p} Jornada:{$j} or manga:{$m} ID");
 }
 $os = new OrdenSalida($file, $m);
 switch ($operation) {
     case "random":
         $am->access(PERMS_OPERATOR);
         $result = $os->random($mode);
         break;
     case "reverse":
         $am->access(PERMS_OPERATOR);
         $result = $os->reverse($mode);
         break;
     case "sameorder":
         $am->access(PERMS_OPERATOR);
         $result = $os->sameorder($mode);
         break;
     case "getData":
         $result = $os->getData($tv);
/**
 * Comprueba y actualiza las referencias de una inscripcion en una jornada
 * @param {object} $inscripcion Datos de la inscripcion
 * @param {object} $jornada Datos de la jornada
 * @param {object} $perro Datos del perro
 */
function inscribePerroEnJornada($inscripcion, $jornada, $perro)
{
    $myConfig = Config::getInstance();
    $myLogger = new Logger("inscribePerroEnJornada", $myConfig->getEnv("debug_level"));
    $j = $jornada['ID'];
    $p = $jornada['Prueba'];
    $idperro = $inscripcion['Perro'];
    $g = $perro['Grado'];
    // buscamos la lista de mangas de esta jornada
    $mobj = new Mangas("inscribePerroEnJornada", $jornada['ID']);
    $mangas = $mobj->selectByJornada();
    if (!$mangas) {
        throw new Exception("No hay mangas definidas para la jornada {$j} de la prueba {$p}");
    }
    foreach ($mangas['rows'] as $manga) {
        $mid = $manga['ID'];
        $mtype = $manga['Tipo'];
        $mgrado = $manga['Grado'];
        $inscribir = false;
        // comprobamos si el perro tiene que estar en esta manga
        switch ($mtype) {
            case 1:
                //  'Pre Agility Manga 1', 'P.A.'
                if ($g === 'P.A.') {
                    $inscribir = true;
                }
                break;
            case 2:
                // 'Pre Agility Manga 2', 'P.A.'
                if ($g === 'P.A.') {
                    $inscribir = true;
                }
                break;
            case 3:
                // 'Agility Grado I Manga 1', 'GI'
            // 'Agility Grado I Manga 1', 'GI'
            case 4:
                // 'Agility Grado I Manga 2', 'GI'
                if ($g === 'GI') {
                    $inscribir = true;
                }
                break;
            case 5:
                // 'Agility Grado II', 'GII'
                if ($g === 'GII') {
                    $inscribir = true;
                }
                break;
            case 6:
                // 'Agility Grado III', 'GIII'
                if ($g === 'GIII') {
                    $inscribir = true;
                }
                break;
            case 7:
                // 'Agility Abierta', '-'
            // 'Agility Abierta', '-'
            case 8:
                // 'Agility Equipos (3 mejores)', '-'
            // 'Agility Equipos (3 mejores)', '-'
            case 9:
                // 'Agility Equipos (Conjunta)', '-'
                $inscribir = true;
                break;
            case 10:
                // 'Jumping Grado II', 'GII'
                if ($g === 'GII') {
                    $inscribir = true;
                }
                break;
            case 11:
                // 'Jumping Grado III', 'GIII'
                if ($g === 'GIII') {
                    $inscribir = true;
                }
                break;
            case 12:
                // 'Jumping Abierta', '-'
            // 'Jumping Abierta', '-'
            case 13:
                // 'Jumping Equipos (3 mejores)', '-'
            // 'Jumping Equipos (3 mejores)', '-'
            case 14:
                // 'Jumping Equipos (Conjunta)', '-'
            // 'Jumping Equipos (Conjunta)', '-'
            case 15:
                // 'Ronda K.O.', '-'
            // 'Ronda K.O.', '-'
            case 16:
                // 'Manga especial', '-'
                $inscribir = true;
                break;
            default:
                throw new Exception("Tipo de manga {$mtype} desconocido. Manga:{$mid} Jornada:{$j} Prueba:{$p}");
                break;
        }
        // Verificamos el orden de salida de la manga
        $os = new OrdenSalida("inscribePerroEnJornada", $manga['ID']);
        $orden = $os->getOrden();
        $myLogger->info("OrdenDeSalida Prueba:{$p} Jornada:{$j} Manga:{$mid} Tipo:{$mtype} Grado:{$mgrado} es:\n{$orden}");
        if ($inscribir == false) {
            $myLogger->info("Eliminando Perro:{$idperro} Grado:{$g} del orden de salida grado:{$mgrado}");
            $os->removeFromList($idperro);
        } else {
            $myLogger->info("Insertando Perro:{$idperro} Grado:{$g} en del orden de salida gradp:{$mgrado}");
            $os->insertIntoList($idperro);
        }
        $orden = $os->getOrden();
        $myLogger->info("Nuevo OrdenDeSalidada: \n{$orden}");
        // verificamos la tabla de resultados de esta manga
        $rs = new Resultados("inscribePerroEnJornada::Resultados", $jornada['Prueba'], $mid);
        if ($inscribir == false) {
            $myLogger->info("Borrando Perro:{$idperro} Grado:{$g} de Resultados manga:{$mid}");
            // borramos entrada del perro en la tabla de resultados de la manga
            $rs->delete($idperro);
        } else {
            $eqobj = new Equipos("inscribePerroEnJornada", $p, $j);
            // nos aseguramos de que existe una entrada
            $myLogger->info("Insertando Perro:{$idperro} Grado:{$g} en Resultados manga:{$mid}");
            // en la tabla de resultados de esta manga para este perro
            $res = $rs->insertByData($perro, $inscripcion, $eqobj->getTeamByPerro($idperro));
            if ($res !== "") {
                // esta funcion es in "insert on duplicate key update"...
                // no deberia fallar si ya existe una entrada en la tabla de resultados
                $myLogger->error("Failed: Insert into Resultados perro:{$idperro} Prueba:{$p} Jornada:{$j} Manga:{$mid}");
                $myLogger->error($res);
            }
        }
    }
    /* foreach */
}