Ejemplo n.º 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()));
    }
}