<?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>>
 */

<?
require_once "../includes/begin.php";
require_once '../includes/functions.php';

	// define traceability
global $textoScript;
$textoScript = '';

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;
}
		
// ------------------------------------------------------------------
//		Obten��o das informa��es da planilha de presen�as
//-------------------------------------------------------------------

$codigoTurma = getValueGet('turma');
$codigoEscola = getValueGet('escola');
$preData = getValueGet('data');
	//Arrumando a data para se adequar ao tipo 'date'.
	$vet = explode('/',$preData);
	$codigoData = $vet[2].'-'.$vet[1].'-'.$vet[0];
$diasemana = dia_semana($preData);
$presencasAlunos = getValuePost('check_presencas_alunos');	//Recebimento das informa��es de checkbox dos alunos.
$presencasProf = getValuePost('check_presencas_prof');	//Recebimento das informa��es de checkbox dos professores.
		
// ------------------------------------------------------------------
//		Deletando hist�rico de presen�as antigo, se houver
//-------------------------------------------------------------------

$sql = "DELETE FROM \"mat_presencaTurma\"
			WHERE datapresenca = '$codigoData'
			AND codescola = '$codigoEscola'
			AND codturma = '$codigoTurma' ";

$result1 = executaQuery($dbh, $sql) or die ("N�o foi poss�vel acessar a tabela de presen�as da turma.");
pg_freeresult($result1);

// ------------------------------------------------------------------
//		Inicializando a tabela de presen�as
//-------------------------------------------------------------------

$sql_alunos = "SELECT DISTINCT 
				 \"mat_turmaDisciplina\".horario,
				 \"mat_turmaDisciplina\".codprofessor,
				 \"mat_turmaAluno\".codaluno
				FROM educacao.\"mat_turmaDisciplina\" INNER JOIN educacao.\"mat_turmaAluno\"
				ON 
				  \"mat_turmaDisciplina\".codturma = \"mat_turmaAluno\".codturma
				WHERE 
				  \"mat_turmaAluno\".codescola = $codigoEscola 
				AND 
				  \"mat_turmaAluno\".codturma = $codigoTurma 
				AND
				  \"mat_turmaDisciplina\".diasemana = '$diasemana'";
//echo $sql_alunos; exit;
$result1 = executaQuery($dbh, $sql_alunos);

while($linha = pg_fetch_array($result1))
{
	$aluno = $linha['codaluno'];
	$professor = $linha['codprofessor'];
	$horario = $linha['horario'];
	
	$sql = "INSERT INTO \"mat_presencaTurma\"
			(
				codescola,
				codturma,
				codaluno,
				codprofessor,
				datapresenca,
				horario,
				faltaaluno,
				faltaprofessor
						
			) VALUES (
			
				$codigoEscola,
				$codigoTurma,
				$aluno,
				$professor,
				'$codigoData',
				$horario,
				true,
				true
			)";	
	//echo $sql; exit;
				
	$result2 = executaQuery($dbh, $sql) or die ("N�o foi poss�vel inicializar a inclus�o em tabela de presen�as.");
}

// ------------------------------------------------------------------
//		Incluindo dados obtidos no Banco de Dados : Alunos
//-------------------------------------------------------------------

if($presencasAlunos != NULL)	//Quando NULL, n�o foram enviados checkboxes preenchidos para alunos.
{
	foreach ($presencasAlunos as $s) 
	{
		$vetor = explode('_',$s);	//Recolhendo as informa��es contidas nesta inst�ncia de presen�a.
	  
		$codigoHorario = (int)$vetor[0];
		$codigoAluno = $vetor[3];
			
		$sql = "UPDATE 
					educacao.\"mat_presencaTurma\"
				SET
					faltaaluno = false
				WHERE 
					codescola = $codigoEscola
				AND	codturma = $codigoTurma
				AND	codaluno = $codigoAluno
				AND	datapresenca = '$codigoData'
				AND	horario = $codigoHorario";

			//echo nl2br($sql); exit;
			
		$result1 = executaQuery($dbh, $sql);
		if (!$result1)
		{
		   $result = executaQuery($dbh, "ROLLBACK");
		   if (!$result)
		   {
		      $erroFatal = "Erro em Transa��o Interna do Sistema - Informar Administrador";
		      $SESSION["f_retornoFatal"] = $erroFatal;
		   }
		   $erro = "Erro na Gravacao de Planilha de Presen�as de Turma";
		   $_SESSION["f_retorno"]= $erro;
		   pg_close($dbh);
		   header('location:../novastelas/planilhaDePresencaTurma.php?turma='.$codigoTurma.'&escola='.$codigoEscola);
		   exit;
		}	
	}
}

// ------------------------------------------------------------------
//		Incluindo dados obtidos no Banco de Dados : Professores
//-------------------------------------------------------------------

if($presencasProf != NULL)	//Quando NULL, n�o foram enviados checkboxes preenchidos para professores.
{
	foreach ($presencasProf as $s) 
	{
		$vetor = explode('_',$s);	//Recolhendo as informa��es contidas nesta inst�ncia de presen�a.
	  
		$codigoHorario = (int)$vetor[0];
		$codigoProf = $vetor[3];
			
		$sql = "UPDATE 
					educacao.\"mat_presencaTurma\"
				SET
					faltaprofessor = false
				WHERE 
					codescola = $codigoEscola
				AND	codturma = $codigoTurma
				AND	codprofessor = $codigoProf
				AND	datapresenca = '$codigoData'
				AND	horario = $codigoHorario";

		//	echo nl2br($sql); exit;
			
		$result1 = executaQuery($dbh, $sql);
		if (!$result1)
		{
		   $result = executaQuery($dbh, "ROLLBACK");
		   if (!$result)
		   {
		      $erroFatal = "Erro em Transa��o Interna do Sistema - Informar Administrador";
		      $SESSION["f_retornoFatal"] = $erroFatal;
		   }
		   $erro = "Erro na Gravacao de Planilha de Presen�as de Turma";
		   $_SESSION["f_retorno"]= $erro;
		   pg_close($dbh);
		   header('location:../novastelas/planilhaDePresencaTurma.php?turma='.$codigoTurma.'&escola='.$codigoEscola);
		   exit;
		}	
	}
}

// -----------------------------------------------------------
//		Finaliza conex�o com o Banco
//------------------------------------------------------------

$sql = cleanSql($sql);
$textoScript .= $sql . ';';
		
limpaSession();
	//Retornando � tela de planilha de presen�as.
header('location:../novastelas/planilhaDePresencaTurma.php?turma='.$codigoTurma.'&escola='.$codigoEscola.'&data='.$preData);