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);
	}
Esempio n. 2
0
			$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;