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: ', ''); } }