Exemplo n.º 1
0
 /**
  * Calcula el orden de salida de una manga en funcion del orden inverso al resultado de su manga "hermana"
  * @return {string} nuevo orden de salida; null on error
  */
 function reverse($mode = 8)
 {
     $this->myLogger->enter();
     // fase 1: buscamos la "manga hermana"
     $mhandler = new Mangas("OrdenSalida::reverse()", $this->jornada['ID']);
     $hermanas = $mhandler->getHermanas($this->manga['ID']);
     if (!is_array($hermanas)) {
         return $this->error("Error find hermanas info for jornada:{$this->jornada['ID']} and manga:{$this->manga['ID']}");
     }
     if ($hermanas[1] == null) {
         return $this->error("Cannot reverse order: Manga:{$this->manga['ID']} of Jornada:{$this->jornada['ID']} has no brother");
     }
     // fase 2: evaluamos resultados de la manga hermana
     $this->myLogger->trace("El orden de salida original para manga:{$this->manga['ID']} jornada:{$this->jornada['ID']} es:\n{$hermanas[0]->Orden_Salida}");
     // En funcion del tipo de recorrido tendremos que leer diversos conjuntos de Resultados
     switch ($hermanas[0]->Recorrido) {
         case 0:
             // Large,medium,small (3-heighs) Large,medium,small,tiny (4-heights)
             $this->invierteResultados($hermanas[1], 0);
             $this->invierteResultados($hermanas[1], 1);
             $this->invierteResultados($hermanas[1], 2);
             if ($this->federation->get('Heights') == 4) {
                 $this->invierteResultados($hermanas[1], 5);
             }
             break;
         case 1:
             // Large,medium+small (3heights) Large+medium,Small+tiny (4heights)
             if ($this->federation->get('Heights') == 3) {
                 $this->invierteResultados($hermanas[1], 0);
                 $this->invierteResultados($hermanas[1], 3);
             } else {
                 $this->invierteResultados($hermanas[1], 6);
                 $this->invierteResultados($hermanas[1], 7);
             }
             break;
         case 2:
             // conjunta L+M+S (3 heights) L+M+S+T (4heights)
             if ($this->federation->get('Heights') == 3) {
                 $this->invierteResultados($hermanas[1], 4);
             } else {
                 $this->invierteResultados($hermanas[1], 8);
             }
             break;
     }
     $nuevo = $this->getOrden();
     $this->myLogger->trace("El orden de salida nuevo para manga:{$this->manga['ID']} jornada:{$this->jornada['ID']} es:\n{$nuevo}");
     $this->myLogger->leave();
     return $nuevo;
 }
Exemplo n.º 2
0
 /**
  * Evalua el puesto en que ha quedado un perro determinado en la clasificacion final
  * hay que tener en cuenta que en esta clasificacion, el perro en cuestion todavia
  * no tiene los datos de (al menos) una manga almacenados, con lo que si nos lo encontramos,
  * habrá que quitar "1 pendiente" y substituirlo por los datos que tenemos
  *
  * Esta funcion no tiene en cuenta pruebas por equipos ni ko. simplemente considera las dos primeras
  * mangas (o solo la primera, si no hay manga hermana
  *
  *@param {integer} $mode Modo 0:L 1:M 2:S 3:M+S 4:L+M+S 5:T 6:L+M 7:S+T 8:L+M+S+T
  *@param {array} $perro datos del perro (Perro,Faltas,Tocados,Rehuses,Eliminado,NoPresentado,Tiempo,IDManga)
  *@return {array} requested data or error
  */
 function getPuestoFinal($mode, $perro)
 {
     $result = null;
     $myManga = $perro['Manga'];
     // buscamos la manga hermana
     $mng = new Mangas("getPuestoFinal", $this->jornada->ID);
     $hermanas = $mng->getHermanas($myManga);
     $id1 = intval($hermanas[0]->ID);
     $id2 = 0;
     $r1 = new Resultados("Clasificaciones::getPuestoFinal", $this->prueba->ID, $id1);
     $c1 = $r1->getPenalizaciones($mode, $myManga == $id1 ? $perro : null);
     $c2 = null;
     if ($hermanas[1] != null) {
         $id2 = intval($hermanas[1]->ID);
         $r2 = new Resultados("Clasificaciones::getPuestoFinal", $this->prueba->ID, $id2);
         $c2 = $r2->getPenalizaciones($mode, $myManga == $id2 ? $perro : null);
     }
     $result = $this->evalPenalizacionFinal(array($id1, $id2), $c1, $c2);
     if ($result == null) {
         return null;
     }
     // null result -> error
     if (!is_array($result)) {
         $this->myLogger->error($result);
         return $result;
     }
     // iterate result to find our dog
     $table = $result['rows'];
     $size = $result['total'];
     $idperro = intval($perro['Perro']);
     // en el caso de que todavia no haya clasificaciones, la tabla esta vacia y nuestro perro va el primero :-)
     if ($size == 0) {
         return array('success' => true, 'puesto' => 1, 'penalizacion' => 0);
     }
     // buscamos el puesto en el que finalmente ha quedado $myPerro y lo retornamos
     for ($idx = 0; $idx < $size; $idx++) {
         if ($table[$idx]['Perro'] != $idperro) {
             continue;
         }
         return array('success' => true, 'puesto' => 1 + $idx, 'penalizacion' => $table[$idx]['Penalizacion']);
     }
     //arriving here means error: perro not found
     return $this->error("Perro:{$idperro} not found in clasificaciones::getPuesto()");
 }
                    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());
}