public function selecionaPerguntas(Prova $prova){ $banco = $this->getBancoDados(); $sessionFacade = new SessionFacade($banco); /* $ppt = $prova->getNumeroPerguntas() / $prova->getQtdeTopico(); $ppt = number_format($ppt,0); if ($ppt < 1 ){ $ppt = 1; } $topicos = array(); $lista_topicos = array(); for ($i=0; $i<$prova->getQtdeTopico();$i++){ array_push($lista_topicos,$prova->getTopico($i)->getId()); } $topicos = $sessionFacade->recuperarPerguntaTopicoOrdenadoDAO($lista_topicos); for ($i=0; $i<count($topicos);$i++){ echo "<br>Tópico: ".$topicos[$i][0]->getDescricao()." / Qtde Perguntas: ".$topicos[$i][1]; $perguntas = $sessionFacade->recuperarPerguntaTopicoDAO($prova->getTopico($i), $prova->getDificuldade()); for ($j=0; $j<count($perguntas);$j++){ $prova->addPergunta($perguntas[$j]); echo "<br>Pergunta: ".$perguntas[$j]->getTitulo(); } } */ $qtde_por_vez = 1; $sem_pergunta = 1; $perguntas_inseridas = array(); $x_qtde_perguntas = $prova->getNumeroPerguntas(); $qtde_perguntas = $prova->getNumeroPerguntas(); while ($qtde_perguntas > 0 AND $sem_pergunta > 0){ $sem_pergunta = 0; for ($i=0; $i<$prova->getQtdeTopico();$i++){ #echo "<br>Tópico: ".$prova->getTopico($i)->getDescricao(); $perguntas = $sessionFacade->recuperarPerguntaTopicoDAO($prova->getTopico($i), $prova->getDificuldade(), $qtde_por_vez, $perguntas_inseridas); for ($j=0; $j<count($perguntas); $j++ ) { $perg = $perguntas[$j]; if ($qtde_perguntas>0){ $perg_aux = new ProvaPergunta(); $perg_aux->setTopico($perg->getTopico()); $perg_aux->setTipoPergunta($perg->getTipoPergunta()); $perg_aux->setTitulo($perg->getTitulo()); $perg_aux->setDificuldade($perg->getDificuldade()); $perg_aux->setFonte($perg->getFonte()); $perg_aux->setPeso( round(10 / $x_qtde_perguntas, 2)); $perg_aux->setPerguntaOrigem($perg->getId()); #echo "Qtde: ".$perg->getQtdeResposta(); for ($w=0;$w<$perg->getQtdeResposta();$w++){ $perg->getResposta($w)->setId(NULL); if (is_object($perg->getResposta($w)->getRespostaFilho())) { $perg->getResposta($w)->getRespostaFilho()->setId(NULL); } $perg_aux->addResposta($perg->getResposta($w)); } $prova->addPergunta($perg_aux); array_push($perguntas_inseridas,$perguntas[$j]->getId()); $qtde_perguntas--; $sem_pergunta++; } #echo "<br>Pergunta: ".$perguntas[0]->getTitulo(); #echo "<hr>"; } } } }
public function recuperarProvaPerguntaRespondida(Prova $prova, Aluno $aluno){ $query ="SELECT tbl_prova_pergunta.prova_pergunta AS prova_pergunta, tbl_prova_pergunta.topico AS topico, tbl_prova_pergunta.tipo_pergunta AS tipo_pergunta, tbl_prova_pergunta.titulo AS titulo, tbl_prova_pergunta.dificuldade AS dificuldade, tbl_prova_pergunta.fonte AS fonte, tbl_prova_pergunta.peso AS peso, tbl_prova_pergunta.pergunta_origem AS pergunta_origem FROM tbl_prova_pergunta WHERE tbl_prova_pergunta.prova_pergunta = $id_pergunta "; $banco = $this->getBancoDados(); $pergunta = NULL; $retorno = $banco->executaSQL($query); if($retorno != NULL) { if ($banco->numRows($retorno) == 0){ throw new Exception("Nenhuma pergunta encontrado.",0); } while($linha = $banco->fetchArray($retorno)) { $sessionFacade = new SessionFacade($banco); $obj_topico = $sessionFacade->recuperarTopico($linha["topico"]); $obj_tipo_pergunta = $sessionFacade->recuperarTipoPergunta($linha["tipo_pergunta"]); $pergunta = new ProvaPergunta(); $pergunta->setId($linha['prova_pergunta']); $pergunta->setTopico($obj_topico); $pergunta->setTipoPergunta($obj_tipo_pergunta); $pergunta->setTitulo($linha["titulo"]); $pergunta->setDificuldade($linha["dificuldade"]); $pergunta->setFonte($linha["fonte"]); $pergunta->setPeso($linha["peso"]); $pergunta->setPerguntaOrigem($linha["pergunta_origem"]); $query ="SELECT tbl_prova_resposta.prova_resposta AS prova_resposta, tbl_prova_resposta.prova_pergunta AS prova_pergunta, tbl_prova_resposta.resposta_texto AS resposta_texto, tbl_prova_resposta.resposta_correta AS resposta_correta, tbl_prova_resposta.resposta_filho AS resposta_filho FROM tbl_prova_resposta JOIN tbl_prova_pergunta USING(prova_pergunta) WHERE tbl_prova_pergunta.prova_pergunta = $id_pergunta"; if ($obj_tipo_pergunta->getId()=="4" OR $obj_tipo_pergunta->getId()=="5"){ $query .= " AND tbl_resposta.resposta_filho IS NOT NULL "; } $resposta_item = NULL; $retorno_item = $banco->executaSQL($query); if($retorno_item != NULL) { while($linha_item = $banco->fetchArray($retorno_item)) { $resposta_item = $sessionFacade->recuperarProvaResposta($linha_item["prova_resposta"]); $pergunta->addResposta($resposta_item); } } } return $pergunta; } else { throw new Exception("Erro ao recuperar ProvaPergunta ($query)"); } }
if ( is_object($perg)){ $perg->setPeso($peso); $prov->addPergunta($perg); $qtde_pergunta_prova++; } }elseif (strlen($pergunta)>0){ $perg = NULL; $perg = $sessionFacade->recuperarPergunta($pergunta); if ( is_object($perg)){ $perg_aux = new ProvaPergunta(); $perg_aux->setTopico($perg->getTopico()); $perg_aux->setTipoPergunta($perg->getTipoPergunta()); $perg_aux->setTitulo($perg->getTitulo()); $perg_aux->setDificuldade($perg->getDificuldade()); $perg_aux->setFonte($perg->getFonte()); $perg_aux->setPeso($peso); $perg_aux->setPerguntaOrigem($perg->getId()); for ($j=0;$j<$perg->getQtdeResposta();$j++){ $perg->getResposta($j)->setId(NULL); if (is_object($perg->getResposta($j)->getRespostaFilho())) { $perg->getResposta($j)->getRespostaFilho()->setId(NULL); } $perg_aux->addResposta($perg->getResposta($j)); /* $resposta_filho = new Resposta(); $resposta_filho->setId($resposta); #$resposta_filho->setPergunta($perg); $resposta_filho->setRespostaTexto($resposta_texto_filho); $resposta_filho->setRespostaCorreta($resposta_correta);
function gravarProvaPergunta(ProvaPergunta $prova_pergunta){ if (strlen($prova_pergunta->getTitulo())==0){ throw new Exception('Informe o título da pergunta!'); }else{ $prova_pergunta->Xtitulo = "'".$prova_pergunta->getTitulo()."'"; } if (!is_object($prova_pergunta->getTipoPergunta())){ throw new Exception('Informe o tipo da pergunta!'); }else{ $prova_pergunta->Xtipo_pergunta = $prova_pergunta->getTipoPergunta()->getId(); } if (!is_object($prova_pergunta->getTopico())){ throw new Exception('Informe o tópico da pergunta!'); }else{ $prova_pergunta->Xtopico = $prova_pergunta->getTopico()->getId(); } if (strlen($prova_pergunta->getDificuldade())==0){ throw new Exception('Selecione a dificuldade da perguta!'); }else{ $prova_pergunta->Xdificuldade = $prova_pergunta->getDificuldade(); } if (strlen($prova_pergunta->getFonte())==0){ $prova_pergunta->Xfonte = " NULL "; }else{ $prova_pergunta->Xfonte = "'".$prova_pergunta->getFonte()."'"; } if (strlen($prova_pergunta->getPeso())==0){ $prova_pergunta->Xpeso = " NULL "; }else{ $prova_pergunta->setPeso( str_replace(",",".",$prova_pergunta->getPeso()) ); $prova_pergunta->Xpeso = $prova_pergunta->getPeso(); } if (strlen($prova_pergunta->getPerguntaOrigem())==0){ throw new Exception('Qual origem desta pergunta?'); }else{ $prova_pergunta->Xpergunta_origem = $prova_pergunta->getPerguntaOrigem(); } if (strlen($prova_pergunta->getProvaId())==0){ throw new Exception('Problema ao identificar a oritem da prova. Tente novamente.'); }else{ $prova_pergunta->Xprova_id = $prova_pergunta->getProvaId(); } $provaPerguntaDAO = new ProvaPerguntaDAO(); $provaPerguntaDAO->setBancoDados($this->banco); $provaPerguntaDAO->gravaDadosProvaPergunta($prova_pergunta); #echo "<br><br>Pergunta: (".$prova_pergunta->getPerguntaOrigem().")"; #echo "<br>Qtde Respostas: ".$prova_pergunta->getQtdeResposta(); /* if ( $prova_pergunta->getPerguntaOrigem() == '3'){ echo "<br><br>"; print_r( $prova_pergunta->getResposta(0) ); echo "<br><br>"; print_r( $prova_pergunta->getResposta(1) ); echo "<br><br>"; print_r( $prova_pergunta->getResposta(2) ); echo "<br><br>"; print_r( $prova_pergunta->getResposta(3) ); echo "<br><br>"; print_r( $prova_pergunta->getResposta(4) ); echo "<br><br>"; } */ for ($i=0;$i<$prova_pergunta->getQtdeResposta();$i++){ $prova_pergunta->getResposta($i)->setPergunta($prova_pergunta->getId()); if (is_object($prova_pergunta->getResposta($i)->getRespostaFilho())) { $resposta_filho = new Resposta(); $resposta_filho->setId($prova_pergunta->getResposta($i)->getRespostaFilho()->getId()); $resposta_filho->setPergunta($prova_pergunta->getId()); $resposta_filho->setRespostaTexto($prova_pergunta->getResposta($i)->getRespostaFilho()->getRespostaTexto()); $resposta_filho->setRespostaCorreta($prova_pergunta->getResposta($i)->getRespostaFilho()->getRespostaCorreta()); #$resposta_filho->setRespostaFilho($prova_pergunta->getResposta($i)->getRespostaFilho()->getId()); $resposta_filho = $this->gravarProvaResposta($resposta_filho); $prova_pergunta->getResposta($i)->setRespostaFilho($resposta_filho); } $this->gravarProvaResposta($prova_pergunta->getResposta($i)); } $this->atualizarOrdemResposta($prova_pergunta); }