Exemple #1
0
	public function recuperarProva($id_prova){

		$query ="SELECT tbl_prova.prova            AS prova,
						tbl_prova.titulo           AS titulo,
						tbl_prova.disciplina       AS disciplina,
						tbl_prova.professor        AS professor,
						tbl_prova.numero_perguntas AS numero_perguntas,
						DATE_FORMAT(tbl_prova.data , '%d/%m/%Y %H:%i') AS data,
						DATE_FORMAT(tbl_prova.data_inicio , '%d/%m/%Y %H:%i') AS data_inicio,
						DATE_FORMAT(tbl_prova.data_termino , '%d/%m/%Y %H:%i') AS data_termino,
						dificuldade              AS dificuldade,
						DATE_FORMAT(tbl_prova.liberada , '%d/%m/%Y %H:%i') AS liberada,
						CASE WHEN CURRENT_TIMESTAMP - tbl_prova.liberada > 0 THEN '' ELSE 'Prova só pode ser aberta após o horário de início.' END AS prova_nao_liberada
				FROM tbl_prova
				WHERE tbl_prova.prova = $id_prova ";

		$banco = $this->getBancoDados(); 
		$prova = NULL; 
		$retorno = $banco->executaSQL($query); 
		if($retorno != NULL) {

			if ($banco->numRows($retorno) == 0){
				throw new Exception("Nenhuma prova encontrada.",0);
			}

			while($linha = $banco->fetchArray($retorno)) {

				$sessionFacade	= new SessionFacade($banco); 
				$obj_disciplina	= $sessionFacade->recuperarDisciplina($linha["disciplina"]);
				$obj_professor	= $sessionFacade->recuperarProfessor($linha["professor"]);

				$prova = new Prova(); 
				$prova->setId($linha['prova']);
				$prova->setTitulo($linha["titulo"]);
				$prova->setDisciplina($obj_disciplina);
				$prova->setProfessor($obj_professor);
				$prova->setNumeroPerguntas($linha["numero_perguntas"]);
				$prova->setData($linha["data"]);
				$prova->setDataInicio($linha["data_inicio"]);
				$prova->setDataTermino($linha["data_termino"]);
				$prova->setDificuldade($linha["dificuldade"]);
				$prova->setLiberada($linha["liberada"]);

				$prova->setProvaNaoLiberada($linha["prova_nao_liberada"]);

				if (strlen($linha["liberada"])==0){
					$prova->setProvaNaoLiberada('O professor ainda não liberou esta prova. Por favor, aguarde.');
				}

				$query ="SELECT tbl_prova_pergunta.prova_pergunta AS pergunta
						FROM tbl_prova
						JOIN tbl_prova_pergunta USING(prova)
						WHERE tbl_prova.prova = $id_prova";
				$retorno_item = $banco->executaSQL($query); 
				if($retorno_item != NULL) {
					while($linha_item = $banco->fetchArray($retorno_item)) {
						$obj_pergunta = $sessionFacade->recuperarProvaPergunta($linha_item["pergunta"]);
						$prova->addPergunta($obj_pergunta);
					}
				}
				
				$query="SELECT tbl_prova_topico.topico
						FROM   tbl_prova_topico
						WHERE  tbl_prova_topico.prova = $id_prova";
				$retorno_item = $banco->executaSQL($query); 
				if($retorno_item != NULL) {
					while($linha_item = $banco->fetchArray($retorno_item)) { 
						$obj_topico = $sessionFacade->recuperarTopico($linha_item["topico"]);
						$prova->addTopico($obj_topico);
					}
				}
			}
			return $prova; 
		} else {
			throw new Exception("Erro ao recuperar Prova ($query)"); 
		}
	}
	$titulo_prova		= addslashes(trim($_POST['titulo_prova']));
	$curso				= addslashes(trim($_POST['curso']));
	$disciplina			= addslashes(trim($_POST['disciplina']));
	$numero_perguntas	= addslashes(trim($_POST['numero_perguntas']));
	$data_inicio		= addslashes(trim($_POST['data_inicio']));
	$data_termino		= addslashes(trim($_POST['data_termino']));
	$dificuldade		= addslashes(trim($_POST['dificuldade']));

	$qtde_perguntas		= addslashes(trim($_POST['qtde_perguntas']));
	$qtde_pergunta_prova = 0;

	try {
		$banco->iniciarTransacao();

		$prov = new Prova();
		$prov->setId($prova);
		$prov->setTitulo($titulo_prova);
		$prov->setNumeroPerguntas($numero_perguntas);
		$prov->setData(date("d/m/Y H:i:s"));
		$prov->setDataInicio($data_inicio);
		$prov->setDataTermino($data_termino);
		$prov->setDificuldade($dificuldade);
		$prov->setLiberada($data_inicio);

		if (strlen($disciplina)>0){
			$disc = $sessionFacade->recuperarDisciplina($disciplina); 
			$prov->setDisciplina($disc);
		}

		$prof = $sessionFacade->recuperarProfessor($_login_professor); 
		$prov->setProfessor($prof);