Skip to content

Commit

Permalink
Merge pull request #284 from portabilis/portabilis-patch-2018-06-29
Browse files Browse the repository at this point in the history
Portabilis Patch 29/06/2018
  • Loading branch information
eberfreitas authored Jun 29, 2018
2 parents bcfb77c + 1d938d1 commit ebee2ea
Show file tree
Hide file tree
Showing 28 changed files with 2,648 additions and 1,376 deletions.
32 changes: 24 additions & 8 deletions ieducar/intranet/atendidos_cad.php
Original file line number Diff line number Diff line change
Expand Up @@ -686,15 +686,19 @@ function Gerar()

// Cor/raça.

$racas = new clsCadastroRaca();
$racas = $racas->lista(NULL, NULL, NULL, NULL, NULL, NULL, NULL, TRUE);
$racas = new clsCadastroRaca();
$racas = $racas->lista(null, null, null, null, null, null, null, true);

foreach ($racas as $raca)
$selectOptions[$raca['cod_raca']] = $raca['nm_raca'];
$selectOptionsRaca = [];

$selectOptions = array(null => 'Selecione') + Portabilis_Array_Utils::sortByValue($selectOptions);
foreach ($racas as $raca) {
$selectOptionsRaca[$raca['cod_raca']] = $raca['nm_raca'];
}

$selectOptionsRaca = Portabilis_Array_Utils::sortByValue($selectOptionsRaca);
$selectOptionsRaca = array_merge([null => 'Selecione'], $selectOptionsRaca);

$this->campoLista('cor_raca', 'Raça', $selectOptions, $this->cod_raca, '', FALSE, '', '', '', $obrigarCamposCenso);
$this->campoLista('cor_raca', 'Raça', $selectOptionsRaca, $this->cod_raca, '', false, '', '', '', $obrigarCamposCenso);


// nacionalidade
Expand Down Expand Up @@ -1238,7 +1242,7 @@ protected function validatesCpf($cpf) {
}

protected function createOrUpdate($pessoaIdOrNull = null) {
if (!$this->possuiDocumentoObrigatorio()) {
if ($this->obrigarDocumentoPessoa() && !$this->possuiDocumentoObrigatorio()) {
$this->mensagem = 'É necessário o preenchimento de pelo menos um dos seguintes documentos: CPF, RG ou Certidão civil.';
return false;
}
Expand Down Expand Up @@ -1314,7 +1318,19 @@ protected function validatePhoto(){

}

function possuiDocumentoObrigatorio() {
protected function obrigarDocumentoPessoa() {
$clsInstituicao = new clsPmieducarInstituicao();
$instituicao = $clsInstituicao->primeiraAtiva();
$obrigarDocumentoPessoa = FALSE;

if ($instituicao && isset($instituicao['obrigar_documento_pessoa'])) {
$obrigarDocumentoPessoa = dbBool($instituicao['obrigar_documento_pessoa']);
}

return $obrigarDocumentoPessoa;
}

protected function possuiDocumentoObrigatorio() {
$certidaoCivil = $this->termo_certidao_civil && $this->folha_certidao_civil && $this->livro_certidao_civil;
$certidaoNascimentoNovoFormato = $this->certidao_nascimento;
$certidaoCasamentoNovoFormato = $this->certidao_casamento;
Expand Down
4 changes: 2 additions & 2 deletions ieducar/intranet/educar_historico_escolar_cad.php
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ function Gerar()
if (validaControlePosicaoHistorico()) {
$this->campoNumero( "posicao", "Posição", $this->posicao, 1, 1, true, 'Informe a coluna equivalente a série/ano/etapa a qual o histórico pertence. Ex.: 1º ano informe 1, 2º ano informe 2' );
}
$this->campoMonetario( "carga_horaria", "Carga Horária", $this->carga_horaria, 8, 8, false);
$this->campoNumero( "carga_horaria", "Carga Horária", $this->carga_horaria, 8, 8, false);
$this->campoCheck( "cb_faltas_globalizadas", "Faltas Globalizadas", is_numeric($this->faltas_globalizadas) ? 'on' : '');
$this->campoNumero( "faltas_globalizadas", "Faltas Globalizadas", $this->faltas_globalizadas, 4, 4, false );
$this->campoNumero( "dias_letivos", "Dias Letivos", $this->dias_letivos, 3, 3, false);
Expand Down Expand Up @@ -341,7 +341,7 @@ function Gerar()
}


$this->campoTabelaInicio("notas","Notas",array("Disciplina","Nota","Faltas", '<p title="Informe a carga horária somente se a disciplina não pertencer à grade curricular do município.">C.H (?)</p>', "Ordem", "Dependência"),$this->historico_disciplinas);
$this->campoTabelaInicio("notas","Notas",array("Disciplina","Nota","Faltas", 'C.H', "Ordem", "Dependência"),$this->historico_disciplinas);

//$this->campoTexto( "nm_disciplina", "Disciplina", $this->nm_disciplina, 30, 255, false, false, false, '', '', 'autoCompleteComponentesCurricular(this)', 'onfocus' );
$this->campoTexto( "nm_disciplina", "Disciplina", $this->nm_disciplina, 30, 255, false, false, false, '', '', '', 'onfocus' );
Expand Down
5 changes: 5 additions & 0 deletions ieducar/intranet/educar_instituicao_cad.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class indice extends clsCadastro
var $data_educacenso;
var $altera_atestado_para_declaracao;
var $obrigar_campos_censo;
var $obrigar_documento_pessoa;
var $orgao_regional;

function Inicializar()
Expand Down Expand Up @@ -133,6 +134,7 @@ function Inicializar()
$this->exigir_dados_socioeconomicos = dbBool($this->exigir_dados_socioeconomicos);
$this->altera_atestado_para_declaracao = dbBool($this->altera_atestado_para_declaracao);
$this->obrigar_campos_censo = dbBool($this->obrigar_campos_censo);
$this->obrigar_documento_pessoa = dbBool($this->obrigar_documento_pessoa);


return $retorno;
Expand Down Expand Up @@ -256,6 +258,7 @@ function Gerar()
$this->campoCheck("altera_atestado_para_declaracao", "Alterar nome do título do menu e relatórios de Atestado para Declaração", $this->altera_atestado_para_declaracao);

$this->campoCheck("obrigar_campos_censo", "Obrigar o preenchimento dos campos exigidos pelo Censo escolar", $this->obrigar_campos_censo);
$this->campoCheck("obrigar_documento_pessoa", "Exigir documento (RG, CPF ou Certidão de nascimento / casamento) no cadastro pessoa / aluno", $this->obrigar_documento_pessoa);

$this->inputsHelper()->text(
'data_base',
Expand Down Expand Up @@ -348,6 +351,7 @@ function Novo()
$obj->data_educacenso = $this->data_educacenso;
$obj->exigir_dados_socioeconomicos = is_null($this->exigir_dados_socioeconomicos) ? false : true;
$obj->obrigar_campos_censo = !is_null($this->obrigar_campos_censo);
$obj->obrigar_documento_pessoa = !is_null($this->obrigar_documento_pessoa);
$obj->orgao_regional = $this->orgao_regional;
$cod_instituicao = $cadastrou = $obj->cadastra();

Expand Down Expand Up @@ -401,6 +405,7 @@ function Editar()
$obj->data_educacenso = $this->data_educacenso;
$obj->exigir_dados_socioeconomicos = is_null($this->exigir_dados_socioeconomicos) ? false : true;
$obj->obrigar_campos_censo = !is_null($this->obrigar_campos_censo);
$obj->obrigar_documento_pessoa = !is_null($this->obrigar_documento_pessoa);
$obj->orgao_regional = $this->orgao_regional;

$detalheAntigo = $obj->detalhe();
Expand Down
232 changes: 176 additions & 56 deletions ieducar/intranet/educar_matricula_cad.php
Original file line number Diff line number Diff line change
Expand Up @@ -211,64 +211,184 @@ protected function getCurso($id) {
$curso = new clsPmieducarCurso($id);
return $curso->detalhe();
}
function Enturmar(){
$enturmacoes_turma_dest = Portabilis_Utils_Database::fetchPreparedQuery("
select * from pmieducar.matricula_turma
where ref_cod_turma = {$this->ref_cod_turma} and ativo = 1");
$qtq_alunos = count($enturmacoes_turma_dest);
$db = new clsBanco();
$max_aluno = $db->CampoUnico("select max_aluno from pmieducar.turma where cod_turma = $this->ref_cod_turma");
$saldo_turma = $max_aluno - $qtq_alunos;
//echo $this->ref_cod_turma;die;
$enturmacoes = Portabilis_Utils_Database::fetchPreparedQuery("
select * from pmieducar.matricula_turma
where ref_cod_turma = {$this->ref_cod_turma_copiar_enturmacoes} and ativo = 1");
$qtd_alunos_new = count($enturmacoes);
if ($qtd_alunos_new < $saldo_turma){
foreach ($enturmacoes as $enturmar) {
//echo $enturmar['ref_cod_matricula']."fd".$this->ref_cod_turma;die;
$dado_matricula_old = Portabilis_Utils_Database::fetchPreparedQuery("
select * from pmieducar.matricula where cod_matricula = {$enturmar['ref_cod_matricula']} limit 1");
if (!$existe){
$data = date( "Y-m-d");
$datah = date( "Y-m-d H:i:s");
$this->pessoa_logada = $_SESSION['id_pessoa'];
//print_r($dado_matricula_old[0]['ref_ref_cod_escola']);die;
$this->data_matricula = Portabilis_Date_Utils::brToPgSQL($this->data_matricula);
$obj = new clsPmieducarMatricula(NULL, NULL,
$dado_matricula_old[0]['ref_ref_cod_escola'], $dado_matricula_old[0]['ref_ref_cod_serie'], NULL,
$this->pessoa_logada, $dado_matricula_old[0]['ref_cod_aluno'], 3, NULL, NULL, 1, $dado_matricula_old[0]['ano'],
1, NULL, NULL, NULL, NULL, $dado_matricula_old[0]['ref_cod_curso'],
NULL, 1, $datah);
$matricula_new = $obj->cadastra();
$db = new clsBanco();
$existe = $db->CampoUnico("select 1 from pmieducar.matricula_turma, pmieducar.matricula
where ref_cod_matricula = cod_matricula
and ref_cod_turma = {$this->ref_cod_turma}
and ref_cod_aluno = {$dado_matricula_old[0]['ref_cod_aluno']}");
$db = new clsBanco();
$db->CampoUnico("insert into pmieducar.matricula_turma
(ref_cod_matricula,
ref_cod_turma,
sequencial,
ref_usuario_exc,
ref_usuario_cad,
data_cadastro,
ativo,
data_enturmacao)
values
({$matricula_new}, {$this->ref_cod_turma}, {$enturmar['sequencial']}, NULL,
{$enturmar['ref_usuario_cad']}, '{$datah}', {$enturmar['ativo']}, '{$data}')");

/**
* Retorna todas enturmações ativas na turma. Consulta e retorna `todos` os
* campos da tabela `matricula_turma`.
*
* TODO mover este método para uma camada de serviço/repositório
*
* @param int $turma ID da turma
*
* @return array
*
* @throws Exception
*/
private function getEnturmacoesNaTurma($turma)
{
return (array) Portabilis_Utils_Database::fetchPreparedQuery(
"
select *
from pmieducar.matricula_turma
where ref_cod_turma = {$turma}
and ativo = 1
"
);
}

/**
* Retorna a quantidade máxima de alunos permitido na turma. Consulta e
* retorna o campo `max_aluno` da tabela `turma`.
*
* TODO mover este método para uma camada de serviço/repositório
*
* @param int $turma ID da turma
*
* @return int
*/
private function getMaximoAlunosNaTurma($turma)
{
return (int) (new clsBanco())->CampoUnico(
"
select max_aluno
from pmieducar.turma
where cod_turma = $turma
"
);
}

/**
* Retorna os dados de uma matrícula. Consulta e retorna `todos` os campos
* da tabela `matricula`.
*
* TODO mover este método para uma camada de serviço/repositório
*
* @param int $matricula ID da matrícula (cod_matricula)
*
* @return array
*
* @throws Exception
*/
private function getMatricula($matricula)
{
$matriculas = Portabilis_Utils_Database::fetchPreparedQuery(
"
select *
from pmieducar.matricula
where cod_matricula = {$matricula}
limit 1
"
);

if (is_array($matriculas) && count($matriculas)) {
return array_shift($matriculas);
}
}
header("Location: educar_matriculas_turma_cad.php?ref_cod_turma= {$this->ref_cod_turma}");
die;
}else{
$this->mensagem = Portabilis_String_Utils::toLatin1("A turma não tem saldo de vagas suficiente.");
//header("Location: educar_matricula_cad.php?ref_cod_turma_copiar_enturmacoes= {$this->ref_cod_turma_copiar_enturmacoes}");
return FALSE;

throw new Exception("A matrícula {$matricula} não foi encontrada.");
}

/**
* Cria uma nova matrícula e retorna o ID criado (cod_matricula).
*
* TODO mover este método para uma camada de serviço/repositório
*
* @param int $escola ID da escola (cod_escola)
* @param int $curso ID do curso (cod_curso)
* @param int $serie ID da série (cod_serie)
* @param int $aluno ID do aluno (cod_aluno)
* @param int $ano Ano da matrícula
*
* @return int ID da matrícula criada (cod_matricula)
*/
private function addMatricula($escola, $curso, $serie, $aluno, $ano)
{
$datahora = date('Y-m-d H:i:s');

$obj = new clsPmieducarMatricula(
null, null, $escola, $serie, null, $_SESSION['id_pessoa'], $aluno, 3, null, null, 1, $ano, 1, null, null,
null, null, $curso, null, 1, $datahora
);

return $obj->cadastra();
}

/**
* Cria uma enturmação.
*
* TODO mover este método para uma camada de serviço/repositório
*
* @param int $matricula ID da matrícula
* @param int $turma ID da matrícula
* @param int $sequencial Sequencial da matrícula
* @param int $ativo Status da matrícula 0: inativo 1: ativo
*
* @return bool
*/
private function addEnturmacao($matricula, $turma, $sequencial, $ativo)
{
$data = date('Y-m-d');
$datahora = date('Y-m-d H:i:s');
$usuario = $_SESSION['id_pessoa'];

(new clsBanco)->CampoUnico(
"
insert into pmieducar.matricula_turma (
ref_cod_matricula, ref_cod_turma, sequencial, ref_usuario_exc, ref_usuario_cad, data_cadastro,
ativo, data_enturmacao
)
values ({$matricula}, {$turma}, {$sequencial}, NULL, {$usuario}, '{$datahora}', {$ativo}, '{$data}')
"
);

return true;
}

/**
* Copia todos os alunos enturmados na turma `$this->ref_cod_turma_copiar_enturmacoes`
* para a turma `$this->ref_cod_turma`. Estes parâmetros são passados por
* $_GET para a aplicação.
*
* @return bool
*
* @throws Exception
*/
public function Enturmar()
{
try {
$enturmacoesNaTurmaDestino = $this->getEnturmacoesNaTurma($this->ref_cod_turma);
$enturmacoesParaCopiar = $this->getEnturmacoesNaTurma($this->ref_cod_turma_copiar_enturmacoes);
} catch (Exception $e) {
$this->mensagem = 'Houve um erro ao buscar informações das turmas.';
return false;
}

$maximoDeAlunosTurmaDestino = $this->getMaximoAlunosNaTurma($this->ref_cod_turma);
$quantidadeAlunosNaTurmaDestino = count($enturmacoesNaTurmaDestino);
$quantidadeAlunosParaCopiar = count($enturmacoesParaCopiar);
$vagasDisponiveisTurmaDestino = $maximoDeAlunosTurmaDestino - $quantidadeAlunosNaTurmaDestino;

if ($quantidadeAlunosParaCopiar > $vagasDisponiveisTurmaDestino) {
$this->mensagem = 'A turma não tem saldo de vagas suficiente.';
return false;
}

foreach ($enturmacoesParaCopiar as $enturmar) {
$dadosDaMatricula = $this->getMatricula($enturmar['ref_cod_matricula']);

$matricula = $this->addMatricula(
$this->ref_cod_escola,
$this->ref_cod_curso,
$this->ref_cod_serie,
$dadosDaMatricula['ref_cod_aluno'],
$this->ano
);

$this->addEnturmacao($matricula, $this->ref_cod_turma, $enturmar['sequencial'], $enturmar['ativo']);
}

header("Location: educar_matriculas_turma_cad.php?ref_cod_turma= {$this->ref_cod_turma}");
die();
}
}

function Novo()
{
Expand Down
Loading

0 comments on commit ebee2ea

Please sign in to comment.