public function provaCorrigirDAO(ProvaRespondida $prova) { $banco = $this->getBancoDados(); $sessionFacade = new SessionFacade($banco); $prov = $prova->getProva(); $nota = 0; #echo "<br>Corrigindo....".$prov->getQtdePerguntas(); for ($i=0; $i < $prov->getQtdePerguntas(); $i++ ){ $prova_pergunta = $prov->getPergunta($i); $peso = $prova_pergunta->getPeso(); #echo "<br>Peso: $peso...."; /* DISSERTATIVA */ if ($prova_pergunta->getTipoPergunta()->getId() == "1"){ /* Dissertativa nao faz correção */ } /* MULTIPLA ESCOLHA */ if ($prova_pergunta->getTipoPergunta()->getId() == "2"){ $valor_corrigido_pergunta = 0; for ($j=0; $j<$prova_pergunta->getQtdeResposta(); $j++){ $resposta = $prova_pergunta->getResposta($j); $respondidas = $prova->getRespostasPerguntaItem($prova_pergunta->getId(), $resposta->getId()); if ($respondidas != null){ if ($resposta->getRespostaCorreta() == "1"){ $valor_corrigido_pergunta = 1 * $peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , $valor_corrigido_pergunta); }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0); } #echo "Achou!!! = $valor_corrigido_pergunta = "; }#else echo " - Nao achou. "; } #echo "22222 ".$prova_pergunta->getId()."=".$valor_corrigido_pergunta."="; $prova->setValorCorrigidoPergunta( $prova_pergunta->getId(), $valor_corrigido_pergunta ); } /* VERDADEIRO OU FALSO */ if ($prova_pergunta->getTipoPergunta()->getId() == "3"){ $valor_corrigido_pergunta = 0; for ($j=0; $j<$prova_pergunta->getQtdeResposta(); $j++){ $resposta = $prova_pergunta->getResposta($j); $respondidas = $prova->getRespostasPerguntaItem($prova_pergunta->getId(), $resposta->getId()); #echo "<br>"; #print_r($respondidas); if ($respondidas != null){ #echo "Correto? ( ".$resposta->getRespostaCorreta()." ) -(".strlen($respondidas[3]).") OR (".$resposta->getRespostaCorreta().") - (".strlen($respondidas[3]).")"; if (($resposta->getRespostaCorreta() == "1" AND strlen($respondidas[3])>0) OR ($resposta->getRespostaCorreta() == "0" AND strlen($respondidas[3])==0)){ $valor_corrigido_pergunta += (1 / $prova_pergunta->getQtdeResposta())*$peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , (1 / $prova_pergunta->getQtdeResposta())*$peso ); #echo " -> CORRETO!!!!!! <br>"; }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0 ); #echo " -> ERRADO! <br>"; } } } $prova->setValorCorrigidoPergunta( $prova_pergunta->getId(), $valor_corrigido_pergunta ); } /* COMPLETE */ if ($prova_pergunta->getTipoPergunta()->getId() == "4"){ $valor_corrigido_pergunta = 0; for ($j=0; $j<$prova_pergunta->getQtdeResposta(); $j++){ $resposta = $prova_pergunta->getResposta($j); $respondidas = $prova->getRespostasPerguntaItem($prova_pergunta->getId(), $resposta->getId()); #echo "<br>"; #print_r($respondidas); #echo "<br>"; if ($respondidas != null){ #echo "Resposta Filho".$resposta->getRespostaFilho()->getId(); #echo "<br>"; $resposta_do_item = $resposta->getRespostaFilho()->getRespostaTexto(); $resposta_do_aluno = $respondidas[3]; /* Faz a verificação da resposta do aluno. Faz a comparação do que o aluno fez com a resposta do professor. Tolerância de 5% */ if (str_limpo($resposta_do_item) == str_limpo($resposta_do_aluno) or _similar(str_limpo($resposta_do_item),str_limpo($resposta_do_aluno))>95) { $valor_corrigido_pergunta += (1 / $prova_pergunta->getQtdeResposta())*$peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , (1 / $prova_pergunta->getQtdeResposta())*$peso ); #echo " -> CORRETO!!!!!! <br>"; }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0 ); #echo " -> ERRADO! <br>"; } /* if (($resposta->getRespostaCorreta() == "1" AND strlen($respondidas[3])>0) OR ($resposta->getRespostaCorreta() == "0" AND strlen($respondidas[3])==0)){ $valor_corrigido_pergunta += (1 / $prova_pergunta->getQtdeResposta())*$peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , (1 / $prova_pergunta->getQtdeResposta())*$peso ); #echo " -> CORRETO!!!!!! <br>"; }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0 ); #echo " -> ERRADO! <br>"; } */ } } $prova->setValorCorrigidoPergunta( $prova_pergunta->getId(), $valor_corrigido_pergunta ); } /* LACUNA */ if ($prova_pergunta->getTipoPergunta()->getId() == "5"){ $valor_corrigido_pergunta = 0; for ($j=0; $j<$prova_pergunta->getQtdeResposta(); $j++){ $resposta = $prova_pergunta->getResposta($j); $respondidas = $prova->getRespostasPerguntaItem($prova_pergunta->getId(), $resposta->getId()); #echo "<br>"; #print_r($respondidas); #echo "<br>"; if ($respondidas != null){ #echo "Resposta Filho".$resposta->getRespostaFilho()->getId(); #echo "<br>"; if ($resposta->getRespostaFilho()->getId() == $respondidas[3]){ $valor_corrigido_pergunta += (1 / $prova_pergunta->getQtdeResposta())*$peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , (1 / $prova_pergunta->getQtdeResposta())*$peso ); #echo " -> CORRETO!!!!!! <br>"; }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0 ); #echo " -> ERRADO! <br>"; } /* if (($resposta->getRespostaCorreta() == "1" AND strlen($respondidas[3])>0) OR ($resposta->getRespostaCorreta() == "0" AND strlen($respondidas[3])==0)){ $valor_corrigido_pergunta += (1 / $prova_pergunta->getQtdeResposta())*$peso; $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 1 , (1 / $prova_pergunta->getQtdeResposta())*$peso ); #echo " -> CORRETO!!!!!! <br>"; }else{ $prova->setValorCorrigidoResposta( $prova_pergunta->getId(), $resposta->getId(), 0, 0 ); #echo " -> ERRADO! <br>"; } */ } } $prova->setValorCorrigidoPergunta( $prova_pergunta->getId(), $valor_corrigido_pergunta ); } #echo "<hr style='color:red'>->($valor_corrigido_pergunta)"; $nota += $valor_corrigido_pergunta; } #echo "Nota: Parcial($nota)"; $prova->setNota($nota); }
$prov_resp = $prov_correcao->getProvaRespondida($j); /* Só faz a correção para alunos que terminaram a prova */ if (strlen($prov_resp->getDataTermino())==0){ continue; } $resposta = $prov_resp->getRespostasPerguntaItem( $perg->getId(), $perg->getResposta(0)->getId() ); /* Se já tiver nota, nao corrigi de novo */ if (strlen($resposta[5])>0){ continue; } $porcetangem_acerto = _similar(str_limpo( $perg->getResposta(0)->getRespostaTexto() ),str_limpo( $resposta[3] )); /* DISSERTATIVA */ if ($perg->getTipoPergunta()->getId()=="1"){ $model->assign_block_vars('pergunta.dissertativa',array('J' => $j, 'ALUNO' => $prov_resp->getAluno()->getId(), 'RA' => $prov_resp->getAluno()->getRa(), 'NOME_ALUNO' => $prov_resp->getAluno()->getNome(), 'PROVA_PERGUNTA' => $perg->getId(), 'PROVA_RESPOSTA' => $resposta[3], 'PORCENTAGEM_ACERTO'=> round($porcetangem_acerto), 'PESO' => $perg->getPeso() )); } } break;