예제 #1
0
/**
 * Funcion de procesado de inscripciones
 * revisa la inscripcion
 * ajusta orden de salida
 * crea entradas en tabla de resultados
 * @param {integer} $p ID de prueba
 * @param {integer} $i ID de inscripcion
 */
function procesaInscripcion($p, $i)
{
    $myConfig = Config::getInstance();
    $myLogger = new Logger("procesaInscripcion", $myConfig->getEnv("debug_level"));
    $am = new AuthManager("procesaInscripcion");
    // si la prueba o la inscripcion son nulas genera error
    try {
        if ($p <= 0) {
            throw new Exception("ID de prueba invalida: {$p}");
        }
        if ($i <= 0) {
            throw new Exception("ID de inscripcion invalida");
        }
        $am->access(PERMS_OPERATOR);
        // grant access or throw exception
        // buscamos las jornadas de que consta la Prueba
        $jobject = new Jornadas("procesaInscripcion", $p);
        $jp = $jobject->searchByPrueba();
        if (!$jp) {
            throw new Exception("No encuentro jornadas para la prueba: {$p}");
        }
        // buscamos las jornadas en las que esta inscrito
        $iobject = new Inscripciones("procesaInscripcion", $p);
        $inscripcion = $iobject->selectByID($i);
        if (!$inscripcion) {
            throw new Exception("No encuentro la inscripcion con ID: {$i}");
        }
        $idp = $inscripcion['Perro'];
        // obtenemos los datos del perro
        $pobj = new Dogs("procesaInscripcion()");
        $perro = $pobj->selectByID($idp);
        if (!$perro) {
            throw new Exception("No hay datos para el perro a inscribir con id: {$idp}");
        }
        // TODO: check Dog Federation against Prueba Federation
        // contrastamos la lista de jornadas de la prueba con la lista de jornadas en las que esta inscrito
        foreach ($jp['rows'] as $jornada) {
            $numj = $jornada['Numero'] - 1;
            // obtenemos el numero de jornada
            $idj = $jornada['ID'];
            if ($jornada['Cerrada'] == 1) {
                $myLogger->info("La jornada {$idj} de la prueba {$p} esta cerrada");
                continue;
                // no tocamos las jornadas cerradas
            }
            if (($inscripcion['Jornadas'] & 1 << $numj) != 0) {
                $myLogger->info("El perro {$idp} esta inscrito en la jornada {$idj} de la prueba {$p}");
                inscribePerroEnJornada($inscripcion, $jornada, $perro);
            } else {
                $myLogger->info("El perro {$idp} NO esta inscrito en la jornada {$idj} de la prueba {$p}");
                borraPerroDeJornada($inscripcion, $jornada, $perro);
            }
        }
    } catch (Exception $e) {
        do_log($e->getMessage());
        echo json_encode(array('errorMsg' => $e->getMessage()));
    }
}
예제 #2
0
 /**
  * retrieve all inscriptions of stored prueba and jornada
  * @param {int} $jornadaID ID de jornada
  * @param {boolean} $pagination: use http_request to retrieve page and rows (true) or disable it(false)
  */
 function inscritosByJornada($jornadaID, $pagination = true)
 {
     $this->myLogger->enter();
     $pruebaid = $this->pruebaID;
     // Cogemos la lista de jornadas abiertas de esta prueba
     $j = new Jornadas("inscripciones::inscritosByJornada()", $this->pruebaID);
     $jornadas = $j->searchByPrueba(1, 1);
     // allowClosed=1, hideUnassigned=1
     if ($jornadas === null || $jornadas === "") {
         return $this->error("{$this->file}::updateOrdenSalida() cannot get list of open Jornadas for prueba:" . $this->pruebaID);
     }
     // por cada jornada abierta, miramos a ver si la ID coincide con la que buscamos
     $mask = 0;
     foreach ($jornadas["rows"] as $jornada) {
         if ($jornada['ID'] == $jornadaID) {
             $mask = 1 << $jornada['Numero'] - 1;
         }
         // 1..8
     }
     if ($mask == 0) {
         return $this->error("{$this->file}::inscritosByJornada() cannot find open Jornada ID: {$jornadaID} in prueba:" . $this->pruebaID);
     }
     $limit = "";
     if ($pagination) {
         $page = http_request("page", "i", 1);
         $rows = http_request("rows", "i", 50);
         if ($page != 0 && $rows != 0) {
             $offset = ($page - 1) * $rows;
             $limit = $offset . "," . $rows;
         }
     }
     // obtenemos la lista de perros inscritos con sus datos
     $result = $this->__select("Inscripciones.ID AS ID, Inscripciones.Prueba AS Prueba, Inscripciones.Perro AS Perro, Raza,\n\t\t\t\tDorsal, PerroGuiaClub.Nombre AS Nombre, PerroGuiaClub.NombreLargo AS NombreLargo,  Genero, Raza, Licencia, LOE_RRC, Categoria, Grado, Celo, Guia, Club, Pais, LogoClub,\n\t\t\t\tNombreGuia, NombreClub,\tInscripciones.Observaciones AS Observaciones, Jornadas, Pagado", "Inscripciones,PerroGuiaClub", "( Inscripciones.Perro = PerroGuiaClub.ID) AND\n\t\t\t\t( Inscripciones.Prueba={$pruebaid} ) AND ( ( Inscripciones.Jornadas&{$mask} ) != 0 ) ", "NombreClub ASC, Categoria ASC , Grado ASC, Nombre ASC, Celo ASC", $limit);
     $this->myLogger->leave();
     return $result;
 }
예제 #3
0
 case "close":
     $am->access(PERMS_OPERATOR);
     $result = $jornadas->close($jornadaid);
     break;
 case "update":
     $am->access(PERMS_OPERATOR);
     $result = $jornadas->update($jornadaid);
     break;
 case "select":
     $result = $jornadas->selectByPrueba();
     break;
 case "getbyid":
     $result = $jornadas->selectByID($jornadaid);
     break;
 case "enumerate":
     $result = $jornadas->searchByPrueba($allowClosed, $hideUnassigned);
     break;
 case "rounds":
     $result = $jornadas->roundsByJornada($jornadaid);
     break;
 case "enumerateMangasByJornada":
     $result = Jornadas::enumerateMangasByJornada($jornadaid);
     break;
 case "enumerateRondasByJornada":
     $result = Jornadas::enumerateRondasByJornada($jornadaid);
     break;
 case "access":
     $result = $jornadas->checkAccess($am, $jornadaid, $perms);
     break;
 default:
     throw new Exception("jornadaFunctions:: invalid operation: {$operation} provided");