<?PHP
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * 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, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

<?php
require_once "../includes/begin.php";
require_once "../includes/permissao.php";
inibeAcesso(array("escola")); 
// somente funcion�rio de escola pode entrar nessa tela
require_once "../includes/functions.php"; 

$turma = getValueGet('turma');
$escola = getValueGet('escola');
$novaData = getValuePost('dataSelecionada');	//Data obtida atrav�s das op��es de navega��o e sele��o de datas.
$atualizacaoData = getValueGet('data');	//Data referente a uma planilha atualizada; s� aparece no caso de um retorno de entrada de presen�as.
$contagem_disciplinas = 0;	//Guardar� a contagem do n�mero de colunas da planilha.

//Fun��o que retorna a data atual (YYYY/MM/DD)
function data_atual()
{

	// leitura das datas
	$dia = date('d');
	$mes = date('m');
	$ano = date('Y');

	// definindo padr�o pt (dd/MM/YYYY)
	$data = $dia.'/'.$mes.'/'.$ano;

	return $data;
}

function Modificar_data($data, $direcao)	//Fun��o para 'avan�ar' ou 'retroceder' em 1 dia uma determinada 
											//"$data", de acordo com a a��o especificada em "$direcao".
									
{
	$vetor = explode('/',$data);	//Quebra as datas em dia, mes e ano.
	
	$dia = $vetor[0];
	$mes = $vetor[1];
	$ano = $vetor[2];
	
	$dia = (int)$dia;	//Transformamos os valores string em inteiro, para serem trabalhadas.
	$mes = (int)$mes;
	$ano = (int)$ano;
	
	if($direcao == "avan�ar")	//Preparamos "$acao" de acordo com a "$direcao" especificada em chamada.
		$acao = 1;
	else $acao = -1;
	
	if($dia==31 && $direcao=="avan�ar")	//Prote��o para evitar um dia 32.
	{									
		if($mes==12)
		{
			$dia = 1;
			$mes = 1;
			$ano = $ano + $acao;
		}
		else
		{	
			$dia = 1;
			$mes = $mes + $acao;
		}
	}
	else if($dia==1 && $direcao=="retroceder")	//Prote��o para evitar um dia 0.
	{
		if($mes==1)
		{
			$dia = 31;
			$mes = 12;
			$ano = $ano + $acao;
		}
		else
		{	
			$dia = 31;
			$mes = $mes + $acao;
		}
	}
	else
	{
		$dia = $dia + $acao;
	}
			//Arrumamos novamente a data para o formato dd/mm/yyyy, em string.
	if($dia<10)	
		$dia = "0".$dia;
	if($mes<10)
		$mes = "0".$mes;
		
	$nova_data = $dia."/".$mes."/".$ano;
	return $nova_data;
}

function dia_semana($data) {	//Descobre o dia da semana de determinada "$data".
	
	$vetor = explode('/',$data);	//Quebra as datas em dia, mes e ano.
	
	$dia = $vetor[0];
	$mes = $vetor[1];
	$ano = $vetor[2];

	$diasemana = date("w", mktime(0,0,0,$mes,$dia,$ano) );

	switch($diasemana) {
		case"0": $diasemana = "do";	break;	//Domingo
		case"1": $diasemana = "sg"; break;	//Segunda
		case"2": $diasemana = "te"; break;	//Ter�a
		case"3": $diasemana = "qa"; break;	//Quarta
		case"4": $diasemana = "qi"; break;	//Quinta
		case"5": $diasemana = "sx"; break;	//Sexta
		case"6": $diasemana = "sa"; break;	//S�bado
	}
	return $diasemana;
}

$data = data_atual();	//Obten��o da data mostrada pelo computador do usu�rio.

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=latin-1" />
<title>SEMED - Sistema de Matr�cula Escolar</title>
<link href="../stylo.css" rel="stylesheet" type="text/css" />
<?
include "../includes/config3.php";

?>
<style type="text/css">
<!--
.style1 {color: #FF0000}
-->
</style>
<link type="text/css" rel="stylesheet" href="../js/dhtmlgoodies_calendar/dhtmlgoodies_calendar.css?random=20051112" media="screen"></link>
<script type="text/javascript" src="../js/dhtmlgoodies_calendar/dhtmlgoodies_calendar.js?random=20060118"></script>
<script type="text/javascript" src="../js/functions.js"></script>
<script type="text/javascript" src="../js/jquery.js"></script>
<script language="JavaScript">

	//Fun��o que preenche checkboxes da planilha de acordo com informa��es entradas no Banco de Dados.
function PreenchePresenca(campo)
{
	document.getElementById(campo).checked = true;
}
</script>
</head>

<body topmargin="0" leftmargin="0">

	<div id="container">
		<div id="body">
			<table width="100%" border="0" cellspacing="0" cellpadding="0">
	  			<tr>
	    			<td><? include "../includes/config2.php"; ?></td>
	  			</tr>
				<tr>
					<td class="titulos"><div align="center" class="titulos2">
						<p>.:: PLANILHA DE PRESEN�AS  ::.<br />
						Educa��o Infantil e Ensino Fundamental<br />
						Prefeitura da Cidade de Nova Igua�u<br />
						Matr�cula <?=date("Y");?></p>
					</div></td>
				</tr>
				<?php 
					if($novaData != "")		//Conferimos se a data foi modificada por bot�es ou calend�rio.
						$data = $novaData;	
					if($atualizacaoData != "")	//Conferimos se a p�gina acaba de retornar de uma atualiza��o do Banco de Dados.
						$data = $atualizacaoData;
					$diaSemana = dia_semana($data);	//Define o dia da semana da data utilizada.
				?>
				<tr><td><div align="center" class="titulos5"> Data Apresentada : <? echo $data?></td></div></tr>
				<tr></tr>
				<?php
				if($atualizacaoData != "")
				{
				 ?>
				 	<tr><td><div align="center" class="titulos5"> Entrada de presen�as realizada com sucesso. </div></td></tr>
				 <?
				}
				 ?>
			</table>
			
	<form name="RetrocederData" action="../novastelas/planilhaDePresencaTurma.php?turma=<? echo $turma?>&escola=<? echo $escola?>"
		 method="post" enctype="multipart/form-data">
		 <input type='hidden' name='dataSelecionada' id='dataSelecionada' value='<?=Modificar_data($data, "retroceder")?>'></input> 
	</form>
	
	<form name="SelecaoDeDatas" action="../novastelas/planilhaDePresencaTurma.php?turma=<? echo $turma?>&escola=<? echo $escola?>"
		 method="post" enctype="multipart/form-data"> 
	<table class="listagem" border="0" align="center" cellpadding="0" cellspacing="0">
		<tr>
		<td align='left'><input type='button' value='Dia Anterior' class="botao" onclick='document.RetrocederData.submit()'></input></td>
		<td align=center><input name="dataSelecionada"
					id="dataSelecionada" 
					class="campos2"
					value=""
					readonly="readonly" size="10" type="text" onchange="document.SelecaoDeDatas.submit()" /> 
					<a onclick="displayCalendar(document.forms.SelecaoDeDatas.dataSelecionada,'dd/mm/yyyy',this)">
						<img src="prematricula_arquivos/box_calendario.gif" width="16" border="0" height="15"/>
					</a>
		</td>
		<td align='right'><input type='button' value='Dia Posterior' class="botao" onclick='document.AvancarData.submit()'></input></td>		
		</tr>
	</table>
	</form>	
	
	<form name="AvancarData" action="../novastelas/planilhaDePresencaTurma.php?turma=<? echo $turma?>&escola=<? echo $escola?>"
		 method="post" enctype="multipart/form-data">
		 <input type='hidden' name='dataSelecionada' id='dataSelecionada' value='<?=Modificar_data($data, "avan�ar")?>'></input>
	</form>
		
	<form name="RegistroPresencas" action="../rotinas/rotinaDeInclusaoPresencas.php?turma=<? echo $turma?>&escola=<? echo $escola?>&data=<? echo $data?>" method="post" enctype="multipart/form-data">
		<table class="listagem" border="0" align="center" cellpadding="0" cellspacing="0">
			<?php
				//sql_turnoturma guardar� informa��es sobre os hor�rios da turma
					$sql_turnoturma = 'SELECT nometurma, 
									       turnoturma
									  FROM educacao.mat_turma 
									  WHERE codescola = '.$escola.'
									  AND codturma = '.$turma ;
					$result1 = executaQuery($dbh, $sql_turnoturma) or die ("N�o foi poss�vel executar a consulta sobre os turnos");
					$turnoTurma = pg_fetch_array($result1);
					
				//sql_qtdhorarios guardar� quais os hor�rios dispon�veis para a turma
					$sql_qtdhorarios = 'SELECT 	idturno, 
												idhorario
  										FROM educacao.mat_turnohorario 
  										WHERE idturno = '.$turnoTurma['turnoturma'];
					$result2 = executaQuery($dbh, $sql_qtdhorarios) or die ("N�o foi poss�vel executar a consulta sobre os hor�rios da turma");
					$qtdHorarios = pg_num_rows($result2);	//Indica a quantidade de hor�rios existentes.
					$primTurno = pg_fetch_array($result2);	
					$primeiro_turno = $primTurno['idhorario'];	//Guardar� o primeiro turno dispon�vel para determinada turma.
					
				//$sql_nomehorarios receber� os nomes dos hor�rios que ser�o apresentados no cabe��rio da planilha.
					$sql_nomehorarios = 'SELECT nomehorario
 										 FROM educacao.mat_horario 
 										 INNER JOIN educacao.mat_turnohorario 
										 ON educacao.mat_horario.idhorario = educacao.mat_turnohorario.idhorario 
										 WHERE mat_turnohorario.idturno = '.$turnoTurma['turnoturma'];
					$result3 = executaQuery($dbh, $sql_nomehorarios) or die ("N�o foi poss�vel executar a consulta sobre os nomes de hor�rios");
					
				//$sql_infoTurma guardar� informa��es sobre os professores e suas disciplinas.
	       			$sql_infoTurma = 'SELECT DISTINCT 
									  mat_disciplina.nomedisciplina,
									  mat_professor.nomeprofessor,
									  mat_professor.codprofessor,
									  "mat_turmaDisciplina".iddisciplina,
									  "mat_turmaDisciplina".diasemana,
									  "mat_turmaDisciplina".horario
								  FROM 
									  mat_professor INNER JOIN "mat_turmaDisciplina"
								  ON  "mat_turmaDisciplina".codprofessor = mat_professor.codprofessor
									INNER JOIN mat_disciplina  
								  ON  mat_disciplina.iddisciplina = "mat_turmaDisciplina".iddisciplina 
								  WHERE 
									  "mat_turmaDisciplina".codescola = '.$escola.' 
								  AND 
									  "mat_turmaDisciplina".codturma = '.$turma.'
								  ORDER BY "mat_turmaDisciplina".horario';
          		//echo $sql_infoTurma; exit;

          		$resultado = executaQuery($dbh, $sql_infoTurma) or die ("N�o foi poss�vel executar a consulta sobre a turma");
				
          		$flagHorario = 0;	//Indicador para o preenchimento do cabe��rio do hor�rio.
          		$contagem_turno = $primeiro_turno;
          		?>
          		<thead>
          		<?php
          		while($linhaTurma = pg_fetch_array($resultado))
				{ 
					if($linhaTurma['diasemana'] == $diaSemana)	//Verificando se a consulta � v�lida para nossa data.
					{
						if($flagHorario == 0)	//Cabe�ario ainda n�o foi criado.
						{
							?>
								<tr>
									<th></th>
							<?
								while($nomeHorarios = pg_fetch_array($result3))
								{	
							?>
									<th>Hor�rio <?php echo $nomeHorarios['nomehorario']?></th>
							<?
								}
							?>
								</tr>
								<tr>
								<th></th>
							<?
							$flagHorario = 1;
						}
						$contagem_disciplinas += 1;	
						while($contagem_turno < $linhaTurma['horario'])	//Preenche espa�os onde n�o h� aula.
						{
							?>
							<th>Hor�rio Vago</th>
							<?php
							$contagem_turno += 1;
						}
						?>
						<th ><? echo $linhaTurma['nomedisciplina']?> 
							<br></br>(<? echo $linhaTurma['nomeprofessor']?>) 
					    		<input type=checkbox 
					    				name="check_presencas_prof[]" 
					    				id="check_<? echo $linhaTurma['horario']?>_5_<? echo $linhaTurma['codprofessor']?>" 
					    				value="<? echo $linhaTurma['horario']?>_<? echo $linhaTurma['iddisciplina']?>_5_<? echo $linhaTurma['codprofessor']?>">
					    		</input>
						</th> 
						<?php
						$contagem_turno += 1;
					}
				}
				if($contagem_disciplinas != 0)	//Verifica se alguma mat�ria j� foi preenchida na planilha naquele dia.
				{
					while($contagem_turno < ($primeiro_turno+$qtdHorarios))	//Completar� o resto dos turnos com indica��es de "Hor�rio Vago".
					{
						?>
						<th>Hor�rio Vago</th>
						<?php
						$contagem_turno += 1;
					}
					?>        
					</tr>
					<?
				}
				?>
				</thead>
			<tbody>              
			<?
			pg_freeresult($resultado);
			if($contagem_disciplinas != 0)
			{
			//$sql_infoAlunos guardar� informa��es sobre os alunos da turma.
				$sql_infoAlunos = 'SELECT DISTINCT 
	 								 mat_aluno.nomealuno,
	 								 "mat_turmaDisciplina".horario,
	 								 mat_aluno.codaluno,
									 "mat_turmaDisciplina".diasemana
									FROM
									  mat_aluno 
									INNER JOIN "mat_turmaAluno"
									ON 
									  "mat_turmaAluno".codaluno = mat_aluno.codaluno
									INNER JOIN "mat_turmaDisciplina"
									ON 
									  "mat_turmaDisciplina".codturma = "mat_turmaAluno".codturma
									AND
	 								  "mat_turmaDisciplina".codescola = "mat_turmaAluno".codescola
									WHERE 
									  "mat_turmaAluno".codescola = '.$escola.' 
									AND 
									  "mat_turmaAluno".codturma = '.$turma.'
									AND
									  mat_aluno.excluido = false
									ORDER BY mat_aluno.nomealuno';
				
				//echo $sql_infoAlunos; exit;

          		$resultado = executaQuery($dbh, $sql_infoAlunos) or die ("N�o foi poss�vel executar a consulta sobre os alunos da turma");
		
          		$alunoAnterior = "";	//Indicar� o nome do aluno pesquisado anteriormente com pg_fetch_array.
				$novaLinha = 0;		//Indicar� se estamos em uma linha come�ada ou n�o.
				$contagem_turno = $primeiro_turno;	//Inicializando a vari�vel que aponta o turno vizualizado no momento.
				$colour = "on";	//Flag para diferencia��o de cores nas linhas da planilha.
				
				while($linhaAlunos = pg_fetch_array($resultado))
				{
					$resValido = 1;	//Indica que ao menos 1 resultado v�lido foi recebido por "$linhaAlunos".
					if($linhaAlunos["diasemana"] == $diaSemana)	//Verificando se a consulta � v�lida para nossa data.
					{
						if($alunoAnterior != $linhaAlunos["nomealuno"])	//Se novo aluno, come�amos uma nova linha.
						{
							if($novaLinha == 1)	//Se estamos em uma linha come�ada, devemos encerr�-la.
							{
								while($contagem_turno < ($primeiro_turno+$qtdHorarios))	//Completar� o resto dos turnos com indica��es de "Hor�rio Vago".
								{
									?>								
									<td></td>
									<?php
									$contagem_turno += 1;
								}
								?>
								</tr>
								<?
							}
							
							if($colour == "on")	//Criar� a altern�ncia de cores nas linhas da planilha.
								$colour = "off";
							else $colour = "on";
							
							?>
							<tr <? if($colour == "on")
										{
									?> bgcolor="#DEDEEF" 
									<?	}
									?> >
								<td><div align=center><? echo $linhaAlunos["nomealuno"] ?></div></td>
							<?
							$novaLinha = 1;
							$contagem_turno = $primeiro_turno;
						}
						
						while($contagem_turno < $linhaAlunos["horario"])
							//Deixa as colunas onde o aluno em quest�o n�o possui aula em vazio.
						{ 
						?>
							<td></td>
						<?php
							$contagem_turno += 1;
						} 
						?>
						<td align=center ><input type=checkbox 
												name="check_presencas_alunos[]" 
												id="check_<? echo $linhaAlunos['horario']?>_1_<? echo $linhaAlunos['codaluno']?>" 
												value="<? echo $linhaAlunos['horario']?>_<? echo $linhaAlunos['codprofessor']?>_1_<? echo $linhaAlunos['codaluno']?>">
										  </input></td>
						<?php
						$contagem_turno += 1;
						$alunoAnterior = $linhaAlunos["nomealuno"];	//Salvamos o nome do aluno com o qual acabamos de trabalhar.
					}
				}
				if($novaLinha == 1)
				{
					while($contagem_turno < ($primeiro_turno+$qtdHorarios))	//Completar� o resto dos turnos com indica��es de "Hor�rio Vago".
					{
						?>								
						<td></td>
						<?php
						$contagem_turno += 1;
					}
					?>
					</tr>
					<?
				}
				
				pg_freeresult($resultado);
				?>	

		       	<?php 
					if(!$resValido)	
					{
				?>
						<tr><td align=center colspan=<?php echo ($qtdHorarios+1)?>>Nenhum aluno encontrado!</td></tr>
				<?
					}
				?>
					</tbody>
					<tfoot>
				        <tr>
							<td colspan="<?php echo ($qtdHorarios+1)?>" >
								&nbsp;
							</td>
						</tr>
					</tfoot>				
			      </table>
			<?php 
			//Procedimentos para preencher os checkboxes correspondentes em caso de retorno 
			//� p�gina ap�s inclus�o.
					$sql = "SELECT *
							FROM \"mat_presencaTurma\"
							WHERE codescola = '$escola'
							AND codturma = '$turma'
							AND datapresenca = '$data'" ;
					$resultado = executaQuery($dbh, $sql) or die ("N�o foi poss�vel acessar informa��es da turma inclu�da.");
					while($linha = pg_fetch_array($resultado))
					{
						if($linha['faltaaluno'] == 'f')	//Checando o campo presen�a de aluno.
						{
			?>
							<script language="JavaScript"> PreenchePresenca("check_<? echo $linha['horario']?>_1_<? echo $linha['codaluno']?>");</script>
			<?
						}
						if($linha['faltaprofessor'] == 'f')	//Checando o campo presen�a de professor.
						{
			?>
							<script language="JavaScript"> PreenchePresenca("check_<? echo $linha['horario']?>_5_<? echo $linha['codprofessor']?>");</script>
							
			<?
						}
					}
				
				pg_freeresult($resultado);
				pg_close($dbh);
			?>			

		  <div align='center'>
		  	<input type='submit' value='Confirmar Presen�as' name='ConfirmarPresen�as' id='ConfirmarPresen�as' class="botao" ></input>
	  	</div>
	 </form>
	</div>
		<?php
			}
			else	
			{
		?>
				<tr><td align=center colspan=<?php echo ($qtdHorarios+1)?>>Nenhuma disciplina marcada para hoje.</td></tr>
		<?php
			} 
		?>
	<div id="footer"><? include "../includes/rodape.php"; ?></div>
	</div></body>
</html>	        