From 82e257a32c9fd1ae7c9dc2f6c090bb3d23297652 Mon Sep 17 00:00:00 2001 From: Eriksen Costa Paixão Date: Tue, 12 May 2009 13:26:34 +0000 Subject: [PATCH] #26 by Eriksen: Corrigido bug na substituição de horário de servidor. O bug envolveu diversas tarefas: --- ieducar/intranet/educar_pesquisa_servidor_lst.php | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------- ieducar/intranet/educar_pesquisa_servidor_lst_bkp.php | 567 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ieducar/intranet/educar_servidor_det.php | 840 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ieducar/intranet/educar_servidor_substituicao_cad.php | 444 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ieducar/intranet/include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------ ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php | 1076 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------- ieducar/tests/functional/ServidorAfastarWebTest.class.php | 69 +++++++++++++++++++++++++++++++++------------------------------------ ieducar/tests/unit/ClsPmieducarQuadroHorarioHorariosTest.class.php | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/tests/unit/ClsPmieducarServidorAlocacaoTest.class.php | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ ieducar/tests/unit/ClsPmieducarServidorTest.class.php | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 11 files changed, 1685 insertions(+), 1985 deletions(-) delete mode 100644 ieducar/intranet/educar_pesquisa_servidor_lst_bkp.php create mode 100644 ieducar/tests/unit/ClsPmieducarQuadroHorarioHorariosTest.class.php create mode 100644 ieducar/tests/unit/ClsPmieducarServidorAlocacaoTest.class.php diff --git a/ieducar/intranet/educar_pesquisa_servidor_lst.php b/ieducar/intranet/educar_pesquisa_servidor_lst.php index 72287c3..8dd288c 100644 --- a/ieducar/intranet/educar_pesquisa_servidor_lst.php +++ b/ieducar/intranet/educar_pesquisa_servidor_lst.php @@ -1,47 +1,57 @@ SetTitulo( "{$this->_instituicao} i-Educar - Servidor" ); - $this->processoAp = "0"; - $this->renderMenu = false; - $this->renderMenuSuspenso = false; - } + +/* + * i-Educar - Sistema de gestão escolar + * + * Copyright (C) 2006 Prefeitura Municipal de Itajaí + * + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * Pesquisa de servidores + * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Disponível desde a versão 1.0.0 + * @version $Id$ + */ + +require_once 'include/clsBase.inc.php'; +require_once 'include/clsListagem.inc.php'; +require_once 'include/clsBanco.inc.php'; +require_once 'include/pmieducar/geral.inc.php'; + + +class clsIndexBase extends clsBase { + + public function Formular() { + $this->SetTitulo($this->_instituicao . ' i-Educar - Servidor'); + $this->processoAp = '0'; + $this->renderMenu = FALSE; + $this->renderMenuSuspenso = FALSE; + } + } -class indice extends clsListagem -{ + +class indice extends clsListagem { + /** * Referencia pega da session para o idpes do usuario atual * @@ -109,7 +119,7 @@ class indice extends clsListagem $_SESSION["dia_semana"] = isset($_GET["dia_semana"]) ? $_GET["dia_semana"] : $_SESSION["dia_semana"]; $_SESSION["hora_inicial"] = $_GET["hora_inicial"] ? $_GET["hora_inicial"] : $_SESSION["hora_inicial"]; $_SESSION["hora_final"] = $_GET["hora_final"] ? $_GET["hora_final"] : $_SESSION["hora_final"]; - $_SESSION["professor"] = $_GET["professor"] ? $_GET["professor"] : $_SESSION["professor"]; + $_SESSION["professor"] = ($_GET["professor"] ? $_GET["professor"] : $_SESSION["professor"]); $_SESSION["horario"] = $_GET["horario"] ? $_GET["horario"] : $_SESSION["horario"]; $_SESSION["ref_cod_escola"] = $_GET["ref_cod_escola"] ? $_GET["ref_cod_escola"] : $_SESSION["ref_cod_escola"]; $_SESSION["min_mat"] = $_GET["min_mat"] ? $_GET["min_mat"] : $_SESSION["min_mat"]; @@ -148,7 +158,6 @@ class indice extends clsListagem $this->min_not = $_SESSION["min_not"] = $_GET["min_not"] ? $_GET["min_not"] : $_SESSION["min_not"]; $this->ref_cod_disciplina = $_SESSION["ref_cod_disciplina"] = $_GET["ref_cod_disciplina"] ? $_GET["ref_cod_disciplina"] : $_SESSION["ref_cod_disciplina"]; $this->ref_cod_curso = $_SESSION["ref_cod_curso"] = $_GET["ref_cod_curso"] ? $_GET["ref_cod_curso"] : $_SESSION["ref_cod_curso"]; - $this->identificador = $_SESSION["identificador"] = $_GET["identificador"] ? $_GET["identificador"] : $_SESSION["identificador"]; if ( isset( $_GET["lst_matriculas"] ) && isset( $_SESSION["lst_matriculas"] ) ) @@ -330,45 +339,56 @@ class indice extends clsListagem $array_hora = array( $_SESSION["dia_semana"], $_SESSION["hora_inicial"], $_SESSION["hora_final"] ); } - /** - * marca a disciplina como NULL se nao estiver selecionada - * para poder restringir na busca dos professores - * e nao trazer um professor caso o curso nao seja globalizado e esteja sem materia - */ - $this->ref_cod_disciplina = $this->ref_cod_disciplina ? $this->ref_cod_disciplina : "NULL"; - - $lista = $obj_servidor->lista( - null, - $this->ref_cod_deficiencia, - $this->ref_idesco, - $this->carga_horaria, - null, - null, - null, - null, - 1, - $this->ref_cod_instituicao, - $_SESSION["tipo"], - $array_hora, - $this->ref_cod_servidor, - $this->nome_servidor, - $this->professor, - $this->horario, - false, - $this->lst_matriculas, - $this->matutino, - $this->vespertino, - $this->noturno, - $this->ref_cod_escola, - $hr_mat, - $hr_ves, - $hr_not, - $_SESSION["dia_semana"], - $this->ref_cod_instituicao - ,$this->identificador - ,$this->ref_cod_curso - ,$this->ref_cod_disciplina - ); + // Marca a disciplina como NULL se não for informada, restringindo a busca + // aos professores e não selecionar aqueles em que o curso não seja + // globalizado e sem disciplinas cadastradas + $this->ref_cod_disciplina = $this->ref_cod_disciplina ? + $this->ref_cod_disciplina : "NULL"; + + // Passa NULL para $alocacao_escola_instituicao senão o seu filtro anula + // um anterior (referente a selecionar somente servidores não alocados), + // selecionando apenas servidores alocados na instituição + $lista = $obj_servidor->lista( + NULL, + $this->ref_cod_deficiencia, + $this->ref_idesco, + $this->carga_horaria, + NULL, + NULL, + NULL, + NULL, + 1, + $this->ref_cod_instituicao, + $_SESSION['tipo'], + $array_hora, + $this->ref_cod_servidor, + $this->nome_servidor, + $this->professor, + $this->horario, + FALSE, + $this->lst_matriculas, + $this->matutino, + $this->vespertino, + $this->noturno, + $this->ref_cod_escola, + $hr_mat, + $hr_ves, + $hr_not, + $_SESSION['dia_semana'], + NULL, + $this->identificador, + $this->ref_cod_curso, + $this->ref_cod_disciplina + ); + + // Se for uma listagem de professores, recupera as disciplinas dadas para + // comparação com a de outros professores (somente quando a busca é para + // substituição de servidores) + $disciplinas = array(); + if ('true' == $this->professor) { + $disciplinas = $obj_servidor->getServidorDisciplinasQuadroHorarioHorarios( + $this->ref_cod_servidor, $this->ref_cod_instituicao); + } $total = $obj_servidor->_total; @@ -401,6 +421,19 @@ class indice extends clsListagem //$det_cod_servidor = $det_cod_servidor["idpes"]->detalhe(); //$registro["nome"] = $det_cod_servidor["nome"]; + // Se servidor for professor, verifica se possui as mesmas + // disciplinas do servidor a ser substituido (este passo somente é + // executado ao buscar um servidor substituto) + if ($this->professor == 'true') { + $disciplinasSubstituto = clsPmieducarServidor::getServidorDisciplinas( + $registro['cod_servidor'], $this->ref_cod_instituicao); + + // Se os arrays diferirem, passa para o próximo resultado + if ($disciplinasSubstituto != $disciplinas) { + continue; + } + } + } else { diff --git a/ieducar/intranet/educar_pesquisa_servidor_lst_bkp.php b/ieducar/intranet/educar_pesquisa_servidor_lst_bkp.php deleted file mode 100644 index 513a741..0000000 --- a/ieducar/intranet/educar_pesquisa_servidor_lst_bkp.php +++ /dev/null @@ -1,567 +0,0 @@ -SetTitulo( "{$this->_instituicao} i-Educar - Servidor" ); - $this->processoAp = "0"; - $this->renderMenu = false; - $this->renderMenuSuspenso = false; - } -} - -class indice extends clsListagem -{ - /** - * Referencia pega da session para o idpes do usuario atual - * - * @var int - */ - var $pessoa_logada; - - /** - * Titulo no topo da pagina - * - * @var int - */ - var $titulo; - - /** - * Quantidade de registros a ser apresentada em cada pagina - * - * @var int - */ - var $limite; - - /** - * Inicio dos registros a serem exibidos (limit) - * - * @var int - */ - var $offset; - - var $cod_servidor; - var $ref_cod_deficiencia; - var $ref_idesco; - var $ref_cod_funcao; - var $carga_horaria; - var $data_cadastro; - var $data_exclusao; - var $ativo; - var $horario; - var $lst_matriculas; - var $ref_cod_instituicao; - var $professor; - var $ref_cod_escola; - var $nome_servidor; - var $ref_cod_servidor; - var $periodo; - var $carga_horaria_usada; - var $min_mat; - var $min_ves; - var $min_not; - var $dia_semana; - - var $matutino = false; - var $vespertino = false; - var $noturno = false; - - function Gerar() - { - @session_start(); - $this->pessoa_logada = $_SESSION['id_pessoa']; - - $_SESSION["campo1"] = $_GET["campo1"] ? $_GET["campo1"] : $_SESSION["campo1"]; - $_SESSION["campo2"] = $_GET["campo2"] ? $_GET["campo2"] : $_SESSION["campo2"]; - $_SESSION["dia_semana"] = isset($_GET["dia_semana"]) ? $_GET["dia_semana"] : $_SESSION["dia_semana"]; - $_SESSION["hora_inicial"] = $_GET["hora_inicial"] ? $_GET["hora_inicial"] : $_SESSION["hora_inicial"]; - $_SESSION["hora_final"] = $_GET["hora_final"] ? $_GET["hora_final"] : $_SESSION["hora_final"]; - $_SESSION["professor"] = $_GET["professor"] ? $_GET["professor"] : $_SESSION["professor"]; - $_SESSION["horario"] = $_GET["horario"] ? $_GET["horario"] : $_SESSION["horario"]; - $_SESSION["ref_cod_escola"] = $_GET["ref_cod_escola"] ? $_GET["ref_cod_escola"] : $_SESSION["ref_cod_escola"]; - $_SESSION["min_mat"] = $_GET["min_mat"] ? $_GET["min_mat"] : $_SESSION["min_mat"]; - $_SESSION["min_ves"] = $_GET["min_ves"] ? $_GET["min_ves"] : $_SESSION["min_ves"]; - $_SESSION["min_not"] = $_GET["min_not"] ? $_GET["min_not"] : $_SESSION["min_not"]; - - - if ( isset( $_GET["lst_matriculas"] ) ) - { - $_SESSION["lst_matriculas"] = $_GET["lst_matriculas"] ? $_GET["lst_matriculas"] : $_SESSION["lst_matriculas"]; - } - - if ( !isset( $_GET["tipo"] ) ) - { - $_SESSION["setAllField1"] = $_SESSION["setAllField2"] = $_SESSION["tipo"] = ""; - } - /*else - { - $_SESSION["hora_final"] = $_SESSION["hora_inicial"] = $_SESSION["dia_semana"] = ""; - }*/ - - $this->ref_cod_instituicao = $_SESSION["ref_cod_instituicao"] = $_GET["ref_cod_instituicao"] ? $_GET["ref_cod_instituicao"] : $_SESSION["ref_cod_instituicao"]; - $this->ref_cod_servidor = $_SESSION["ref_cod_servidor"] = $_GET["ref_cod_servidor"] ? $_GET["ref_cod_servidor"] : $_SESSION["ref_cod_servidor"]; - $this->professor = $_SESSION["professor"] = $_GET["professor"] ? $_GET["professor"] : $_SESSION["professor"]; - $this->horario = $_SESSION["horario"] = $_GET["horario"] ? $_GET["horario"] : $_SESSION["horario"]; - $this->ref_cod_escola = $_GET["ref_cod_escola"] ? $_GET["ref_cod_escola"] : $_SESSION["ref_cod_escola"]; - $this->min_mat = $_SESSION["min_mat"] = $_GET["min_mat"] ? $_GET["min_mat"] : $_SESSION["min_mat"]; - $this->min_ves = $_SESSION["min_ves"] = $_GET["min_ves"] ? $_GET["min_ves"] : $_SESSION["min_ves"]; - $this->min_not = $_SESSION["min_not"] = $_GET["min_not"] ? $_GET["min_not"] : $_SESSION["min_not"]; - - - if ( isset( $_GET["lst_matriculas"] ) && isset( $_SESSION["lst_matriculas"] ) ) - { - $this->lst_matriculas = $_GET["lst_matriculas"] ? $_GET["lst_matriculas"] : $_SESSION["lst_matriculas"]; - } - - $_SESSION["tipo"] = $_GET["tipo"] ? $_GET["tipo"] : $_SESSION["tipo"]; - session_write_close(); - - $this->titulo = "Servidores Públicos - Listagem"; - - foreach ( $_GET AS $var => $val ) // passa todos os valores obtidos no GET para atributos do objeto - { - $this->$var = ( $val === "" ) ? null: $val; - } - - if ( isset( $this->lst_matriculas ) ) - { - $this->lst_matriculas = urldecode( $this->lst_matriculas ); - } - -// $obj_horarios = new clsPmieducarQuadroHorarioHorarios(); -// $lst_horarios = $obj_horarios->listaHoras( $this->ref_cod_instituicao, $this->ref_cod_servidor, 1, $_SESSION["dia_semana"] ); -// -// echo "
";
-//		print_r( $lst_horarios );
-//
-//		if ( is_array( $lst_horarios ) )
-//		{
-//			foreach ( $lst_horarios as $horario )
-//			{
-//				$hr_ini = explode( ":", $horario["hora_inicial"] );
-//				$hr_fim = explode( ":", $horario["hora_final"] );
-//
-//				$min_ini = ( $hr_ini[0] * 60 ) + $hr_ini[1];
-//				$min_fim = ( $hr_fim[0] * 60 ) + $hr_fim[1];
-//
-//				if (  $min_ini >= 480 && $min_ini <= 720 )
-//				{
-//					if ( $min_fim <= 720 )
-//					{
-//						$this->min_mat += $min_fim - $min_ini;
-//					}
-//					else if ( $min_fim >= 721 && $min_fim <= 1080 )
-//					{
-//						$this->min_mat += 720 - $min_ini;
-//						$this->min_ves += $min_fim - 720;
-//					}
-//					else if ( ( $min_fim >= 1081 && $min_fim <= 1439 ) || $min_fim == 0 )
-//					{
-//						$this->min_mat += 720 - $min_ini;
-//						$this->min_ves += 360;
-//
-//						if ( $min_fim >= 1081 && $min_fim <= 1439 )
-//						{
-//							$this->min_not += $min_fim - 1080;
-//						}
-//						else if ( $min_fim = 0 )
-//						{
-//							$this->min_not += 360;
-//						}
-//					}
-//				}
-//				else if ( $min_ini >= 721 && $min_ini <= 1080 )
-//				{
-//					if ( $min_fim <= 1080 )
-//					{
-//						$this->min_ves += $min_fim - $min_ini;
-//					}
-//					else if ( ( $min_fim >= 1081 && $min_fim <= 1439 ) || $min_fim == 0 )
-//					{
-//						$this->min_ves += 1080 - $min_ini;
-//
-//						if ( $min_fim >= 1081 && $min_fim <= 1439 )
-//						{
-//							$this->min_not += $min_fim - 1080;
-//						}
-//						else if ( $min_fim = 0 )
-//						{
-//							$this->min_not += 360;
-//						}
-//					}
-//				}
-//				else if ( ( $min_ini >= 1081 && $min_ini <= 1439 ) || $min_ini == 0 )
-//				{
-//					if ( $min_fim <= 1439 )
-//					{
-//						$this->min_not += $min_fim - $min_ini;
-//					}
-//					else if ( $min_fim == 0 )
-//					{
-//						$this->min_not += 1440 - $min_ini;
-//					}
-//				}
-//			}
-//		}
-
-		$string1 = ( $this->min_mat - floor( $this->min_mat / 60 ) * 60 );
-		$string1 = str_repeat( 0, 2 - strlen( $string1 ) ).$string1;
-
-		$string2 = floor( $this->min_mat / 60 );
-		$string2 = str_repeat( 0, 2 - strlen( $string2 ) ).$string2;
-
-		$hr_mat  = $string2.":".$string1;
-
-		$string1 = ( $this->min_ves - floor( $this->min_ves / 60 ) * 60 );
-		$string1 = str_repeat( 0, 2 - strlen( $string1 ) ).$string1;
-
-		$string2 = floor( $this->min_ves / 60 );
-		$string2 = str_repeat( 0, 2 - strlen( $string2 ) ).$string2;
-
-		$hr_ves  = $string2.":".$string1;
-
-
-		$string1 = ( $this->min_not - floor( $this->min_not / 60 ) * 60 );
-		$string1 = str_repeat( 0, 2 - strlen( $string1 ) ).$string1;
-
-		$string2 = floor( $this->min_not / 60 );
-		$string2 = str_repeat( 0, 2 - strlen( $string2 ) ).$string2;
-
-		$hr_not  = $string2.":".$string1;
-
-		$hora_inicial_ = explode( ":", $_SESSION["hora_inicial"] );
-		$hora_final_   = explode( ":", $_SESSION["hora_final"] );
-		$horas_ini 	   = sprintf( "%02d", ( int ) abs( $hora_final_[0] ) - abs( $hora_inicial_[0] ) );
-		$minutos_ini   = sprintf( "%02d", ( int ) abs( $hora_final_[1] ) - abs( $hora_inicial_[1] ) );
-
-		$h_m_ini = ( $hora_inicial_[0] * 60 ) + $hora_inicial_[1];
-	 	$h_m_fim = ( $hora_final_[0]   * 60 ) + $hora_final_[1];
-
-		if ( $h_m_ini >= 480 && $h_m_ini <= 720 )
-		{
-			$this->matutino = true;
-
-			if ( $h_m_fim >= 721 && $h_m_fim <= 1080 )
-			{
-				$this->vespertino = true;
-			}
-			else if ( ( $h_m_fim >= 1801 && $h_m_fim <= 1439 ) || ( $h_m_fim == 0 ) )
-			{
-				//$this->vespertino = true;
-				$this->noturno 	  = true;
-			}
-		}
-		else if ( $h_m_ini >= 721 && $h_m_ini <= 1080 )
-		{
-			$this->vespertino = true;
-
-			if ( ( $h_m_fim >= 1081 && $h_m_fim <= 1439 ) /*|| ( $h_m_fim == 0 )*/ )
-			{
-				$this->noturno = true;
-			}
-		}
-		else if ( ( $h_m_ini >= 1081 && $h_m_ini <= 1439 ) || ( $h_m_ini == 0  ) )
-		{
-			$this->noturno = true;
-		}
-
-		$this->addCabecalhos( array(
-			"Nome do Servidor",
-			"Matrícula",
-			"Instituição"
-		) );
-
-		$this->campoTexto( "nome_servidor", "Nome Servidor", $this->nome_servidor, 30, 255, false );
-		$this->campoOculto( "tipo", $_GET["tipo"] );
-
-
-		// Paginador
-		$this->limite = 20;
-		$this->offset = ( $_GET["pagina_{$this->nome}"] ) ? $_GET["pagina_{$this->nome}"] * $this->limite-$this->limite: 0;
-
-		$obj_servidor = new clspmieducarservidor();
-		$obj_servidor->setOrderby( "carga_horaria ASC" );
-		$obj_servidor->setLimite( $this->limite, $this->offset );
-		if ( $_SESSION["dia_semana"] && $_SESSION["hora_inicial"] && $_SESSION["hora_final"] )
-		{
-			$array_hora = array( $_SESSION["dia_semana"], $_SESSION["hora_inicial"], $_SESSION["hora_final"] );
-		}
-
-		$lista = $obj_servidor->lista(
-			null,
-			$this->ref_cod_deficiencia,
-			$this->ref_idesco,
-			$this->carga_horaria,
-			null,
-			null,
-			null,
-			null,
-			1,
-			$this->ref_cod_instituicao,
-			$_SESSION["tipo"],
-			$array_hora,
-			$this->ref_cod_servidor,
-			$this->nome_servidor,
-			$this->professor,
-			$this->horario,
-			false,
-			$this->lst_matriculas,
-			$this->matutino,
-			$this->vespertino,
-			$this->noturno,
-			$this->ref_cod_escola,
-			$hr_mat,
-			$hr_ves,
-			$hr_not,
-			$_SESSION["dia_semana"],
-			$this->ref_cod_instituicao
-
-		);
-
-		$total = $obj_servidor->_total;
-
-		// pega detalhes de foreign_keys
-		if ( class_exists( "clsPmieducarInstituicao" ) )
-		{
-			$obj_ref_cod_instituicao 		 = new clsPmieducarInstituicao( $lista[0]["ref_cod_instituicao"] );
-			$det_ref_cod_instituicao 		 = $obj_ref_cod_instituicao->detalhe();
-			$nm_instituicao = $det_ref_cod_instituicao["nm_instituicao"];
-
-		}
-		else
-		{
-			//$registro["ref_cod_instituicao"] = "Erro na geração";
-			echo "";
-		}
-
-		// monta a lista
-		if ( is_array( $lista ) && count( $lista ) )
-		{
-
-			foreach ( $lista AS $registro )
-			{
-
-				if ( class_exists( "clsFuncionario" ) )
-				{
-					$obj_cod_servidor 	   = new clsFuncionario( $registro["cod_servidor"] );
-					$det_cod_servidor 	   = $obj_cod_servidor->detalhe();
-					$registro["matricula"] = $det_cod_servidor['matricula'];
-					//$det_cod_servidor 	   = $det_cod_servidor["idpes"]->detalhe();
-					//$registro["nome"] 	   = $det_cod_servidor["nome"];
-
-				}
-				else
-				{
-					$registro["cod_servidor"] = "Erro na geracao";
-					echo "";
-				}
-
-
-				/*if ( $this->ref_cod_escola )
-				{
-					$obj_servidor_alocacao = new clsPmieducarServidorAlocacao();
-					$det_servidor_alocacao = $obj_servidor_alocacao->lista( null, $this->ref_cod_instituicao, null, null, $this->ref_cod_escola, $registro['cod_servidor'], null, null, null, null, 1 );
-
-					if ( !$det_servidor_alocacao )
-					{
-						continue;
-					}
-				}*/
-
-				if ( $_SESSION["tipo"] )
-				{
-					if ( is_string( $_SESSION['campo1'] ) && is_string( $_SESSION['campo2'] ) )
-					{
-						if ( is_string( $_SESSION['horario'] ) )
-						{
-							$script = " onclick=\"addVal1('{$_SESSION['campo1']}','{$registro['cod_servidor']}','{$registro['nome']}'); addVal1('{$_SESSION['campo2']}','{$registro['cod_servidor']}','{$registro['nome']}'); $setAll fecha();\"";
-						}
-						else
-						{
-							$script = " onclick=\"addVal1('{$_SESSION['campo1']}','{$registro['cod_servidor']}',null); addVal1('{$_SESSION['campo2']}','{$registro['nome']}',null); $setAll fecha();\"";
-						}
-					}
-					elseif ( is_string( $_SESSION['campo1'] ) )
-					{
-						$script = " onclick=\"addVal1('{$_SESSION['campo1']}','{$registro['cod_servidor']}','{$registro['nome']}'); $setAll fecha();\"";
-					}
-				}
-				else
-				{
-					if ( is_string( $_SESSION['campo1'] ) && is_string( $_SESSION['campo2'] ) )
-					{
-						$script = " onclick=\"addVal1('{$_SESSION['campo1']}','{$registro['cod_servidor']}','{$registro['nome']}'); addVal1('{$_SESSION['campo2']}','{$registro['nome']}','{$registro['cod_servidor']}'); $setAll fecha();\"";
-					}
-					else if ( is_string( $_SESSION['campo2'] ) )
-					{
-						$script = " onclick=\"addVal1('{$_SESSION['campo2']}','{$registro['cod_servidor']}','{$registro['nome']}'); $setAll fecha();\"";
-					}
-					else if ( is_string( $_SESSION['campo1'] ) )
-					{
-						$script = " onclick=\"addVal1('{$_SESSION['campo1']}','{$registro['cod_servidor']}','{$registro['nome']}'); $setAll fecha();\"";
-					}
-				}
-
-				$this->addLinhas( array(
-					"{$registro["nome"]}",
-					"{$registro["matricula"]}",
-					"{$nm_instituicao}"
-				) );
-			}
-		}
-
-		$this->addPaginador2( "educar_pesquisa_servidor_lst.php", $total, $_GET, $this->nome, $this->limite );
-		$obj_permissoes = new clsPermissoes();
-		$this->largura  = "100%";
-	}
-}
-// cria uma extensao da classe base
-$pagina = new clsIndexBase();
-// cria o conteudo
-$miolo = new indice();
-// adiciona o conteudo na clsBase
-$pagina->addForm( $miolo );
-// gera o html
-$pagina->MakeAll();
-?>
-
\ No newline at end of file
diff --git a/ieducar/intranet/educar_servidor_det.php b/ieducar/intranet/educar_servidor_det.php
index 36025ed..7955806 100644
--- a/ieducar/intranet/educar_servidor_det.php
+++ b/ieducar/intranet/educar_servidor_det.php
@@ -1,449 +1,427 @@
 SetTitulo( "{$this->_instituicao} i-Educar - Servidor" );
-		$this->processoAp = "635";
-	}
-}
 
-class indice extends clsDetalhe
-{
-	/**
-	 * Titulo no topo da pagina
-	 *
-	 * @var int
-	 */
-	var $titulo;
-
-	var $cod_servidor;
-	var $ref_cod_deficiencia;
-	var $ref_idesco;
-	var $ref_cod_funcao;
-	var $carga_horaria;
-	var $data_cadastro;
-	var $data_exclusao;
-	var $ativo;
-
-	var $ref_cod_instituicao;
-
-	var $alocacao_array = array();
-
-	function Gerar()
-	{
-		@session_start();
-		$this->pessoa_logada = $_SESSION['id_pessoa'];
-		session_write_close();
-
-		$this->titulo = "Servidor - Detalhe";
-		$this->addBanner( "imagens/nvp_top_intranet.jpg", "imagens/nvp_vert_intranet.jpg", "Intranet" );
-
-		$this->cod_servidor=$_GET["cod_servidor"];
-		$this->ref_cod_instituicao=$_GET["ref_cod_instituicao"];
-
-		$tmp_obj = new clsPmieducarServidor( $this->cod_servidor,null,null,null,null,null,null,$this->ref_cod_instituicao );
-		$registro = $tmp_obj->detalhe();
-
-		if( !$registro )
-		{
-			header( "location: educar_servidor_lst.php" );
-			die();
-		}
-
-		if( class_exists( "clsCadastroDeficiencia" ) )
-		{
-			$obj_ref_cod_deficiencia = new clsCadastroDeficiencia( $registro["ref_cod_deficiencia"] );
-			$det_ref_cod_deficiencia = $obj_ref_cod_deficiencia->detalhe();
-			$registro["ref_cod_deficiencia"] = $det_ref_cod_deficiencia["nm_deficiencia"];
-		}
-		else
-		{
-			$registro["ref_cod_deficiencia"] = "Erro na geracao";
-			echo "";
-		}
-
-		if( class_exists( "clsCadastroEscolaridade" ) )
-		{
-			$obj_ref_idesco = new clsCadastroEscolaridade( $registro["ref_idesco"] );
-			$det_ref_idesco = $obj_ref_idesco->detalhe();
-			$registro["ref_idesco"] = $det_ref_idesco["descricao"];
-		}
-		else
-		{
-			$registro["ref_idesco"] = "Erro na geracao";
-			echo "";
-		}
-
-		if( class_exists( "clsPmieducarFuncao" ) )
-		{
-			$obj_ref_cod_funcao = new clsPmieducarFuncao( $registro["ref_cod_funcao"],null,null,null,null,null,null,null,null,$this->ref_cod_instituicao );
-			$det_ref_cod_funcao = $obj_ref_cod_funcao->detalhe();
-			$registro["ref_cod_funcao"] = $det_ref_cod_funcao["nm_funcao"];
-		}
-		else
-		{
-			$registro["ref_cod_funcao"] = "Erro na geracao";
-			echo "";
-		}
-
-		if( class_exists( "clsFuncionario" ) )
-		{
-			$obj_cod_servidor = new clsFuncionario( $registro["cod_servidor"] );
-			$det_cod_servidor = $obj_cod_servidor->detalhe();
-			$registro["matricula"] = $det_cod_servidor["matricula"];
-			$det_cod_servidor = $det_cod_servidor["idpes"]->detalhe();
-			$registro["nome"] = $det_cod_servidor["nome"];
-
-		}
-		else
-		{
-			$registro["cod_servidor"] = "Erro na geracao";
-			echo "";
-		}
-
-		if( class_exists( "clsPmieducarInstituicao" ) )
-		{
-			$obj_ref_cod_instituicao = new clsPmieducarInstituicao( $registro["ref_cod_instituicao"] );
-			$det_ref_cod_instituicao = $obj_ref_cod_instituicao->detalhe();
-			$registro["ref_cod_instituicao"] = $det_ref_cod_instituicao["nm_instituicao"];
-		}
-		else
-		{
-			$registro["ref_cod_instituicao"] = "Erro na geração";
-			echo "";
-		}
-
-		$obj = new clsPmieducarServidorAlocacao( );
-		$obj->setOrderby("periodo,carga_horaria");
-		$lista  = $obj->lista(null,$this->ref_cod_instituicao,null,null,null,$this->cod_servidor,null,null,null,null,null,null,null,null,null,1);
-		if( $lista )
-		{
-			foreach( $lista AS $campo => $val ){	// passa todos os valores obtidos no registro para atributos do objeto
-				$temp = array();
-				$temp['carga_horaria'] = $val['carga_horaria'];
-				$temp['periodo'] = $val['periodo'];
-
-				$obj_escola = new clsPmieducarEscola($val['ref_cod_escola']);
-				$det_escola = $obj_escola->detalhe();
-				$det_escola = $det_escola["nome"];
-				$temp['ref_cod_escola'] = $det_escola;
-
-				$this->alocacao_array[] = $temp;
-
-			}
-
-
-		}
-
-		if( $registro["cod_servidor"] )
-		{
-			$this->addDetalhe( array( "Servidor", "{$registro["cod_servidor"]}") );
-		}
-		if( $registro["matricula"] )
-		{
-			$this->addDetalhe( array( "Matrícula", "{$registro["matricula"]}") );
-		}
-		if( $registro["nome"] )
-		{
-			$this->addDetalhe( array( "Nome", "{$registro["nome"]}") );
-		}
-		if( $registro["ref_cod_instituicao"] )
-		{
-			$this->addDetalhe( array( "Instituição", "{$registro["ref_cod_instituicao"]}") );
-		}
-		if( $registro["ref_cod_deficiencia"] )
-		{
-			$this->addDetalhe( array( "Deficiéncia", "{$registro["ref_cod_deficiencia"]}") );
-		}
-		if( $registro["ref_idesco"] )
-		{
-			$this->addDetalhe( array( "Escolaridade", "{$registro["ref_idesco"]}") );
-		}
-		if( $registro["ref_cod_subnivel"] )
-		{
-			$obj_nivel = new clsPmieducarSubnivel($registro["ref_cod_subnivel"]);
-			$det_nivel = $obj_nivel->detalhe();
-
-			$this->addDetalhe( array( "Nível", "{$det_nivel["nm_subnivel"]}") );
-		}
-
-		if( $registro["ref_cod_funcao"] )
-		{
-			$this->addDetalhe( array( "Função", "{$registro["ref_cod_funcao"]}") );
-		}
-
-		$obj_funcao = new clsPmieducarServidorFuncao();
-		$lst_funcao = $obj_funcao->lista($this->ref_cod_instituicao,$this->cod_servidor);
-
-
-		if( $lst_funcao )
-		{
-			$tabela .= "
-							
-								
-							";
-
-			$class = "formlttd";
-
-			$tab_disc = null;
-
-			$obj_disciplina_servidor = new clsPmieducarServidorDisciplina();
-			$lst_disciplina_servidor = $obj_disciplina_servidor->lista(null,$this->ref_cod_instituicao,$this->cod_servidor);
-
-			if($lst_disciplina_servidor)
-			{
-				$tab_disc .= "
Função
"; - - $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; - $tab_disc .= " - - "; - foreach ($lst_disciplina_servidor as $disciplina) - { - $obj_disciplina = new clsPmieducarDisciplina($disciplina['ref_cod_disciplina']); - $det_disciplina = $obj_disciplina->detalhe(); - - $tab_disc .= " - - "; - - $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; - - } - $tab_disc .= "
Disciplinas
{$det_disciplina['nm_disciplina']}
"; - } - - $obj_servidor_curso = new clsPmieducarServidorCursoMinistra(); - $lst_servidor_curso = $obj_servidor_curso->lista(null,$this->ref_cod_instituicao,$this->cod_servidor); - - if($lst_servidor_curso) - { - $tab_curso .= ""; - - $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; - $tab_curso .= " - - "; - foreach ($lst_servidor_curso as $curso) - { - $obj_curso = new clsPmieducarCurso($curso['ref_cod_curso']); - $det_curso = $obj_curso->detalhe(); - - $tab_curso .= " - - "; - - $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; - - } - $tab_curso .= "
Cursos Ministrados
{$det_curso['nm_curso']}
"; - } - - foreach ($lst_funcao as $funcao) - { - - $obj_funcao = new clsPmieducarFuncao($funcao['ref_cod_funcao']); - $det_funcao = $obj_funcao->detalhe(); - - $tabela .= " - {$det_funcao['nm_funcao']} - "; - - $class = $class == "formlttd" ? "formmdtd" : "formlttd" ; - } - - if($tab_curso) - { - - $tabela .= " - $tab_curso - "; - } - - if($tab_disc) - { - - $tabela .= " - $tab_disc - "; - } - - $tabela .= ""; - - $this->addDetalhe(array("Função", "Mostrar detalhe")); - } - - $tabela = null; - - if( $registro["carga_horaria"] ) - { - - $this->addDetalhe( array( "Carga Horária", "{$registro["carga_horaria"]}")); - } - - $dias_da_semana = array( '' => 'Selecione', 1 => 'Domingo', 2 => 'Segunda', 3 => 'Terça', 4 => 'Quarta', 5 => 'Quinta', 6 => 'Sexta', 7 => 'Sábado' ); +/* + * i-Educar - Sistema de gestão escolar + * + * Copyright (C) 2006 Prefeitura Municipal de Itajaí + * + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * Mostra detalhes do cadastro de um servidor junto com ações de cadastro + * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Disponível desde a versão 1.0.0 + * @version $Id$ + */ + +require_once 'include/clsBase.inc.php'; +require_once 'include/clsDetalhe.inc.php'; +require_once 'include/clsBanco.inc.php'; +require_once 'include/pmieducar/geral.inc.php'; + + +class clsIndexBase extends clsBase { + public function Formular() { + $this->SetTitulo($this->_instituicao . ' i-Educar - Servidor'); + $this->processoAp = '635'; + } +} - if( $this->alocacao_array ) - { - $tabela .= " - - - - - "; - - $class = "formlttd"; - foreach ($this->alocacao_array as $alocacao) - { - switch ( $alocacao['periodo'] ) - { - case 1: - $nm_periodo = "Matutino"; - break; - case 2: - $nm_periodo = "Vespertino"; - break; - case 3: - $nm_periodo = "Noturno"; - break; - } - $tabela .= " - - - - "; - $class = $class == "formlttd" ? "formmdtd" : "formlttd" ; - } - $tabela .= "
Carga HorariaPeriodoEscola
{$alocacao['carga_horaria']}{$nm_periodo}{$alocacao['ref_cod_escola']}
"; - - $this->addDetalhe(array("Horários de trabalho", "Mostrar detalhe")); - } - - $obj_permissoes = new clsPermissoes(); - - if( $obj_permissoes->permissao_cadastra( 635, $this->pessoa_logada, 3 ) ) - { - $this->url_novo = "educar_servidor_cad.php"; - $this->url_editar = "educar_servidor_cad.php?cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; - // VERIFICAR SE ESTA AFASTADO FICA RETORNAR - // VERIFICAR SE ESTA Alocar Servidor FICA SUBSTITUIR +class indice extends clsDetalhe { + + /** + * Título da página + * @var string + */ + public $titulo; + + /** + * Atributos de dados + */ + public + $cod_servidor = NULL, + $ref_cod_deficiencia = NULL, + $ref_idesco = NULL, + $ref_cod_funcao = NULL, + $carga_horaria = NULL, + $data_cadastro = NULL, + $data_exclusao = NULL, + $ativo = NULL, + $ref_cod_instituicao = NULL, + $alocacao_array = array(); + + + + /** + * Implementação do método Gerar() + */ + public function Gerar() { + session_start(); + $this->pessoa_logada = $_SESSION['id_pessoa']; + session_write_close(); + + $this->titulo = 'Servidor - Detalhe'; + $this->addBanner('imagens/nvp_top_intranet.jpg', 'imagens/nvp_vert_intranet.jpg', 'Intranet'); + + $this->cod_servidor = $_GET["cod_servidor"]; + $this->ref_cod_instituicao = $_GET["ref_cod_instituicao"]; + + $tmp_obj = new clsPmieducarServidor( $this->cod_servidor,null,null,null,null,null,null,$this->ref_cod_instituicao ); + $registro = $tmp_obj->detalhe(); + + if (!$registro) { + header('Location: educar_servidor_lst.php'); + die(); + } + + // Deficiência + $obj_ref_cod_deficiencia = new clsCadastroDeficiencia($registro['ref_cod_deficiencia']); + $det_ref_cod_deficiencia = $obj_ref_cod_deficiencia->detalhe(); + $registro['ref_cod_deficiencia'] = $det_ref_cod_deficiencia['nm_deficiencia']; + + // Escolaridade + $obj_ref_idesco = new clsCadastroEscolaridade($registro['ref_idesco']); + $det_ref_idesco = $obj_ref_idesco->detalhe(); + $registro['ref_idesco'] = $det_ref_idesco['descricao']; + + // Função + $obj_ref_cod_funcao = new clsPmieducarFuncao($registro['ref_cod_funcao'], + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao); + $det_ref_cod_funcao = $obj_ref_cod_funcao->detalhe(); + $registro['ref_cod_funcao'] = $det_ref_cod_funcao['nm_funcao']; + + // Nome + $obj_cod_servidor = new clsFuncionario($registro['cod_servidor']); + $det_cod_servidor = $obj_cod_servidor->detalhe(); + + $registro['matricula'] = $det_cod_servidor['matricula']; + $det_cod_servidor = $det_cod_servidor['idpes']->detalhe(); + $registro['nome'] = $det_cod_servidor['nome']; + + // Instituição + $obj_ref_cod_instituicao = new clsPmieducarInstituicao($registro['ref_cod_instituicao']); + $det_ref_cod_instituicao = $obj_ref_cod_instituicao->detalhe(); + $registro['ref_cod_instituicao'] = $det_ref_cod_instituicao['nm_instituicao']; + + // Alocação do servidor + $obj = new clsPmieducarServidorAlocacao(); + $obj->setOrderby('periodo, carga_horaria'); + $lista = $obj->lista(NULL, $this->ref_cod_instituicao, NULL, NULL, NULL, + $this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ,1); + + if ($lista) { + // Passa todos os valores do registro para atributos do objeto + foreach ($lista as $campo => $val) { + $temp = array(); + $temp['carga_horaria'] = $val['carga_horaria']; + $temp['periodo'] = $val['periodo']; + + $obj_escola = new clsPmieducarEscola($val['ref_cod_escola']); + $det_escola = $obj_escola->detalhe(); + $det_escola = $det_escola['nome']; + $temp['ref_cod_escola'] = $det_escola; + + $this->alocacao_array[] = $temp; + } + } + + if ($registro['cod_servidor']) { + $this->addDetalhe(array('Servidor', $registro['cod_servidor'])); + } + + if ($registro['matricula']) { + $this->addDetalhe(array('Matrícula', $registro['matricula'])); + } + + if ($registro['nome']) { + $this->addDetalhe(array('Nome', $registro['nome'])); + } + + if ($registro['ref_cod_instituicao']) { + $this->addDetalhe( array( "Instituição", $registro['ref_cod_instituicao'])); + } + + if ($registro['ref_cod_deficiencia']) { + $this->addDetalhe(array('Deficiéncia', $registro['ref_cod_deficiencia'])); + } - /** - * @todo O botão [Alocar Servidor] só deverá aparecer para usuários - * poli-institucionais e institucionais apenas quando o servidor - * nâo estiver com todas as horas semanais alocadas. - */ - $get_padrao ="ref_cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; - - $this->array_botao = array(); - $this->array_botao_url_script = array(); + if( $registro['ref_idesco']) { + $this->addDetalhe(array('Escolaridade', $registro['ref_idesco'])); + } - $this->array_botao[] = 'Avaliação de Desempenho'; - $this->array_botao_url_script[] = "go(\"educar_avaliacao_desempenho_lst.php?{$get_padrao}\");"; + if ($registro['ref_cod_subnivel']) { + $obj_nivel = new clsPmieducarSubnivel($registro['ref_cod_subnivel']); + $det_nivel = $obj_nivel->detalhe(); + + $this->addDetalhe(array('Nível', $det_nivel['nm_subnivel'])); + } + + if ($registro['ref_cod_funcao']) { + $this->addDetalhe(array('Função', $registro['ref_cod_funcao'])); + } - $this->array_botao[] = 'Formação'; - $this->array_botao_url_script[] = "go(\"educar_servidor_formacao_lst.php?{$get_padrao}\");"; - - $this->array_botao[] = 'Faltas/Atrasos'; - $this->array_botao_url_script[] = "go(\"educar_falta_atraso_lst.php?{$get_padrao}\");"; - - $this->array_botao[] = 'Alocar Servidor'; - $this->array_botao_url_script[] = "go(\"educar_servidor_alocacao_cad.php?{$get_padrao}\");"; - - $this->array_botao[] = 'Alterar Nível'; - $this->array_botao_url_script[] = "popless();"; - - $obj_servidor_alocacao = new clsPmieducarServidorAlocacao(); - $lista_alocacao = $obj_servidor_alocacao->lista(null,$this->ref_cod_instituicao,null,null,null,$this->cod_servidor,null,null,null,null,null,null,null,null,null,1); - - if($lista) - { - $this->array_botao[] = 'Substituir Horário Servidor'; - $this->array_botao_url_script[] = "go(\"educar_servidor_substituicao_cad.php?{$get_padrao}\");"; - } - - if ( class_exists( "clsPmieducarServidorAfastamento" ) ) { - $obj_afastamento = new clsPmieducarServidorAfastamento(); - $afastamento = $obj_afastamento->afastado( $this->cod_servidor, $this->ref_cod_instituicao ); - - if ( is_numeric( $afastamento ) && $afastamento == 0 ) { - $this->array_botao[] = 'Afastar Servidor'; - $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}\");"; - } - elseif ( is_numeric( $afastamento ) ) { - $this->array_botao[] = 'Retornar Servidor'; - $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}&sequencial={$afastamento}\");"; - } - } - - // $this->array_botao = array('Avaliação de Desempenho', 'Formação', 'Faltas/Atrasos', 'Alocar Servidor' , 'Substituir', 'Afastar', 'Retornar','substituto'); - - - - //$this->array_botao_url = array("educar_avaliacao_desempenho_lst.php?{$get_padrao}", "educar_servidor_formacao_lst.php?{$get_padrao}", "educar_falta_atraso_lst.php?{$get_padrao}", "educar_servidor_alocacao_cad.php?{$get_padrao}","educar_servidor_substituicao_cad.php?{$get_padrao}", 'Afastar', 'Retornar'); - - } - - $this->url_cancelar = "educar_servidor_lst.php"; - $this->largura = "100%"; - } + $obj_funcao = new clsPmieducarServidorFuncao(); + $lst_funcao = $obj_funcao->lista($this->ref_cod_instituicao, $this->cod_servidor); + + if ($lst_funcao) { + $tabela .= " + + + + "; + + $class = "formlttd"; + + $tab_disc = NULL; + + $obj_disciplina_servidor = new clsPmieducarServidorDisciplina(); + $lst_disciplina_servidor = $obj_disciplina_servidor->lista(NULL, + $this->ref_cod_instituicao, $this->cod_servidor); + + if ($lst_disciplina_servidor) { + $tab_disc .= "
Função
"; + + $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; + $tab_disc .= " + + + "; + + foreach ($lst_disciplina_servidor as $disciplina) { + $obj_disciplina = new clsPmieducarDisciplina($disciplina['ref_cod_disciplina']); + $det_disciplina = $obj_disciplina->detalhe(); + + $tab_disc .= " + + + "; + + $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; + } + + $tab_disc .= "
Disciplinas
{$det_disciplina['nm_disciplina']}
"; + } + + $obj_servidor_curso = new clsPmieducarServidorCursoMinistra(); + $lst_servidor_curso = $obj_servidor_curso->lista(NULL, + $this->ref_cod_instituicao, $this->cod_servidor); + + if($lst_servidor_curso) { + $tab_curso .= ""; + + $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; + $tab_curso .= " + + + "; + + foreach ($lst_servidor_curso as $curso) { + $obj_curso = new clsPmieducarCurso($curso['ref_cod_curso']); + $det_curso = $obj_curso->detalhe(); + + $tab_curso .= " + + + "; + + $class2 = $class2 == "formlttd" ? "formmdtd" : "formlttd" ; + } + + $tab_curso .= "
Cursos Ministrados
{$det_curso['nm_curso']}
"; + } + + foreach ($lst_funcao as $funcao) { + + $obj_funcao = new clsPmieducarFuncao($funcao['ref_cod_funcao']); + $det_funcao = $obj_funcao->detalhe(); + + $tabela .= " + + {$det_funcao['nm_funcao']} + "; + + $class = $class == "formlttd" ? "formmdtd" : "formlttd" ; + } + + if ($tab_curso) { + + $tabela .= " + + $tab_curso + "; + } + + if ($tab_disc) { + + $tabela .= " + + $tab_disc + "; + } + + $tabela .= ""; + $this->addDetalhe(array('Função', + "Mostrar detalhe")); + } + + $tabela = NULL; + + /** + * @todo Criar função de transformação de hora decimal. Ver educar_servidor_cad.php em 276 + */ + if ($registro['carga_horaria']) { + $cargaHoraria = $registro['carga_horaria']; + $horas = (int)$cargaHoraria; + $minutos = round(($cargaHoraria - $horas) * 60); + $cargaHoraria = sprintf('%02d:%02d', $horas, $minutos); + $this->addDetalhe(array('Carga Horária', $cargaHoraria)); + } + + $dias_da_semana = array( + '' => 'Selecione', + 1 => 'Domingo', + 2 => 'Segunda', + 3 => 'Terça', + 4 => 'Quarta', + 5 => 'Quinta', + 6 => 'Sexta', + 7 => 'Sábado'); + + if ($this->alocacao_array) { + $tabela .= " + + + + + + "; + + $class = "formlttd"; + foreach ($this->alocacao_array as $alocacao) { + switch ($alocacao['periodo']) { + case 1: + $nm_periodo = "Matutino"; + break; + case 2: + $nm_periodo = "Vespertino"; + break; + case 3: + $nm_periodo = "Noturno"; + break; + } + + $tabela .= " + + + + + "; + + $class = $class == 'formlttd' ? 'formmdtd' : 'formlttd'; + } + + $tabela .= "
Carga HorariaPeriodoEscola
{$alocacao['carga_horaria']}{$nm_periodo}{$alocacao['ref_cod_escola']}
"; + + $this->addDetalhe(array('Horários de trabalho', + "Mostrar detalhe")); + } + + $obj_permissoes = new clsPermissoes(); + + if ($obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 3)) { + $this->url_novo = 'educar_servidor_cad.php'; + $this->url_editar = "educar_servidor_cad.php?cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; + + + $get_padrao ="ref_cod_servidor={$registro["cod_servidor"]}&ref_cod_instituicao={$this->ref_cod_instituicao}"; + + $this->array_botao = array(); + $this->array_botao_url_script = array(); + + $this->array_botao[] = 'Avaliação de Desempenho'; + $this->array_botao_url_script[] = "go(\"educar_avaliacao_desempenho_lst.php?{$get_padrao}\");"; + + $this->array_botao[] = 'Formação'; + $this->array_botao_url_script[] = "go(\"educar_servidor_formacao_lst.php?{$get_padrao}\");"; + + $this->array_botao[] = 'Faltas/Atrasos'; + $this->array_botao_url_script[] = "go(\"educar_falta_atraso_lst.php?{$get_padrao}\");"; + + $this->array_botao[] = 'Alocar Servidor'; + $this->array_botao_url_script[] = "go(\"educar_servidor_alocacao_cad.php?{$get_padrao}\");"; + + $this->array_botao[] = 'Alterar Nível'; + $this->array_botao_url_script[] = "popless();"; + + $obj_servidor_alocacao = new clsPmieducarServidorAlocacao(); + $lista_alocacao = $obj_servidor_alocacao->lista(NULL, + $this->ref_cod_instituicao, NULL, NULL, NULL, $this->cod_servidor, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); + + if ($lista) { + $this->array_botao[] = 'Substituir Horário Servidor'; + $this->array_botao_url_script[] = "go(\"educar_servidor_substituicao_cad.php?{$get_padrao}\");"; + } + + $obj_afastamento = new clsPmieducarServidorAfastamento(); + $afastamento = $obj_afastamento->afastado( $this->cod_servidor, $this->ref_cod_instituicao ); + + if (is_numeric($afastamento) && $afastamento == 0) { + $this->array_botao[] = 'Afastar Servidor'; + $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}\");"; + } + elseif (is_numeric($afastamento)) { + $this->array_botao[] = 'Retornar Servidor'; + $this->array_botao_url_script[] = "go(\"educar_servidor_afastamento_cad.php?{$get_padrao}&sequencial={$afastamento}\");"; + } + } + + $this->url_cancelar = 'educar_servidor_lst.php'; + $this->largura = '100%'; + } } -// cria uma extensao da classe base +// Instancia o objeto da página $pagina = new clsIndexBase(); -// cria o conteudo + +// Instancia o objeto de conteúdo $miolo = new indice(); -// adiciona o conteudo na clsBase -$pagina->addForm( $miolo ); -// gera o html + +// Passa o conteúdo para a página +$pagina->addForm($miolo); + +// Gera o HTML $pagina->MakeAll(); ?> - \ No newline at end of file diff --git a/ieducar/intranet/educar_servidor_substituicao_cad.php b/ieducar/intranet/educar_servidor_substituicao_cad.php index 9778cb3..9cda348 100644 --- a/ieducar/intranet/educar_servidor_substituicao_cad.php +++ b/ieducar/intranet/educar_servidor_substituicao_cad.php @@ -1,33 +1,45 @@ + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * Formulário de substituição de servidor + * + * Interface administrativa para a substituição de horário de um servidor por + * outro. As classes deste arquivo extendem as classes básicas de interface + * com o usuário. + * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Disponível desde a versão 1.0.0 + * @version $Id$ + */ + +require_once 'include/clsBase.inc.php'; +require_once 'include/clsCadastro.inc.php'; +require_once 'include/clsBanco.inc.php'; +require_once 'include/pmieducar/geral.inc.php'; class clsIndexBase extends clsBase { @@ -66,283 +78,163 @@ class indice extends clsCadastro var $professor; //var $dias_da_semana = array( '' => 'Selecione', 1 => 'Domingo', 2 => 'Segunda', 3 => 'Terça', 4 => 'Quarta', 5 => 'Quinta', 6 => 'Sexta', 7 => 'Sábado' ); - function Inicializar() - { - $retorno = "Novo"; - @session_start(); - $this->pessoa_logada = $_SESSION['id_pessoa']; - @session_write_close(); - - $this->ref_cod_servidor = $_GET["ref_cod_servidor"]; - $this->ref_ref_cod_instituicao = $_GET["ref_cod_instituicao"]; - - $obj_permissoes = new clsPermissoes(); - $obj_permissoes->permissao_cadastra( 635, $this->pessoa_logada, 3, "educar_servidor_lst.php" ); + public function Inicializar() { + $retorno = 'Novo'; + session_start(); + $this->pessoa_logada = $_SESSION['id_pessoa']; + session_write_close(); - if( is_numeric( $this->ref_cod_servidor ) && is_numeric( $this->ref_ref_cod_instituicao ) ) - { + $this->ref_cod_servidor = $_GET['ref_cod_servidor']; + $this->ref_ref_cod_instituicao = $_GET['ref_cod_instituicao']; + $obj_permissoes = new clsPermissoes(); + $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 3, 'educar_servidor_lst.php'); - $retorno = "Novo"; + if (is_numeric($this->ref_cod_servidor) && is_numeric($this->ref_ref_cod_instituicao)) { + $retorno = 'Novo'; - $obj_servidor = new clsPmieducarServidor($this->ref_cod_servidor,null,null,null,null,null,null,$this->ref_ref_cod_instituicao); - $det_servidor = $obj_servidor->detalhe(); - if(!$det_servidor) - { - header("location: educar_servidor_lst.php"); - die; - } - $obj_funcao = new clsPmieducarFuncao($det_servidor['ref_cod_funcao'],null,null,null,null,null,null,null,1,$this->ref_ref_cod_instituicao); - $det_funcao = $obj_funcao->detalhe(); - $this->professor = $det_funcao['professor'] == 1 ? "true" : "false"; + $obj_servidor = new clsPmieducarServidor($this->ref_cod_servidor, + NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_ref_cod_instituicao); + $det_servidor = $obj_servidor->detalhe(); - $obj = new clsPmieducarServidorAlocacao( ); - $lista = $obj->lista(null,$this->ref_ref_cod_instituicao,null,null,null,$this->ref_cod_servidor,null,null,null,null,null,null,null,null,null,1); - if( $lista ) - { - foreach( $lista AS $campo => $val ){ // passa todos os valores obtidos no registro para atributos do objeto - $temp = array(); - $temp['carga_horaria'] = $val['carga_horaria']; - $temp['periodo'] = $val['periodo']; - //$temp['hora_final'] = $val['hora_final']; - //$temp['dia_semana'] = $val['dia_semana']; - $temp['ref_cod_escola'] = $val['ref_cod_escola']; + // Nenhum servidor com o código de servidor e instituição + if (!$det_servidor) { + header('Location: educar_servidor_lst.php'); + die; + } - $this->alocacao_array[] = $temp; + $this->professor = $obj_servidor->isProfessor() == TRUE ? 'true' : 'false'; - } + $obj = new clsPmieducarServidorAlocacao(); + $lista = $obj->lista(NULL, $this->ref_ref_cod_instituicao, NULL, + NULL, NULL, $this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, 1); - /*$obj_permissoes = new clsPermissoes(); - if( $obj_permissoes->permissao_excluir( 635, $this->pessoa_logada, 3 ) ) - { - $this->fexcluir = true; - }*/ + if ($lista) { + // passa todos os valores obtidos no registro para atributos do objeto + foreach ($lista as $campo => $val){ + $temp = array(); + $temp['carga_horaria'] = $val['carga_horaria']; + $temp['periodo'] = $val['periodo']; + $temp['ref_cod_escola'] = $val['ref_cod_escola']; - $retorno = "Novo"; - } + $this->alocacao_array[] = $temp; + } + + $retorno = "Novo"; + } + + $this->carga_horaria = $det_servidor['carga_horaria']; + } + else { + header('Location: educar_servidor_lst.php'); + die; + } + + $this->url_cancelar = "educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_ref_cod_instituicao}"; + $this->nome_url_cancelar = "Cancelar"; + + return $retorno; + } - $this->carga_horaria = $det_servidor['carga_horaria']; - } - else{ - header("location: educar_servidor_lst.php"); - die; - } - $this->url_cancelar = "educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_ref_cod_instituicao}"; - $this->nome_url_cancelar = "Cancelar"; - return $retorno; - } - function Gerar() - { + public function Gerar() { + $obj_inst = new clsPmieducarInstituicao($this->ref_ref_cod_instituicao); + $inst_det = $obj_inst->detalhe(); - $obj_inst = new clsPmieducarInstituicao($this->ref_ref_cod_instituicao); - $inst_det = $obj_inst->detalhe(); + $this->campoRotulo("nm_instituicao", "Instituição", $inst_det['nm_instituicao']); + $this->campoOculto("ref_ref_cod_instituicao", $this->ref_ref_cod_instituicao); - $this->campoRotulo("nm_instituicao","Instituição",$inst_det['nm_instituicao']); - $this->campoOculto("ref_ref_cod_instituicao",$this->ref_ref_cod_instituicao); + $opcoes = array("" => "Selecione"); + if (class_exists("clsPmieducarServidor")) { + $objTemp = new clsPmieducarServidor($this->ref_cod_servidor); + $det = $objTemp->detalhe(); + if ($det) { + foreach ($det as $key => $registro) { + $this->$key = $registro; + } + } + if ($this->ref_cod_servidor) { + $objTemp = new clsFuncionario($this->ref_cod_servidor); + $detalhe = $objTemp->detalhe(); + $detalhe = $detalhe['idpes']->detalhe(); + $nm_servidor = $detalhe['nome']; + } + } - //$this->campoRotulo("nm_escola","Escola",$nm_escola); + $this->campoRotulo("nm_servidor", "Servidor", $nm_servidor); - $opcoes = array( "" => "Selecione" ); - if( class_exists( "clsPmieducarServidor" ) ) - { - $objTemp = new clsPmieducarServidor($this->ref_cod_servidor); - $det = $objTemp->detalhe(); - if ($det ) - { - foreach ( $det as $key => $registro ) - { - $this->$key = $registro; - } - } - - if( $this->ref_cod_servidor ) - { - $objTemp = new clsFuncionario( $this->ref_cod_servidor ); - $detalhe = $objTemp->detalhe(); - $detalhe = $detalhe["idpes"]->detalhe(); - $nm_servidor = $detalhe["nome"]; - } - } - else - { - echo ""; - $opcoes = array( "" => "Erro na geracao" ); - } + $this->campoOculto("ref_cod_servidor", $this->ref_cod_servidor); + $this->campoOculto("professor",$this->professor); - $this->campoRotulo( "nm_servidor", "Servidor", $nm_servidor); + $this->campoTextoInv("ref_cod_servidor_todos_", "Substituir por:", "", + 30, 255, TRUE, FALSE, FALSE, "", "ref_ref_cod_instituicao}&ref_cod_servidor={$this->ref_cod_servidor}&tipo=livre&professor={$this->professor}', 'nome')\" src=\"imagens/lupa.png\">","","","" ); + $this->campoOculto("ref_cod_servidor_todos", ""); - $this->campoOculto( "ref_cod_servidor", $this->ref_cod_servidor); - $this->campoOculto("professor",$this->professor); - // $this->campoRotulo("substituir_todos","substituir todos",""); - $this->campoTextoInv( "ref_cod_servidor_todos_", "Substituir por:", "", 30, 255, true, false, false, "", "ref_ref_cod_instituicao}&ref_cod_servidor={$this->ref_cod_servidor}&tipo=livre&professor={$this->professor}', 'nome')\" src=\"imagens/lupa.png\">","","","" ); - $this->campoOculto("ref_cod_servidor_todos", ""); + $this->campoOculto("alocacao_array", serialize($this->alocacao_array)); + $this->acao_enviar = 'acao2()'; + } - //$this->campoOculto( "todos","false"); - $this->campoOculto( "alocacao_array", serialize( $this->alocacao_array ) ); - //array_multisort($this->alocacao_array); + public function Novo() { + session_start(); + $this->pessoa_logada = $_SESSION['id_pessoa']; + session_write_close(); + + $professor = isset($_POST['professor']) ? strtolower($_POST['professor']) : 'FALSE'; + $substituto = isset($_POST['ref_cod_servidor_todos']) ? $_POST['ref_cod_servidor_todos'] : NULL; + $permissoes = new clsPermissoes(); + $permissoes->permissao_cadastra(635, $this->pessoa_logada, 3, 'educar_servidor_alocacao_lst.php'); + $this->alocacao_array = array(); + if ($_POST['alocacao_array']) { + $this->alocacao_array = unserialize(urldecode($_POST['alocacao_array'])); + } + + if ($this->alocacao_array) { + // Substitui todas as alocações + foreach ($this->alocacao_array as $key => $alocacao) { + $obj = new clsPmieducarServidorAlocacao(NULL, $this->ref_ref_cod_instituicao, + $this->pessoa_logada, $this->pessoa_logada, $alocacao['ref_cod_escola'], + $this->ref_cod_servidor, NULL, NULL, NULL, $alocacao['carga_horaria'], + $alocacao['periodo']); - /* if ( $this->alocacao_array ) - { - $excluir_ok = false; - if($_POST['excluir_dia_semana'] || $_POST['excluir_dia_semana'] == "0") - $excluir_ok = true; - $tamanho = sizeof($alocacao); - $script = ""; - echo $script; - }*/ - $this->acao_enviar = 'acao2()'; + $return = $obj->lista(NULL, $this->ref_ref_cod_instituicao, NULL, NULL, + $alocacao['ref_cod_escola'], $this->ref_cod_servidor, NULL, NULL, NULL, + NULL, 1, $alocacao['carga_horaria']); + + if (FALSE !== $return) { + $substituiu = $obj->substituir_servidor($substituto); + if (!$substituiu) { + $this->mensagem = "Substituicao não realizado.
"; + + return FALSE; + } + } + } - } + // Substituição do servidor no quadro de horários (caso seja professor) + if('true' == $professor) { + $quadroHorarios = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, NULL, + NULL, NULL, NULL, $this->ref_ref_cod_instituicao, NULL, $this->ref_cod_servidor, + NULL, NULL, NULL, NULL, 1, NULL, NULL); + $quadroHorarios->substituir_servidor($substituto); + } + } - function Novo() - { - @session_start(); - $this->pessoa_logada = $_SESSION['id_pessoa']; - @session_write_close(); + $this->mensagem .= 'Cadastro efetuado com sucesso.
'; + $destination = 'educar_servidor_det.php?cod_servidor=%s&ref_cod_instituicao=%s'; + $destination = sprintf($destination, $this->ref_cod_servidor, $this->ref_ref_cod_instituicao); - $obj_permissoes = new clsPermissoes(); - $obj_permissoes->permissao_cadastra( 635, $this->pessoa_logada, 3, "educar_servidor_alocacao_lst.php" ); + header('Location: ' . $destination); + die(); + } - if ( $_POST["alocacao_array"] ) - $this->alocacao_array = unserialize( urldecode( $_POST["alocacao_array"] ) ); - - if($this->alocacao_array){ - - $substituto = $_POST['ref_cod_servidor_todos']; - - foreach ($this->alocacao_array as $key => $alocacao) - { - //echo $_POST['todos'] == false ; - - //if($substituto){ - - - $obj = new clsPmieducarServidorAlocacao(null,$this->ref_ref_cod_instituicao,$this->pessoa_logada,$this->pessoa_logada,$alocacao['ref_cod_escola'],$this->ref_cod_servidor,null,null,null,$alocacao['carga_horaria'],$alocacao['periodo'] ); - -// if($obj->lista(null, $this->ref_ref_cod_instituicao, $this->pessoa_logada, $this->pessoa_logada, $alocacao['ref_cod_escola'], $this->ref_cod_servidor, $alocacao['dia_semana'], $alocacao['hora_inicial'], $alocacao['hora_final'], $this->data_cadastro, $this->data_exclusao, $this->ativo)){ - if($obj->lista(null, $this->ref_ref_cod_instituicao, null,null, $alocacao['ref_cod_escola'], $this->ref_cod_servidor, null,null,null,null,1,$alocacao['carga_horaria'])){ - //$obj->edita(); - - //return true; - $substituiu = $obj->substituir_servidor($substituto); - if( !$substituiu ) - { - $this->mensagem = "Substituicao não realizado.
"; - echo ""; - return false; - - } - } - /*$obj_serv = new clsPmieducarServidor($this->ref_cod_servidor,null,null,null,null,null,null,1,$this->ref_ref_cod_instituicao); - $det_serv = $obj_serv->detalhe(); - if($det_serv['ref_cod_funcao']) - { - $obj_funcao = new clsPmieducarFuncao($det_serv['ref_cod_funcao'],null,null,null,null,null,null,null,1,$this->ref_ref_cod_instituicao); - $det_funcao = $obj_funcao->detalhe(); - //if($det_funca) - }*/ - //} - } - /** - * SUBSTITUICAO NO QUADRO DE HORARIO PARA SERVIDORES QUE SAO PROFESSORES - */ - if($this->professor == "true"){ - $obj_quadro_horario = new clsPmieducarQuadroHorarioHorarios(null,null,null,null,null,null,$this->ref_ref_cod_instituicao,null,$this->ref_cod_servidor,null,null,null,null,1,null,null); - $obj_quadro_horario->substituir_servidor($substituto); - } - } - $this->mensagem .= "Cadastro efetuado com sucesso.
"; - header( "Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_ref_cod_instituicao} "); - die(); - return true; - } function Editar() { diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php index a43c246..c2a9810 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php @@ -1,36 +1,40 @@ + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * clsPmieducarQuadroHorarioHorarios class + * + * Implementa o mapeamento com a tabela pmieducar.quadro_horario_horarios + * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Classe disponível desde a versão 1.0.0 + * @version $Id$ + */ + +require_once 'include/pmieducar/geral.inc.php'; class clsPmieducarQuadroHorarioHorarios { @@ -640,7 +644,7 @@ class clsPmieducarQuadroHorarioHorarios $sql .= $filtros . $this->getOrderby() . $this->getLimite(); $this->_total = $db->CampoUnico( "SELECT COUNT(0) FROM {$this->_tabela} qhh {$filtros}" ); - + $db->Consulta( $sql ); if( $countCampos > 1 ) @@ -813,58 +817,50 @@ class clsPmieducarQuadroHorarioHorarios return ""; } - /** - * Realiza a substituicao de um servidor - * - * @return bool - */ - function substituir_servidor($int_ref_cod_servidor_substituto) - { - if( is_numeric( $int_ref_cod_servidor_substituto ) && is_numeric( $this->ref_cod_instituicao_servidor ) ) - { - if( class_exists( "clsPmieducarServidor" ) ) - { - $tmp_obj = new clsPmieducarServidor( $int_ref_cod_servidor_substituto,null,null,null,null,null,null,null, $this->ref_cod_instituicao_servidor ); - if( method_exists( $tmp_obj, "existe") ) - { - if( !$tmp_obj->existe() ) - { - return false; - } - } - else if( method_exists( $tmp_obj, "detalhe") ) - { - if( !$tmp_obj->detalhe() ) - { - return false; - } - } - } - else - { - if( !$db->CampoUnico( "SELECT 1 FROM pmieducar.servidor WHERE cod_servidor = '{$int_ref_cod_servidor_substituto}' AND ref_cod_instituicao = '{$ref_ref_cod_instituicao}'" ) ) - { - return false; - } - } - } - if( is_numeric( $this->ref_servidor ) && is_numeric( $this->ref_cod_instituicao_servidor ) ) - { + /** + * Substitui a alocação entre servidores no quadro de horários + * + * Substitui a alocação entre servidores, atualizando a tabela + * pmieducar.servidor_quadro_horario_horarios. O servidor nesse caso é + * de alguma função do tipo professor. Esse método não valida esse dado, + * sendo de responsabilidade do código cliente + * + * @param int $int_ref_cod_servidor_substituto Código do servidor que substituirá o atual + * @return bool TRUE em caso de sucesso, FALSE caso contrário + */ + public function substituir_servidor($int_ref_cod_servidor_substituto) { + if (is_numeric($int_ref_cod_servidor_substituto) && + is_numeric( $this->ref_cod_instituicao_servidor)) { + $servidor = new clsPmieducarServidor($int_ref_cod_servidor_substituto, + NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao_servidor); - //delete - $db = new clsBanco(); - $db->Consulta( "UPDATE {$this->_tabela} SET ref_servidor='$int_ref_cod_servidor_substituto' , data_exclusao = NOW() WHERE ref_servidor = '{$this->ref_servidor}' AND ref_cod_instituicao_servidor = '{$this->ref_cod_instituicao_servidor}' " ); - return true; + if (!$servidor->existe()) { + return FALSE; + } + } + + if (is_numeric($this->ref_servidor) && + is_numeric($this->ref_cod_instituicao_servidor)) { + + $sql = "UPDATE %s SET ref_servidor='%d', data_exclusao = NOW() "; + $sql .= "WHERE ref_servidor = '%d' AND ref_cod_instituicao_servidor = '%d'"; + + $sql = sprintf($sql, $this->_tabela, $int_ref_cod_servidor_substituto, + $this->ref_servidor, $this->ref_cod_instituicao_servidor); + + $db = new clsBanco(); + $db->Consulta($sql); + + return TRUE; + } + + return FALSE; + } - //$this->ativo = 0; - // return $this->edita(); - } - return false; - } /** * Retorna um array com as turmas e horarios diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php index 48a21a0..c1774ad 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php @@ -1,35 +1,46 @@ * - * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí - * ctima@itajai.sc.gov.br + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. * - * Este programa é software livre, você pode redistribuí-lo e/ou - * modificá-lo sob os termos da Licença Pública Geral GNU, conforme - * publicada pela Free Software Foundation, tanto a versão 2 da - * Licença como (a seu critério) qualquer versão mais nova. + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. * - * Este programa é distribuído na expectativa de ser útil, mas SEM - * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- - * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- - * sulte a Licença Pública Geral GNU para obter mais detalhes. + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * clsPmieducarServidor class * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU - * junto com este programa. Se não, escreva para a Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307, USA. + * Implementa o mapeamento com a tabela pmieducar.servidor. Contém métodos para + * busca de servidores utilizando os relacionamentos estrangeiros que a tabela + * possui. * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Classe disponível desde a versão 1.0.0 + * @version $Id$ */ + require_once 'include/pmieducar/geral.inc.php'; -class clsPmieducarServidor -{ +class clsPmieducarServidor { + var $cod_servidor; var $ref_cod_deficiencia; var $ref_idesco; @@ -403,436 +414,466 @@ class clsPmieducarServidor return false; } - /** - * Retorna uma lista filtrados de acordo com os parametros - * - * @return array - */ - public function lista($int_cod_servidor = NULL, $int_ref_cod_deficiencia = NULL, - $int_ref_idesco = null, $int_carga_horaria = NULL, $date_data_cadastro_ini = NULL, - $date_data_cadastro_fim = NULL, $date_data_exclusao_ini = NULL, - $date_data_exclusao_fim = NULL, $int_ativo = NULL, - $int_ref_cod_instituicao = NULL, $str_tipo = NULL, $array_horario = NULL, - $str_not_in_servidor = NULL, $str_nome_servidor = NULL, $boo_professor = FALSE, - $str_horario = NULL, $bool_ordena_por_nome = FALSE, $lst_matriculas = NULL, - $matutino = FALSE, $vespertino = FALSE, $noturno = FALSE, - $int_ref_cod_escola = NULL, $str_hr_mat = NULL, $str_hr_ves = NULL, - $str_hr_not = NULL, $int_dia_semana = NULL, - $alocacao_escola_instituicao = NULL, $int_identificador = NULL, - $int_ref_cod_curso = NULL, $int_ref_cod_disciplina = NULL, - $int_ref_cod_subnivel = NULL) { - - $whereAnd = " WHERE "; - $filtros = ""; - $tabela_compl = ""; - - /*if ( $boo_professor ) - { - $tabela_compl .= ", {$this->_schema}funcao f"; - }*/ - - if ( is_bool( $bool_ordena_por_nome ) ) - { - $tabela_compl .= ", cadastro.pessoa p"; - $this->_campos_lista2 .= ",p.nome"; - $filtros .= "{$whereAnd} s.cod_servidor = p.idpes "; - $whereAnd = " AND "; - $this->setOrderby( "nome" ); - } - else - { - $this->_campos_lista2 = $this->_todos_campos2; - $this->setOrderby( " 1 " ); - } - $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl}"; - if ( is_numeric( $int_cod_servidor ) ) - { - $filtros .= "{$whereAnd} s.cod_servidor = '{$int_cod_servidor}'"; - $whereAnd = " AND "; - } - - if ( is_numeric( $int_ref_cod_deficiencia ) ) - { - $filtros .= "{$whereAnd} s.ref_cod_deficiencia = '{$int_ref_cod_deficiencia}'"; - $whereAnd = " AND "; - } + /** + * Retorna um array com resultados de uma pesquisa parametrizada + * + * O array retornado contém em cada um de seus items um array associativo onde + * as chaves correspondem aos campos da tabela indicados por + * $this->_campos_lista. + * + * A pesquisa SELECT realizada é afetada por diversos parâmetros disponíveis. + * Alguns dos parâmetros induzem a subqueries para a avaliação de diferentes + * funcionalidades do sistema. + * + * @see intranet/educar_pesquisa_servidor_lst.php Listagem de busca de + * servidores + * @see intranet/educar_quadro_horario_horarios_cad.php Cadastro de horário + * de aula para uma turma + * @see intranet/educar_turma_cad.php Cadastro de turma + * + * @param int $int_cod_servidor Código do servidor + * @param int $int_ref_cod_deficiencia Código da deficiência do servidor + * @param int $int_ref_idesco Código da escolaridade do servidor + * @param int $int_carga_horaria Carga horária do servidor + * @param string $date_data_cadastro_ini Data de cadastro inicial (busca por intervalo >= ao valor) + * @param string $date_data_cadastro_fim Data de cadastro final (busca por intervalo <= ao valor) + * @param string $date_data_exclusao_ini Data da exclusão inicial (busca por intervalo >= ao valor) + * @param string $date_data_exclusao_fim Data da exclusão final (busca por intervalo <= ao valor) + * @param int $int_ativo '1' para buscar apenas por servidores ativos + * @param int $int_ref_cod_instituicao Código da instituição do servidor + * @param string $str_tipo 'livre' para buscar apenas por servidores não alocados (subquery) + * @param array $array_horario Busca por horário de alocação do servidor (subquery) + * @param int $str_not_in_servidor Código de servidor a excluir + * @param string $str_nome_servidor Busca do tipo LIKE pelo padrão de nome do servidor (subquery) + * @param int|string $boo_professor Qualquer valor que avalie para TRUE para buscar por servidores professores (subquery) + * @param string $str_horario 'S' para buscar se o servidor está alocado em um dos horários (indicados $matutino, $vespertino ou $noturno) (subquery) + * @param bool $bool_ordena_por_nome TRUE para ordenar os resultados pelo campo nome por ordem alfabética crescente + * @param string $lst_matriculas Verifica se o servidor não está na lista de matriculas (string com inteiros separados por vírgula: 54, 55, 60). + * Apenas verifica quando a buscar por horário de alocação é realizada + * @param bool $matutino Busca por professores com horário livre no período matutino + * @param bool $vespertino Busca por professores com horário livre no período vespertino + * @param bool $noturno Busca por professores com horário livre no período noturno + * @param int $int_ref_cod_escola Código da escola para verificar se o servidor está alocado nela (usado em várias das subqueries) + * @param string $str_hr_mat Duração da aula (formato HH:MM) para o período matutino + * @param string $str_hr_ves Duração da aula (formato HH:MM) para o período vespertino + * @param string $str_hr_not Duração da aula (formato HH:MM) para o período noturno + * @param int $int_dia_semana Inteiro para o dia da semana (1 = domingo, 7 = sábado) + * @param int $alocacao_escola_instituicao Código da instituição ao qual o servidor deve estar cadastrado (subquery) + * @param int $int_identificador Campo identificado para busca na tabela pmieducar.quadro_horario_horarios_aux (subquery) + * @param int $int_ref_cod_curso Código do curso que o professor deve estar cadastrado (subquery) + * @param int $int_ref_cod_disciplina Código da disciplina que o professor deve ser habilitado (subquery). + * Somente verifica quando o curso passado por $int_ref_cod_curso não + * possui sistema de falta globalizada + * @param int $int_ref_cod_subnivel Código de subnível que o servidor deve possuir + * @return array|bool Array com os resultados da query SELECT ou FALSE caso + * nenhum registro tenha sido encontrado + */ + public function lista( + $int_cod_servidor = NULL, + $int_ref_cod_deficiencia = NULL, + $int_ref_idesco = NULL, + $int_carga_horaria = NULL, + $date_data_cadastro_ini = NULL, + $date_data_cadastro_fim = NULL, + $date_data_exclusao_ini = NULL, + $date_data_exclusao_fim = NULL, + $int_ativo = NULL, + $int_ref_cod_instituicao = NULL, + $str_tipo = NULL, + $array_horario = NULL, + $str_not_in_servidor = NULL, + $str_nome_servidor = NULL, + $boo_professor = FALSE, + $str_horario = NULL, + $bool_ordena_por_nome = FALSE, + $lst_matriculas = NULL, + $matutino = FALSE, + $vespertino = FALSE, + $noturno = FALSE, + $int_ref_cod_escola = NULL, + $str_hr_mat = NULL, + $str_hr_ves = NULL, + $str_hr_not = NULL, + $int_dia_semana = NULL, + $alocacao_escola_instituicao = NULL, + $int_identificador = NULL, + $int_ref_cod_curso = NULL, + $int_ref_cod_disciplina = NULL, + $int_ref_cod_subnivel = NULL + ) { + + $whereAnd = ' WHERE '; + $filtros = ''; + $tabela_compl = ''; + + if (is_bool($bool_ordena_por_nome)) { + $tabela_compl .= ', cadastro.pessoa p'; + $this->_campos_lista2 .= ', p.nome'; + $filtros .= $whereAnd . ' s.cod_servidor = p.idpes '; + $whereAnd = ' AND '; + $this->setOrderby('nome'); + } + else { + $this->_campos_lista2 = $this->_todos_campos2; + $this->setOrderby(' 1 '); + } + + $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl}"; + + if (is_numeric($int_cod_servidor)) { + $filtros .= "{$whereAnd} s.cod_servidor = '{$int_cod_servidor}'"; + $whereAnd = " AND "; + } + + if (is_numeric($int_ref_cod_deficiencia)) { + $filtros .= "{$whereAnd} s.ref_cod_deficiencia = '{$int_ref_cod_deficiencia}'"; + $whereAnd = " AND "; + } + + if (is_numeric($int_ref_idesco)) { + $filtros .= "{$whereAnd} s.ref_idesco = '{$int_ref_idesco}'"; + $whereAnd = " AND "; + } + + if (is_numeric($int_carga_horaria)) { + $filtros .= "{$whereAnd} s.carga_horaria = '{$int_carga_horaria}'"; + $whereAnd = " AND "; + } + + if (is_string($date_data_cadastro_ini)) { + $filtros .= "{$whereAnd} s.data_cadastro >= '{$date_data_cadastro_ini}'"; + $whereAnd = " AND "; + } + + if (is_string($date_data_cadastro_fim)) { + $filtros .= "{$whereAnd} s.data_cadastro <= '{$date_data_cadastro_fim}'"; + $whereAnd = " AND "; + } + + if (is_string($date_data_exclusao_ini)) { + $filtros .= "{$whereAnd} s.data_exclusao >= '{$date_data_exclusao_ini}'"; + $whereAnd = " AND "; + } + + if (is_string($date_data_exclusao_fim)) { + $filtros .= "{$whereAnd} s.data_exclusao <= '{$date_data_exclusao_fim}'"; + $whereAnd = " AND "; + } + + if (is_null($int_ativo) || $int_ativo) { + $filtros .= "{$whereAnd} s.ativo = '1'"; + $whereAnd = " AND "; + } + else { + $filtros .= "{$whereAnd} s.ativo = '0'"; + $whereAnd = " AND "; + } + + if (is_numeric($int_ref_cod_instituicao)) { + $filtros .= "{$whereAnd} s.ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; + $whereAnd = " AND "; + } + + // Busca tipo LIKE pelo nome do servidor + if (is_string($str_nome_servidor)) { + $filtros .= "{$whereAnd} EXISTS (SELECT 1 + FROM cadastro.pessoa p + WHERE cod_servidor = p.idpes + AND to_ascii(p.nome) LIKE to_ascii('%$str_nome_servidor%')) "; + $whereAnd = " AND "; + } + + // Seleciona apenas servidores que tenham a carga atual maior ou igual ao + // do servidor atual + if (is_string($str_tipo)) { + switch ($str_tipo) { + case "livre": + if (is_numeric($int_ref_cod_instituicao)) { + $where = " AND s.ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; + $where2 = " AND sa.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; + } + + $filtros .= " + {$whereAnd} NOT EXISTS + (SELECT 1 + FROM pmieducar.servidor_alocacao sa + WHERE sa.ref_cod_servidor = s.cod_servidor $where2)"; + + $filtros .= " + {$whereAnd} (s.carga_horaria::text || ':00:00') >= COALESCE( + (SELECT SUM(carga_horaria)::text + FROM pmieducar.servidor_alocacao saa + WHERE saa.ref_cod_servidor = {$str_not_in_servidor}),'00:00') $where"; + + $whereAnd = " AND "; + break; + } + + $whereAnd = " AND "; + } + + if (is_numeric($alocacao_escola_instituicao)) { + $filtros .= " + {$whereAnd} s.cod_servidor IN + (SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE "; + + if (is_numeric($int_ref_cod_instituicao)) { + $filtros .= " a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; + } + + if (is_numeric($int_ref_cod_escola)) { + $filtros .= " and ref_cod_escola = '{$int_ref_cod_escola}' "; + } - if ( is_numeric( $int_ref_idesco ) ) - { - $filtros .= "{$whereAnd} s.ref_idesco = '{$int_ref_idesco}'"; - $whereAnd = " AND "; - } - - if ( is_numeric( $int_carga_horaria ) ) - { - $filtros .= "{$whereAnd} s.carga_horaria = '{$int_carga_horaria}'"; - $whereAnd = " AND "; - } - - if ( is_string( $date_data_cadastro_ini ) ) - { - $filtros .= "{$whereAnd} s.data_cadastro >= '{$date_data_cadastro_ini}'"; - $whereAnd = " AND "; - } - - if ( is_string( $date_data_cadastro_fim ) ) - { - $filtros .= "{$whereAnd} s.data_cadastro <= '{$date_data_cadastro_fim}'"; - $whereAnd = " AND "; - } - - if ( is_string( $date_data_exclusao_ini ) ) - { - $filtros .= "{$whereAnd} s.data_exclusao >= '{$date_data_exclusao_ini}'"; - $whereAnd = " AND "; - } - - if ( is_string( $date_data_exclusao_fim ) ) - { - $filtros .= "{$whereAnd} s.data_exclusao <= '{$date_data_exclusao_fim}'"; - $whereAnd = " AND "; - } - - if ( is_null( $int_ativo ) || $int_ativo ) - { - $filtros .= "{$whereAnd} s.ativo = '1'"; - $whereAnd = " AND "; - } - else - { - $filtros .= "{$whereAnd} s.ativo = '0'"; - $whereAnd = " AND "; - } - - if ( is_numeric( $int_ref_cod_instituicao ) ) - { - $filtros .= "{$whereAnd} s.ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; - $whereAnd = " AND "; - } - - if (is_string( $str_nome_servidor ) ) - { - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 - FROM cadastro.pessoa p - WHERE cod_servidor = p.idpes - AND to_ascii( p.nome ) like to_ascii( '%$str_nome_servidor%' ) ) "; - $whereAnd = " AND "; - } - - if ( is_string( $str_tipo ) ) - { - switch ( $str_tipo ) - { - case "livre": - if ( is_numeric( $int_ref_cod_instituicao ) ) - { - $where = " AND s.ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; - $where2 = " AND sa.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; - - } - $filtros .= "{$whereAnd} NOT EXISTS ( SELECT 1 - FROM pmieducar.servidor_alocacao sa - WHERE sa.ref_cod_servidor = s.cod_servidor $where2 )"; - $filtros .= "{$whereAnd} s.carga_horaria >= coalesce(( SELECT sum( carga_horaria) - FROM pmieducar.servidor_alocacao saa - WHERE saa.ref_cod_servidor = {$str_not_in_servidor} ),'00:00')$where"; - $whereAnd = " AND "; - break; - } - - $whereAnd = " AND "; - } - - - if( is_numeric($alocacao_escola_instituicao)) - { - $filtros .= "{$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE "; - if (is_numeric($int_ref_cod_instituicao)) { - $filtros .= " a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}'"; - } - if (is_numeric($int_ref_cod_escola)) { - $filtros .= " and ref_cod_escola = '{$int_ref_cod_escola}' "; - } $filtros .= ') '; - } - - if ( is_array( $array_horario ) ) - { - $cond = ""; - if ( is_numeric( $int_ref_cod_instituicao ) ) - { - $where .= " {$cond} a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; - $cond = "AND"; - } - - if ( is_numeric( $int_ref_cod_escola ) ) - { - $where .= " {$cond} a.ref_cod_escola = '{$int_ref_cod_escola}' "; - $cond = "AND"; - } - - - $where .= " {$cond} a.ativo = '1'"; - $cond = "AND"; - - $hora_ini = explode( ":", $array_horario[1] ); - $hora_fim = explode( ":", $array_horario[2] ); - $horas = sprintf( "%02d", ( int ) abs( $hora_fim[0] ) - abs( $hora_ini[0] ) ); - $minutos = sprintf( "%02d", ( int ) abs( $hora_fim[1] ) - abs( $hora_ini[1] ) ); - - if ( $matutino ) - { - if ( is_string( $str_horario ) && $str_horario == "S" ) - { -// A somatória retorna nulo - $filtros .= "{$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 1 - AND a.carga_horaria >= coalesce( ( SELECT SUM( qhh.hora_final - qhh.hora_inicial ) - FROM pmieducar.quadro_horario_horarios qhh - WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhh.ref_cod_escola = '$int_ref_cod_escola' - AND hora_inicial >= '08:00' - AND hora_inicial <= '12:00' - AND qhh.ativo = '1' - AND qhh.dia_semana <> '$int_dia_semana' - AND qhh.ref_servidor = a.ref_cod_servidor - GROUP BY qhh.ref_servidor ) ,'00:00') + '$str_hr_mat' + COALESCE((SELECT SUM( qhha.hora_final - qhha.hora_inicial ) - FROM pmieducar.quadro_horario_horarios_aux qhha - WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhha.ref_cod_escola = $int_ref_cod_escola - AND hora_inicial >= '08:00' - AND hora_inicial <= '12:00' - AND qhha.ref_servidor = a.ref_cod_servidor - AND identificador = $int_identificador - GROUP BY qhha.ref_servidor),'00:00'))"; - } - else - { - $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 1 )"; - } - } - - if ( $vespertino ) - { - if ( is_string( $str_horario ) && $str_horario == "S" ) - { - $filtros .= "{$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 2 - AND a.carga_horaria >= coalesce(( SELECT SUM( qhh.hora_final - qhh.hora_inicial ) - FROM pmieducar.quadro_horario_horarios qhh - WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhh.ref_cod_escola = '$int_ref_cod_escola' - AND qhh.ativo = '1' - AND hora_inicial >= '12:00' - AND hora_inicial <= '18:00' - AND qhh.dia_semana <> '$int_dia_semana' - AND qhh.ref_servidor = a.ref_cod_servidor - GROUP BY qhh.ref_servidor ),'00:00') + '$str_hr_ves' + COALESCE((SELECT SUM( qhha.hora_final - qhha.hora_inicial ) - FROM pmieducar.quadro_horario_horarios_aux qhha - WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhha.ref_cod_escola = '$int_ref_cod_escola' - AND qhha.ref_servidor = a.ref_cod_servidor - AND hora_inicial >= '12:00' - AND hora_inicial <= '18:00' - AND identificador = $int_identificador - GROUP BY qhha.ref_servidor),'00:00') )"; - } - else - { - $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 2 )"; - } - } - - if ( $noturno ) - { - if ( is_string( $str_horario ) && $str_horario == "S" ) - { - $filtros .= "{$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 3 - AND a.carga_horaria >= coalesce(( SELECT SUM( qhh.hora_final - qhh.hora_inicial ) - FROM pmieducar.quadro_horario_horarios qhh - WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhh.ref_cod_escola = '$int_ref_cod_escola' - AND qhh.ativo = '1' - AND hora_inicial >= '18:00' - AND hora_inicial <= '23:00' - AND qhh.dia_semana <> '$int_dia_semana' - GROUP BY qhh.ref_servidor ),'00:00') + '$str_hr_not' + COALESCE((SELECT SUM( qhha.hora_final - qhha.hora_inicial ) - FROM pmieducar.quadro_horario_horarios_aux qhha - WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' - AND qhha.ref_cod_escola = '$int_ref_cod_escola' - AND qhha.ref_servidor = a.ref_cod_servidor - AND hora_inicial >= '18:00' - AND hora_inicial <= '23:00' - AND identificador = $int_identificador - GROUP BY qhha.ref_servidor),'00:00') )"; - } - else - { - $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( SELECT a.ref_cod_servidor - FROM pmieducar.servidor_alocacao a - WHERE $where - AND a.periodo = 3 )"; - } - } + } + + if (is_array($array_horario)) { + $cond = ""; + if (is_numeric($int_ref_cod_instituicao)) { + $where .= " {$cond} a.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' "; + $cond = "AND"; + } + + if (is_numeric($int_ref_cod_escola)) { + $where .= " {$cond} a.ref_cod_escola = '{$int_ref_cod_escola}' "; + $cond = "AND"; + } + + $where .= " {$cond} a.ativo = '1'"; + $cond = "AND"; + + $hora_ini = explode(":", $array_horario[1]); + $hora_fim = explode(":", $array_horario[2]); + $horas = sprintf("%02d", (int) abs($hora_fim[0]) - abs($hora_ini[0])); + $minutos = sprintf("%02d", (int) abs($hora_fim[1]) - abs($hora_ini[1])); + + if ($matutino) { + if (is_string($str_horario) && $str_horario == "S") { + // A somatória retorna nulo + $filtros .= " + {$whereAnd} s.cod_servidor IN (SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 1 + AND a.carga_horaria >= COALESCE( + (SELECT SUM(qhh.hora_final - qhh.hora_inicial) + FROM pmieducar.quadro_horario_horarios qhh + WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhh.ref_cod_escola = '$int_ref_cod_escola' + AND hora_inicial >= '08:00' + AND hora_inicial <= '12:00' + AND qhh.ativo = '1' + AND qhh.dia_semana <> '$int_dia_semana' + AND qhh.ref_servidor = a.ref_cod_servidor + GROUP BY qhh.ref_servidor ) ,'00:00') + '$str_hr_mat' + COALESCE( + (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) + FROM pmieducar.quadro_horario_horarios_aux qhha + WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhha.ref_cod_escola = $int_ref_cod_escola + AND hora_inicial >= '08:00' + AND hora_inicial <= '12:00' + AND qhha.ref_servidor = a.ref_cod_servidor + AND identificador = $int_identificador + GROUP BY qhha.ref_servidor),'00:00'))"; + } + else { + $filtros .= " + {$whereAnd} s.cod_servidor NOT IN (SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 1)"; + } + } + + if ($vespertino) { + if (is_string($str_horario) && $str_horario == "S") { + $filtros .= " + {$whereAnd} s.cod_servidor IN + (SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 2 + AND a.carga_horaria >= COALESCE( + (SELECT SUM( qhh.hora_final - qhh.hora_inicial ) + FROM pmieducar.quadro_horario_horarios qhh + WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhh.ref_cod_escola = '$int_ref_cod_escola' + AND qhh.ativo = '1' + AND hora_inicial >= '12:00' + AND hora_inicial <= '18:00' + AND qhh.dia_semana <> '$int_dia_semana' + AND qhh.ref_servidor = a.ref_cod_servidor + GROUP BY qhh.ref_servidor ),'00:00') + '$str_hr_ves' + COALESCE( + (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) + FROM pmieducar.quadro_horario_horarios_aux qhha + WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhha.ref_cod_escola = '$int_ref_cod_escola' + AND qhha.ref_servidor = a.ref_cod_servidor + AND hora_inicial >= '12:00' + AND hora_inicial <= '18:00' + AND identificador = $int_identificador + GROUP BY qhha.ref_servidor),'00:00') )"; + } + else { + $filtros .= " + {$whereAnd} s.cod_servidor NOT IN ( SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 2 )"; + } + } + + if ($noturno) { + if (is_string($str_horario) && $str_horario == "S") { + $filtros .= " + {$whereAnd} s.cod_servidor IN ( SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 3 + AND a.carga_horaria >= COALESCE( + (SELECT SUM(qhh.hora_final - qhh.hora_inicial) + FROM pmieducar.quadro_horario_horarios qhh + WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhh.ref_cod_escola = '$int_ref_cod_escola' + AND qhh.ativo = '1' + AND hora_inicial >= '18:00' + AND hora_inicial <= '23:00' + AND qhh.dia_semana <> '$int_dia_semana' + GROUP BY qhh.ref_servidor ),'00:00') + '$str_hr_not' + COALESCE( + (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) + FROM pmieducar.quadro_horario_horarios_aux qhha + WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' + AND qhha.ref_cod_escola = '$int_ref_cod_escola' + AND qhha.ref_servidor = a.ref_cod_servidor + AND hora_inicial >= '18:00' + AND hora_inicial <= '23:00' + AND identificador = $int_identificador + GROUP BY qhha.ref_servidor),'00:00') )"; + } + else { + $filtros .= " + {$whereAnd} s.cod_servidor NOT IN ( + SELECT a.ref_cod_servidor + FROM pmieducar.servidor_alocacao a + WHERE $where + AND a.periodo = 3 )"; + } + } + + if (is_string($str_horario) && $str_horario == "S") { + } + else { + $filtros .= " + {$whereAnd} s.carga_horaria >= COALESCE( + (SELECT sum(hora_final - hora_inicial) + '" . abs($horas) . ":" . abs($minutos)."' + FROM pmieducar.servidor_alocacao sa + WHERE sa.ref_cod_servidor = s.cod_servidor + AND sa.ref_ref_cod_instituicao ='{$int_ref_cod_instituicao}'),'00:00') "; + } + } + + if ((is_array($array_horario) && $str_not_in_servidor) || (is_string($str_tipo) && $str_not_in_servidor)) { + $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( {$str_not_in_servidor} )"; + $whereAnd = " AND "; + } + + $obj_curso = new clsPmieducarCurso($int_ref_cod_curso); + $det_curso = $obj_curso->detalhe(); + + if ($det_curso['falta_ch_globalizada']) { + // Busca professores independentemente da disciplina, somente verifica + // se é professor e se ministra a disciplina para o curso + $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_curso_ministra scm WHERE scm.ref_cod_curso = $int_ref_cod_curso AND scm.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = scm.ref_cod_servidor)"; + $whereAnd = " AND "; + } + else { + // Verifica se o professor está habilitado para ministrar a disciplina + if(is_numeric($int_ref_cod_disciplina)) { + $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_disciplina sd WHERE sd.ref_cod_disciplina = $int_ref_cod_disciplina AND sd.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = sd.ref_cod_servidor)"; + $whereAnd = " AND "; + } + } + + // Seleciona apenas servidor cuja uma de suas funções seja a de professor + if ($boo_professor) { + $filtros .= " + {$whereAnd} EXISTS + (SELECT 1 + FROM pmieducar.servidor_funcao sf, pmieducar.funcao f + WHERE f.cod_funcao = sf.ref_cod_funcao AND + f.professor = 1 AND + sf.ref_ref_cod_instituicao = s.ref_cod_instituicao AND + s.cod_servidor = sf.ref_cod_servidor)"; + $whereAnd = " AND "; + } + + if (is_string($str_horario) && $str_horario == "S") { + $filtros .= " + {$whereAnd} s.cod_servidor NOT IN + (SELECT DISTINCT qhh.ref_servidor + FROM pmieducar.quadro_horario_horarios qhh + WHERE qhh.ref_servidor = s.cod_servidor + AND qhh.ref_cod_instituicao_servidor = s.ref_cod_instituicao + AND qhh.dia_semana = '{$array_horario[0]}' + AND qhh.hora_inicial >= '{$array_horario[1]}' + AND qhh.hora_final <= '{$array_horario[2]}' + AND qhh.ativo = '1'"; + + if (is_string($lst_matriculas)) { + $filtros .= "AND qhh.ref_servidor NOT IN ({$lst_matriculas})"; + } + + $filtros .= " )"; + + $whereAnd = " AND "; + } + + if (is_numeric($int_ref_cod_subnivel)) { + $filtros .= "{$whereAnd} s.ref_cod_subnivel = '{$int_ref_cod_subnivel}'"; + $whereAnd = " AND "; + } + + $countCampos = count(explode(',', $this->_campos_lista)); + $resultado = array(); - if ( is_string( $str_horario ) && $str_horario == "S" ) - { - /*$filtros .= "{$whereAnd} s.carga_horaria >= ( SELECT EXTRACT ( HOUR FROM ( SELECT COALESCE( sum( hora_final - hora_inicial ) + '".abs( $horas ).":".abs( $minutos )."' , '00:00' ) - FROM pmieducar.servidor_alocacao sa - WHERE sa.ref_cod_servidor = s.cod_servidor - AND sa.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' ) ) + - ( SELECT EXTRACT ( MINUTE FROM ( SELECT COALESCE( sum( hora_final - hora_inicial ) + '".abs( $horas ).":".abs( $minutos )."' , '00:00' ) - FROM pmieducar.servidor_alocacao sa - WHERE sa.ref_cod_servidor = s.cod_servidor - AND sa.ref_ref_cod_instituicao = '{$int_ref_cod_instituicao}' ) ) ) )";*/ - } - else - { - $filtros .= "{$whereAnd} s.carga_horaria >= coalesce(( SELECT sum(hora_final - hora_inicial ) + '".abs( $horas ).":".abs( $minutos )."' - FROM pmieducar.servidor_alocacao sa WHERE sa.ref_cod_servidor = s.cod_servidor and sa.ref_ref_cod_instituicao ='{$int_ref_cod_instituicao}' ),'00:00')"; - } - - /*$filtros .= "{$whereAnd} s.carga_horaria >= ( SELECT coalesce(extract(hour from (sum(hora_final - hora_inicial ) + '{$horas}:00'::time)) + (extract(minute from (sum(hora_final - hora_inicial ) + '00:$minutos'::time)) / 60) - , - (extract(hour from ('{$horas}:00'::time)) + (extract(minute from '00:$minutos'::time)) / 60) - ) FROM pmieducar.servidor_alocacao sa WHERE sa.ref_cod_servidor = s.cod_servidor and sa.ref_ref_cod_instituicao ='{$int_ref_cod_instituicao}' )";*/ - $whereAnd = " AND "; - - } - - if(((is_array($array_horario) && $str_not_in_servidor) || is_string( $str_tipo ) && $str_not_in_servidor)) - { - - $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( {$str_not_in_servidor} )"; - $whereAnd = " AND "; - } - /*if ( $boo_professor ) { - $filtros .= "{$whereAnd} s.ref_cod_funcao = f.cod_funcao AND s.ref_cod_instituicao = f.ref_cod_instituicao AND f.professor = 1"; - $whereAnd = " AND "; - }*/ - - $obj_curso = new clsPmieducarCurso($int_ref_cod_curso); - $det_curso = $obj_curso->detalhe(); - - if($det_curso['falta_ch_globalizada']) - { - /** - * busca professores independentes da disciplina - * somente verifica se eh professor e se da a materia para o curso - */ - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_curso_ministra scm WHERE scm.ref_cod_curso = $int_ref_cod_curso AND scm.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = scm.ref_cod_servidor)"; - $whereAnd = " AND "; - } - else - { - /** - * verifica se o professor pode dar aula para a disciplina - * se nao tiver a disciplina nao pode dar aula - */ - - if(is_numeric($int_ref_cod_disciplina)) - { - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_disciplina sd WHERE sd.ref_cod_disciplina = $int_ref_cod_disciplina AND sd.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = sd.ref_cod_servidor)"; - $whereAnd = " AND "; - } - elseif ($int_ref_cod_disciplina == "NULL") - { - $filtros .= "{$whereAnd} FALSE"; - $whereAnd = " AND "; - } - - } - - if ( $boo_professor ) { - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_funcao sf,pmieducar.funcao f WHERE f.cod_funcao = sf.ref_cod_funcao AND f.professor = 1 AND sf.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = sf.ref_cod_servidor )"; - $whereAnd = " AND "; - } - if ( is_string( $str_horario ) && $str_horario == "S" ) - { - $filtros .= "{$whereAnd} s.cod_servidor NOT IN ( SELECT DISTINCT qhh.ref_servidor - FROM pmieducar.quadro_horario_horarios qhh - WHERE qhh.ref_servidor = s.cod_servidor - AND qhh.ref_cod_instituicao_servidor = s.ref_cod_instituicao - AND qhh.dia_semana = '{$array_horario[0]}' - AND qhh.hora_inicial >= '{$array_horario[1]}' - AND qhh.hora_final <= '{$array_horario[2]}' - AND qhh.ativo = '1'"; - if ( is_string( $lst_matriculas ) ) - { - $filtros .= "AND qhh.ref_servidor NOT IN ( {$lst_matriculas} )"; - } + $db = new clsBanco(); - $filtros .= " )"; + $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}" . + $this->getOrderby() . $this->getLimite(); - $whereAnd = " AND "; - } + $this->_total = $db->CampoUnico("SELECT COUNT(0) FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}"); - if(is_numeric($int_identificador)) - { - /** - * - */ - //$filtros .= "AND qhh.ref_servidor NOT IN ( {$lst_matriculas} )"; - } + // Executa a query + $db->Consulta($sql); - if(is_numeric($int_ref_cod_subnivel)) - { - $filtros .= "{$whereAnd} s.ref_cod_subnivel = '{$int_ref_cod_subnivel}'"; - $whereAnd = " AND "; - } + if ($countCampos > 1) { + while ($db->ProximoRegistro()) { + $tupla = $db->Tupla(); - $countCampos = count( explode( ",", $this->_campos_lista ) ); - $resultado = array(); + $tupla['_total'] = $this->_total; + $resultado[] = $tupla; + } + } + else { + while ($db->ProximoRegistro()) { + $tupla = $db->Tupla(); + $resultado[] = $tupla[$this->_campos_lista]; + } + } - $db = new clsBanco(); + if (count($resultado)) { + return $resultado; + } - $sql = "SELECT {$this->_campos_lista2} FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}".$this->getOrderby().$this->getLimite(); + return FALSE; + } - $this->_total = $db->CampoUnico( "SELECT COUNT(0) FROM {$this->_schema}servidor s{$tabela_compl} {$filtros}" ); - $db->Consulta( $sql ); - - if( $countCampos > 1 ) - { - while ( $db->ProximoRegistro() ) - { - $tupla = $db->Tupla(); - - $tupla["_total"] = $this->_total; - $resultado[] = $tupla; - } - } - else - { - while ( $db->ProximoRegistro() ) - { - $tupla = $db->Tupla(); - $resultado[] = $tupla[$this->_campos_lista]; - } - } - if( count( $resultado ) ) - { - return $resultado; - } - return false; - } /** * Retorna um array com os dados de um registro @@ -892,6 +933,167 @@ class clsPmieducarServidor return false; } + + + /** + * Retorna array com as funções do servidor + * + * Exemplo de array de retorno: + * + * array( + * '2' => array( + * 'cod_funcao' => 2, + * 'nm_funcao' => 'Professor', + * 'professor' => 1 + * ) + * ); + * + * + * @since Método disponível desde a versão 1.0.2 + * @return array Array associativo com a primeira chave sendo o código da + * função. O array interno contém o nome da função e se a função desempenha + * um papel de professor + */ + public function getServidorFuncoes() { + $db = new clsBanco(); + + $sql = 'SELECT t2.cod_funcao, t2.nm_funcao, t2.professor FROM pmieducar.servidor_funcao AS t1, pmieducar.funcao AS t2 '; + $sql .= 'WHERE t1.ref_cod_servidor = \'%d\' AND t1.ref_ref_cod_instituicao = \'%d\' '; + $sql .= 'AND t1.ref_cod_funcao = t2.cod_funcao'; + + $sql = sprintf($sql, $this->cod_servidor, $this->ref_cod_instituicao); + $db->Consulta($sql); + + $funcoes = array(); + + while ($db->ProximoRegistro() != FALSE) { + $row = $db->Tupla(); + $funcoes[$row['cod_funcao']] = array( + 'cod_funcao' => $row['cod_funcao'], + 'nm_funcao' => $row['nm_funcao'], + 'professor' => $row['professor'], + ); + } + + return $funcoes; + } + + + + /** + * Retorna um array com as disciplinas alocadas ao servidor no quadro de + * horários + * + * @since Método disponível desde a versão 1.0.2 + * @param int $codServidor Código do servidor, caso não seja informado, + * usa o código disponível no objeto atual + * @param int $codInstituicao Código da instituição, caso não seja + * informado, usa o código disponível no objeto atual + * @return array|bool Array com códigos das disciplinas ordenados ou FALSE + * caso o servidor não tenha disciplinas + */ + public function getServidorDisciplinasQuadroHorarioHorarios($codServidor = NULL, + $codInstituicao = NULL) { + + $codServidor = $codServidor != NULL ? $codServidor : $this->cod_servidor; + $codInstituicao = $codInstituicao != NULL ? $codInstituicao : $this->ref_cod_instituicao; + + $sql = 'SELECT DISTINCT(qhh.ref_cod_disciplina) AS ref_cod_disciplina '; + $sql .= 'FROM pmieducar.quadro_horario_horarios qhh, pmieducar.servidor s '; + $sql .= 'WHERE qhh.ref_servidor = s.cod_servidor AND '; + $sql .= 'qhh.ref_servidor = \'%d\' AND qhh.ref_cod_instituicao_servidor = \'%d\''; + + $sql = sprintf($sql, $codServidor, $codInstituicao); + + $db = new clsBanco(); + $db->Consulta($sql); + + $disciplinas = array(); + + while ($db->ProximoRegistro() != FALSE) { + $row = $db->Tupla(); + $disciplinas[] = $row['ref_cod_disciplina']; + } + + if (count($disciplinas)) { + return asort($disciplinas); + } + + return FALSE; + } + + + + /** + * Retorna um array com os códigos das disciplinas do servidor + * + * @since Método disponível desde a versão 1.0.2 + * @param int $codServidor Código do servidor, caso não seja informado, + * usa o código disponível no objeto atual + * @param int $codInstituicao Código da instituição, caso não seja + * informado, usa o código disponível no objeto atual + * @return array|bool Array com códigos das disciplinas ordenados ou FALSE + * caso o servidor não tenha disciplinas + */ + public function getServidorDisciplinas($codServidor = NULL, + $codInstituicao = NULL) { + + $codServidor = $codServidor != NULL ? $codServidor : $this->cod_servidor; + $codInstituicao = $codInstituicao != NULL ? $codInstituicao : $this->ref_cod_instituicao; + + // Se códigos não forem fornecidos, nem pela classe nem pelo código cliente, + // retorna FALSE + if ($codServidor == NULL || $codInstituicao == NULL) { + return FALSE; + } + + $sql = 'SELECT DISTINCT(sd.ref_cod_disciplina) AS ref_cod_disciplina '; + $sql .= 'FROM pmieducar.servidor_disciplina sd, pmieducar.servidor s '; + $sql .= 'WHERE sd.ref_cod_servidor = s.cod_servidor AND '; + $sql .= 'sd.ref_cod_servidor = \'%d\' AND sd.ref_ref_cod_instituicao = \'%d\''; + + $sql = sprintf($sql, $codServidor, $codInstituicao); + + $db = new clsBanco(); + $db->Consulta($sql); + + $disciplinas = array(); + + while ($db->ProximoRegistro() != FALSE) { + $row = $db->Tupla(); + $disciplinas[] = $row['ref_cod_disciplina']; + } + + if (count($disciplinas)) { + return asort($disciplinas); + } + + return FALSE; + } + + /** + * Verifica se um servidor desempenha a função de professor. + * + * Primeiro, recuperamos todas as funções do servidor e procuramos + * por um dos itens que tenha o índice professor igual a 1. + * + * @since Método disponível desde a versão 1.0.2 + * @return bool TRUE caso o servidor desempenhe a função de professor + */ + public function isProfessor() { + $funcoes = $this->getServidorFuncoes(); + + foreach ($funcoes as $funcao) { + if (1 == $funcao['professor']) { + return TRUE; + break; + } + } + + return FALSE; + } + + /** * Define quais campos da tabela serao selecionados na invocacao do metodo lista * diff --git a/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php b/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php index 4828b8a..b9abfc2 100644 --- a/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php +++ b/ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php @@ -1,36 +1,36 @@ + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ /** -* @author Prefeitura Municipal de Itajaí -* -* Criado em 04/08/2006 11:12 pelo gerador automatico de classes -*/ + * ClsPmieducarServidorAlocacaoTest class + * + * @author Prefeitura Municipal de Itajaí + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Core + * @subpackage Servidor + * @since Classe disponível desde a versão 1.0.0 + * @version $Id$ + */ require_once( "include/pmieducar/geral.inc.php" ); @@ -654,58 +654,54 @@ class clsPmieducarServidorAlocacao return false; } - /** - * Realiza a substituicao de um servidor - * - * @return bool - */ - function substituir_servidor($int_ref_cod_servidor_substituto) - { - if( is_numeric( $int_ref_cod_servidor_substituto ) && is_numeric( $this->ref_ref_cod_instituicao ) ) - { - if( class_exists( "clsPmieducarServidor" ) ) - { - $tmp_obj = new clsPmieducarServidor( $int_ref_cod_servidor_substituto,null,null,null,null,null,null,null, $this->ref_ref_cod_instituicao ); - if( method_exists( $tmp_obj, "existe") ) - { - if( !$tmp_obj->existe() ) - { - return false; - } - } - else if( method_exists( $tmp_obj, "detalhe") ) - { - if( !$tmp_obj->detalhe() ) - { - return false; - } - } - } - else - { - if( !$db->CampoUnico( "SELECT 1 FROM pmieducar.servidor WHERE cod_servidor = '{$ref_cod_servidor}' AND ref_cod_instituicao = '{$ref_ref_cod_instituicao}'" ) ) - { - return false; - } - } - } -// echo "if( is_numeric( $this->ref_cod_servidor ) && is_numeric( $this->ref_ref_cod_instituicao ) && is_numeric( $this->ref_cod_escola ) && is_numeric( $this->periodo ) && is_numeric( $this->carga_horaria ))";die; - if( is_numeric( $this->ref_cod_servidor ) && is_numeric( $this->ref_ref_cod_instituicao ) && is_numeric( $this->ref_cod_escola ) && is_numeric( $this->periodo ) && is_string( $this->carga_horaria ) ) - { - //delete - $db = new clsBanco(); - //echo "UPDATE {$this->_tabela} SET ref_cod_servidor='$int_ref_cod_servidor_substituto' WHERE ref_cod_servidor = '{$this->ref_cod_servidor}' AND ref_ref_cod_instituicao = '{$this->ref_ref_cod_instituicao}' AND ref_cod_escola = '{$this->ref_cod_escola}' AND carga_horaria = '{$this->carga_horaria}' AND periodo = '{$this->periodo}'" ; - $db->Consulta( "UPDATE {$this->_tabela} SET ref_cod_servidor='$int_ref_cod_servidor_substituto' WHERE ref_cod_servidor = '{$this->ref_cod_servidor}' AND ref_ref_cod_instituicao = '{$this->ref_ref_cod_instituicao}' AND ref_cod_escola = '{$this->ref_cod_escola}' AND carga_horaria = '{$this->carga_horaria}' AND periodo = '{$this->periodo}'" ); - return true; + /** + * Substitui a alocação entre servidores + * + * Substitui a alocação entre servidores, atualizando a tabela + * pmieducar.servidor_alocacao. A única atualização na tabela ocorre no + * identificador do servidor, o campo ref_cod_servidor. Para usar este + * método, um objeto desta classe precisa estar instanciado com os atributos + * do servidor a ser substituido. + * + * @param int $int_ref_cod_servidor_substituto Código do servidor que substituirá o atual + * @return bool TRUE em caso de sucesso, FALSE caso contrário + */ + public function substituir_servidor($int_ref_cod_servidor_substituto) { + if (is_numeric($int_ref_cod_servidor_substituto) && + is_numeric($this->ref_ref_cod_instituicao)) { + + $servidor = new clsPmieducarServidor($int_ref_cod_servidor_substituto, + NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_ref_cod_instituicao); + + if (!$servidor->existe()) { + return FALSE; + } + } + + if (is_numeric($this->ref_cod_servidor) && is_numeric($this->ref_ref_cod_instituicao) && + is_numeric($this->ref_cod_escola) && is_numeric($this->periodo) && + is_string($this->carga_horaria)) { + + $sql = "UPDATE %s SET ref_cod_servidor='%d' WHERE ref_cod_servidor = '%d' "; + $sql .= "AND ref_ref_cod_instituicao = '%d' AND ref_cod_escola = '%d' AND "; + $sql .= "carga_horaria = '%s' AND periodo = '%d'"; + + $sql = sprintf($sql, $this->_tabela, $int_ref_cod_servidor_substituto, + $this->ref_cod_servidor, $this->ref_ref_cod_instituicao, $this->ref_cod_escola, + $this->carga_horaria, $this->periodo); + + $db = new clsBanco(); + $db->Consulta($sql); + + return TRUE; + } + + return FALSE; + } - //$this->ativo = 0; - // return $this->edita(); - } - return false; - } /** * Define quais campos da tabela serao selecionados na invocacao do metodo lista diff --git a/ieducar/tests/functional/ServidorAfastarWebTest.class.php b/ieducar/tests/functional/ServidorAfastarWebTest.class.php index 76e1d82..1f60924 100644 --- a/ieducar/tests/functional/ServidorAfastarWebTest.class.php +++ b/ieducar/tests/functional/ServidorAfastarWebTest.class.php @@ -52,59 +52,56 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { $db = new clsBanco(); // Cria uma nova pessoa e guarda o ID gerado - $db->Consulta(sprintf("INSERT INTO cadastro.pessoa (nome, data_cad,tipo,situacao,origem_gravacao, idsis_cad, operacao , idpes_cad) VALUES ('%s', NOW(), 'F', 'P', 'U', 17, 'I' , '1')", $this->slPessoaNome)); + $db->Consulta(sprintf("INSERT INTO cadastro.pessoa (nome, data_cad,tipo,situacao,origem_gravacao, idsis_cad, operacao , idpes_cad) VALUES ('%s', NOW(), 'F', 'P', 'U', 17, 'I' , '1')", $this->slPessoaNome)); $this->slPessoaID = $id = $db->InsertId('cadastro.seq_pessoa'); + // Array de SQL + $sqls = array(); + + // Array com sequences, usados para o INSERTs que necessitem, + // use chamando array_shift($sequences) + $sequences = range(50000, 100000); // Cria pessoa física - $db->Consulta(sprintf("INSERT INTO cadastro.fisica (idpes, origem_gravacao, idsis_cad, data_cad, operacao, idpes_cad , sexo) VALUES ( '%d', 'M', 17, NOW(), 'I', '1' , 'M')", $id)); + $sqls[] = sprintf("INSERT INTO cadastro.fisica (idpes, origem_gravacao, idsis_cad, data_cad, operacao, idpes_cad , sexo) VALUES ( '%d', 'M', 17, NOW(), 'I', '1' , 'M')", $id); // Cria novo funcionário no sistema - $db->Consulta( - sprintf( - "INSERT INTO portal.funcionario - (ref_cod_pessoa_fj, matricula, senha, ativo, ramal, ref_cod_funcionario_vinculo, tempo_expira_senha, tempo_expira_conta, data_troca_senha, data_reativa_conta, ref_ref_cod_pessoa_fj, proibido, ref_cod_setor_new, matricula_permanente) - VALUES - ('%d', '%s', '25d55ad283aa400af464c76d713c07ad', '1', '', '4', '30', '365', NOW(), NOW(), '28', '0', '1', '1')", $id, $this->slPessoaMatricula) - ); - + $sqls[] = sprintf( + "INSERT INTO portal.funcionario + (ref_cod_pessoa_fj, matricula, senha, ativo, ramal, ref_cod_funcionario_vinculo, tempo_expira_senha, tempo_expira_conta, data_troca_senha, data_reativa_conta, ref_ref_cod_pessoa_fj, proibido, ref_cod_setor_new, matricula_permanente) + VALUES + ('%d', '%s', '25d55ad283aa400af464c76d713c07ad', '1', '', '4', '30', '365', NOW(), NOW(), '28', '0', '1', '1')", $id, $this->slPessoaMatricula); // Cria um novo servidor, com a função de professor - $sql = sprintf("INSERT INTO pmieducar.servidor (cod_servidor, ref_idesco, carga_horaria, data_cadastro, ativo, ref_cod_instituicao ) VALUES( '%d', '14', '40', NOW(), '1', '2' )", $id); - $db->Consulta($sql); - - $sql = sprintf("INSERT INTO pmieducar.servidor_funcao (ref_ref_cod_instituicao, ref_cod_servidor, ref_cod_funcao ) VALUES( '2', '%d', '2')", $id); - $db->Consulta($sql); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor (cod_servidor, ref_idesco, carga_horaria, data_cadastro, ativo, ref_cod_instituicao ) VALUES( '%d', '14', '40', NOW(), '1', '2' )", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_funcao (ref_ref_cod_instituicao, ref_cod_servidor, ref_cod_funcao ) VALUES( '2', '%d', '2')", $id); // Atribue disciplinas ao servidor e o curso em que ministra - $sql = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('6', '2', '%d')", $id); - $db->Consulta($sql); - $sql = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('3', '2', '%d')", $id); - $db->Consulta($sql); - $sql = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('4', '2', '%d')", $id); - $db->Consulta($sql); - - $sql = sprintf("INSERT INTO pmieducar.servidor_curso_ministra (ref_cod_curso, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('1', '2', '%d')", $id); - $db->Consulta($sql); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('6', '2', '%d')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('3', '2', '%d')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_disciplina (ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('4', '2', '%d')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_curso_ministra (ref_cod_curso, ref_ref_cod_instituicao, ref_cod_servidor) VALUES('1', '2', '%d')", $id); // Aloca tempo de trabalho para o servidor - $sql = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '1', '%d', '10:00', '1', NOW(), '1')", $id); - $db->Consulta($sql); - $sql = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '1', '%d', '06:00', '2', NOW(), '1')", $id); - $db->Consulta($sql); - $sql = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '2', '%d', '14:00', '1', NOW(), '1')", $id); - $db->Consulta($sql); - $sql = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '2', '%d', '05:00', '2', NOW(), '1')", $id); - $db->Consulta($sql); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '1', '%d', '10:00', '1', NOW(), '1')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '1', '%d', '06:00', '2', NOW(), '1')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '2', '%d', '14:00', '1', NOW(), '1')", $id); + $sqls[] = sprintf("INSERT INTO pmieducar.servidor_alocacao (ref_ref_cod_instituicao, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, carga_horaria, periodo, data_cadastro, ativo ) VALUES( '2', '28', '2', '%d', '05:00', '2', NOW(), '1')", $id); // Aloca horas aula ao servidor - $sql = sprintf("INSERT INTO pmieducar.quadro_horario_horarios ( ref_cod_quadro_horario, ref_cod_serie, ref_cod_escola, ref_cod_disciplina, sequencial, ref_cod_instituicao_servidor, ref_servidor, hora_inicial, hora_final, data_cadastro, ativo, dia_semana ) VALUES( '2', '2', '1', '6', '3', '2', '%d', '09:00', '10:00', NOW(), '1', '3')", $id); - $db->Consulta($sql); + $sqls[] = sprintf("INSERT INTO pmieducar.quadro_horario_horarios (ref_cod_quadro_horario, ref_cod_serie, ref_cod_escola, ref_cod_disciplina, sequencial, ref_cod_instituicao_servidor, ref_servidor, hora_inicial, hora_final, data_cadastro, ativo, dia_semana ) VALUES('2', '2', '1', '6', '%d', '2', '%d', '09:00', '10:00', NOW(), '1', '3')", array_shift($sequences), $id); + $sqls[] = sprintf("INSERT INTO pmieducar.quadro_horario_horarios (ref_cod_quadro_horario, ref_cod_serie, ref_cod_escola, ref_cod_disciplina, sequencial, ref_cod_instituicao_servidor, ref_servidor, hora_inicial, hora_final, data_cadastro, ativo, dia_semana ) VALUES('2', '2', '1', '3', '%d', '2', '%d', '08:00', '09:00', NOW(), '1', '5')", array_shift($sequences), $id); - $sql = sprintf("INSERT INTO pmieducar.quadro_horario_horarios ( ref_cod_quadro_horario, ref_cod_serie, ref_cod_escola, ref_cod_disciplina, sequencial, ref_cod_instituicao_servidor, ref_servidor, hora_inicial, hora_final, data_cadastro, ativo, dia_semana ) VALUES( '2', '2', '1', '3', '4', '2', '%d', '08:00', '09:00', NOW(), '1', '5' )", $id); - $db->Consulta($sql); + // Executa as SQLs, se houver erro, chama tearDown imediatamente + foreach ($sqls as $sql) { + $success = $db->Consulta($sql); + if (FALSE === $success) { + $this->tearDown(); + $this->fail('Alguma restrição de SQL aconteceu e o método tearDown foi executado para limpar as tabelas. SQL com problema: %s', PHP_EOL, $sql); + } + } } diff --git a/ieducar/tests/unit/ClsPmieducarQuadroHorarioHorariosTest.class.php b/ieducar/tests/unit/ClsPmieducarQuadroHorarioHorariosTest.class.php new file mode 100644 index 0000000..7c4a42d --- /dev/null +++ b/ieducar/tests/unit/ClsPmieducarQuadroHorarioHorariosTest.class.php @@ -0,0 +1,52 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * ClsPmieducarQuadroHorarioHorariosTest class + * + * @author Eriksen Costa Paixão + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Test + * @since Classe disponível desde a versão 1.0.2 + * @version $Id$ + */ + +require_once realpath(dirname(__FILE__) . '/../') . '/UnitBaseTest.class.php'; +require_once 'include/pmieducar/clsPmieducarQuadroHorarioHorarios.inc.php'; + +class ClsPmieducarQuadroHorarioHorariosTest extends UnitBaseTest { + + /** + * Testa o método substituir_servidor() + */ + public function testSubstituirServidor() { + $stub = $this->getMock('clsPmieducarQuadroHorarioHorarios'); + + $stub->expects($this->any()) + ->method('substituir_servidor') + ->will($this->returnValue(TRUE)); + + $this->assertTrue($stub->substituir_servidor(1)); + } + +} \ No newline at end of file diff --git a/ieducar/tests/unit/ClsPmieducarServidorAlocacaoTest.class.php b/ieducar/tests/unit/ClsPmieducarServidorAlocacaoTest.class.php new file mode 100644 index 0000000..fc1b214 --- /dev/null +++ b/ieducar/tests/unit/ClsPmieducarServidorAlocacaoTest.class.php @@ -0,0 +1,52 @@ + + * + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério) + * qualquer versão posterior. + * + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral + * do GNU para mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto + * com este programa; se não, escreva para a Free Software Foundation, Inc., no + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ + +/** + * ClsPmieducarServidorAlocacaoTest class + * + * @author Eriksen Costa Paixão + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL + * @package Test + * @since Classe disponível desde a versão 1.0.2 + * @version $Id$ + */ + +require_once realpath(dirname(__FILE__) . '/../') . '/UnitBaseTest.class.php'; +require_once 'include/pmieducar/clsPmieducarServidorAlocacao.inc.php'; + +class ClsPmieducarServidorAlocacaoTest extends UnitBaseTest { + + /** + * Testa o método substituir_servidor() + */ + public function testSubstituirServidor() { + $stub = $this->getMock('clsPmieducarServidorAlocacao'); + + $stub->expects($this->any()) + ->method('substituir_servidor') + ->will($this->returnValue(TRUE)); + + $this->assertTrue($stub->substituir_servidor(1)); + } + +} \ No newline at end of file diff --git a/ieducar/tests/unit/ClsPmieducarServidorTest.class.php b/ieducar/tests/unit/ClsPmieducarServidorTest.class.php index 443be17..e1ff5c7 100644 --- a/ieducar/tests/unit/ClsPmieducarServidorTest.class.php +++ b/ieducar/tests/unit/ClsPmieducarServidorTest.class.php @@ -22,7 +22,7 @@ */ /** - * ClsPmieducarServidorTest class. + * ClsPmieducarServidorTest class * * @author Eriksen Costa Paixão * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL @@ -40,6 +40,10 @@ class ClsPmieducarServidorTest extends UnitBaseTest { $codServidor = NULL, $codInstituicao = NULL; + /** + * @todo Testes dependentes de dados existentes. Refatorar o teste para usar + * mock objects ou dbunit + */ protected function setUp() { $db = new clsBanco(); $sql = 'SELECT cod_servidor, ref_cod_instituicao FROM pmieducar.servidor WHERE ativo = 1 LIMIT 1'; @@ -49,6 +53,10 @@ class ClsPmieducarServidorTest extends UnitBaseTest { list($this->codServidor, $this->codInstituicao) = $db->Tupla(); } + + /** + * Testa se o servidor criado no método setUp() existe + */ public function testPmieducarServidorExists() { $codServidor = $this->codServidor; $codInstituicao = $this->codInstituicao; @@ -59,4 +67,65 @@ class ClsPmieducarServidorTest extends UnitBaseTest { $this->assertTrue((boolean) $servidor->existe()); } + + /** + * Testa o método getServidorFuncoes() da classe + */ + public function testGetServidorFuncoes() { + $codServidor = $this->codServidor; + $codInstituicao = $this->codInstituicao; + + $servidor = new clsPmieducarServidor( + $codServidor, NULL, NULL, NULL, NULL, NULL, 1, $codInstituicao); + + $funcoes = $servidor->getServidorFuncoes(); + $this->assertTrue(is_array($funcoes)); + } + + + /** + * Testa o método isProfessor() + */ + public function testIsProfessor() { + $codServidor = $this->codServidor; + $codInstituicao = $this->codInstituicao; + + $servidor = new clsPmieducarServidor( + $codServidor, NULL, NULL, NULL, NULL, NULL, 1, $codInstituicao); + + $professor = $servidor->isProfessor(); + + $this->assertTrue($professor); + } + + + /** + * Stub test para o método getServidorDisciplinasQuadroHorarioHorarios() + */ + public function testGetServidorDisciplinasQuadroHorarioHorarios() { + $stub = $this->getMock('clsPmieducarServidor'); + + $stub->expects($this->any()) + ->method('getServidorDisciplinasQuadroHorarioHorarios') + ->will($this->returnValue(array(2, 6))); + + $this->assertEquals(array(2, 6), + $stub->getServidorDisciplinasQuadroHorarioHorarios(62, 2)); + } + + + /** + * Stub test para o método getServidorDisciplinas() + */ + public function testGetServidorDisciplinas() { + $stub = $this->getMock('clsPmieducarServidor'); + + $stub->expects($this->any()) + ->method('getServidorDisciplinas') + ->will($this->returnValue(array(6))); + + $this->assertEquals(array(6), + $stub->getServidorDisciplinas(57, 2)); + } + } \ No newline at end of file -- libgit2 0.21.2