public function finalizar() { if (!$this->input->is_ajax_request()) { show_404(); } set_json_header(); try { $avaliacao = $this->_avaliacaoDao->recuperar($this->input->post('avaliacaoId')); $participacaoCurso = $this->_participacaoCursoDao->recuperarPorCurso($this->_alunoAtual, $avaliacao->getModulo()->getCurso()); $controleAvaliacao = $this->_controleAvaliacaoDao->recuperarPorParticipacao($participacaoCurso, $avaliacao); $alternativasEscolhidas = $this->input->post('alternativaEscolhida'); $idsRespostas = array(); if ($alternativasEscolhidas) { foreach ($alternativasEscolhidas as $idAlternativa) { $idsRespostas[] = UUID::import($idAlternativa)->bytes; } } $respostas = $this->_alternativaAvaliacaoDao->recuperarTodosPorUUIDs($idsRespostas); $controleAvaliacao->setRespostas($respostas); $controleAvaliacao->setTempoDecorrido(round($avaliacao->getTempoDuracaoMax() - (double) $this->input->post('tempoDeProva'), 2)); $controleAvaliacao->setDataAplicacao(time()); $controleAvaliacao->calcularResultados(); if ($controleAvaliacao->isStatusFinalizada() || $controleAvaliacao->isStatusDesativada()) { $participacaoCurso->atualizarCR($controleAvaliacao->getNota(), $avaliacao->getModulo()->getNroOrdem() === 1); } if ($controleAvaliacao->isSituacaoAprovado()) { $this->_registrarAprovacaoEmAvaliacao($participacaoCurso, $avaliacao); } $response = Zend_Json::encode(array('htmlMsgResultado' => $this->template->loadPartial('msg_resultado_avaliacao', array('controleAvaliacao' => $controleAvaliacao), 'curso/conteudo/aplicacao_avaliacao'))); //Salvando depois da exibicao da msg pra evitar um possivel bug do php. $this->_controleAvaliacaoDao->salvar($controleAvaliacao); $json = create_json_feedback(true, '', $response); } catch (Exception $e) { log_message('error', 'Ocorreu um erro ao tentar finalizar aplicação de avaliação: ' . create_exception_description($e)); $error = create_json_feedback_error_json('Ocorreu um erro inesperado, já estamos tentando resolver. Tente novamente mais tarde!'); $json = create_json_feedback(false, $error); } echo $json; }
private function _virarModulo(WeLearn_Cursos_ParticipacaoCurso &$participacaoCurso, WeLearn_Cursos_Conteudo_Modulo $moduloAnterior) { $this->_participacaoCursoDao->getControleModuloDAO()->finalizar($participacaoCurso, $moduloAnterior); try { $avaliacao = $this->_avaliacaoDao->recuperar($moduloAnterior->getId()); if ($avaliacao->getQtdQuestoesExibir() > 0) { try { $controleAvaliacao = $this->_controleAvaliacaoDao->recuperarPorParticipacao($participacaoCurso, $avaliacao); } catch (cassandra_NotFoundException $e) { $controleAvaliacao = new WeLearn_Cursos_Avaliacoes_ControleAvaliacao(); $controleAvaliacao->setParticipacaoCurso($participacaoCurso); $controleAvaliacao->setAvaliacao($avaliacao); $this->_controleAvaliacaoDao->salvar($controleAvaliacao); } if ($controleAvaliacao->isStatusFinalizada() && $controleAvaliacao->isSituacaoAprovado()) { return $this->_retornarJSONProximoModulo($participacaoCurso, $moduloAnterior); } elseif ($controleAvaliacao->isStatusBloqueada()) { $error = create_json_feedback_error_json('Para acessar o conteúdo do módulo seguinte, você precisa primeiro ser aprovado na avaliação do módulo em que está. Por favor, refaça a avaliação quando ela estiver disponível.'); return create_json_feedback(false, $error); } elseif ($controleAvaliacao->isStatusDesativada()) { $error = create_json_feedback_error_json('Você foi reprovado muitas vezes na avaliação deste módulo, você não poderá mais avançar no curso.'); return create_json_feedback(false, $error); } else { return $this->_retornarJSONAvaliacao($participacaoCurso, $avaliacao); } } else { $error = create_json_feedback_error_json('Este módulo possui uma avaliação, mas ela não está ativa. Você só poderá avançar no curso quando esta avaliação for ativada ou removida. Contate os Gerenciadores do Curso.'); return create_json_feedback(false, $error); } } catch (cassandra_NotFoundException $e) { return $this->_retornarJSONProximoModulo($participacaoCurso, $moduloAnterior); } }