コード例 #1
0
function CalificarInvitacion()
{
    session_start();
    if (!isset($_SESSION['Usuario'])) {
        Respoder(false, 'Debe iniciar sesión', null);
    }
    if ($_SESSION['Usuario']['tipo'] != 'B') {
        Respoder(false, 'No tiene autorización', null);
    }
    $Invitacion = new Invitacion();
    $Respuestas;
    $Puntajes;
    if (!(($Invitacion->idInvitacion = filter_input(INPUT_POST, 'idInvitacion', FILTER_VALIDATE_INT)) && ($Puntajes = filter_input(INPUT_POST, 'respuestas')))) {
        Respoder(false, 'Error al recibir parámetros', null);
    }
    $Puntajes = json_decode($Puntajes);
    if (is_null($Puntajes)) {
        Respoder(false, 'Error de JSON', 'No se pudo procesar el JSON recibido');
    }
    if (!$Invitacion->get('idInvitacion', $Invitacion->idInvitacion)) {
        Respoder(false, 'No se encontró la invitacion', '');
    }
    $Respuestas = (new Respuesta())->search($Invitacion->idInvitacion);
    if (count($Puntajes) != count($Respuestas)) {
        Respoder(false, 'Cantidades incorrectas', '', $Respuestas);
    }
    $rpp = array();
    foreach ($Puntajes as $keyPunt => $valPunt) {
        $encon = false;
        foreach ($Respuestas as $keyResp => $valResp) {
            if ($valResp->idRespuesta == $valPunt->idRespuesta) {
                $encon = true;
                $valResp->puntaje = $valPunt->puntaje;
                array_push($rpp, $valResp);
                break;
            }
        }
        if (!$encon) {
            Respoder(false, 'No se encontró idRespuesta: ' . $keyPunt, '');
        }
    }
    $acum = 0;
    foreach ($rpp as $key => $value) {
        $acum += $value->puntaje;
        if (!$value->edit()) {
            Respoder(false, 'Error al actualizar Rpta: ' . $value->idRespuesta, '', $value);
        }
    }
    $Invitacion->evaluado = true;
    $Invitacion->puntaje = $acum / count($Respuestas);
    $Invitacion->fchEval = new DateTime();
    if ($Invitacion->edit()) {
        Respoder(true, 'Respuestas calificadas', '');
    } else {
        Respoder(false, 'Error al actualizar invitacion: ', '');
    }
}