Commit ac20311ca58fe63f2619d1c4fa24bd2d08b738cc

Authored by Eriksen Costa Paixão
1 parent 38191908
Exists in master

#15 by Eriksen: Corrigido bug que não listava os cursos de uma escola. Comentári…

…os no código foram acrescentados assim como reescrita das SQL com sprintf()


Showing 1 changed file with 72 additions and 33 deletions   Show diff stats
ieducar/intranet/educar_avancar_mod_cad.php
... ... @@ -27,6 +27,7 @@
27 27 * @subpackage Matricula
28 28 * @subpackage Rematricula
29 29 * @since Arquivo disponível desde a versão 1.0.0
  30 + * @todo Refatorar a lógica de indice::Novo() para uma classe na camada de domínio
30 31 * @version $Id$
31 32 */
32 33  
... ... @@ -60,20 +61,23 @@ class indice extends clsCadastro
60 61  
61 62 function Gerar()
62 63 {
63   - $instituicao_obrigatorio = true;
64   - $escola_obrigatorio = true;
65   - $curso_obrigatorio = true;
66   - $escola_curso_serie_obrigatorio = true;
67   - $turma_obrigatorio = true;
68   - $get_escola = true;
69   - $get_curso = true;
70   - $get_escola_curso_serie = true;
71   - $get_turma = true;
72   - $get_cursos_nao_padrao = true;
  64 + $instituicao_obrigatorio = TRUE;
  65 + $escola_obrigatorio = TRUE;
  66 + $curso_obrigatorio = TRUE;
  67 + $escola_curso_serie_obrigatorio = TRUE;
  68 + $turma_obrigatorio = TRUE;
  69 + $get_escola = TRUE;
  70 + $get_curso = TRUE;
  71 + $get_escola_curso_serie = TRUE;
  72 + $get_turma = TRUE;
  73 + $get_cursos_nao_padrao = FALSE;
73 74  
74 75 include 'include/pmieducar/educar_campo_lista.php';
75 76 }
76 77  
  78 + /**
  79 + * @todo Refatorar a lógica para uma classe na camada de domínio.
  80 + */
77 81 function Novo()
78 82 {
79 83 session_start();
... ... @@ -83,51 +87,86 @@ class indice extends clsCadastro
83 87 $db = new clsBanco();
84 88 $db2 = new clsBanco();
85 89  
86   - $ano = $db2->CampoUnico("SELECT MAX(ano) FROM pmieducar.escola_ano_letivo
87   - WHERE ref_cod_escola = {$this->ref_cod_escola} AND andamento = 1");
  90 + // Seleciona o maior ano letivo da escola em andamento
  91 + $ano = $db2->CampoUnico(sprintf("
  92 + SELECT MAX(ano) FROM pmieducar.escola_ano_letivo
  93 + WHERE ref_cod_escola = '%d' AND andamento = 1", $this->ref_cod_escola)
  94 + );
88 95  
  96 + // Caso a escola não tenha um ano letivo, usa o ano da data do servidor web
89 97 if (! is_numeric($ano)) {
90   - $ano = date("Y");
  98 + $ano = date('Y');
91 99 }
92 100  
93   - // Aprovados
94   - $db->Consulta("SELECT cod_matricula, ref_cod_aluno
95   - FROM pmieducar.matricula m, pmieducar.matricula_turma
96   - WHERE aprovado = '1' AND m.ativo = '1' AND ref_ref_cod_escola = '{$this->ref_cod_escola}' AND ref_ref_cod_serie='{$this->ref_ref_cod_serie}' AND ref_cod_curso = '$this->ref_cod_curso' AND cod_matricula = ref_cod_matricula AND ref_cod_turma = '$this->ref_cod_turma' ");
  101 + // Seleciona todos os alunos que foram aprovados na turma/série/curso/escola informados
  102 + $db->Consulta(sprintf("
  103 + SELECT
  104 + cod_matricula, ref_cod_aluno
  105 + FROM
  106 + pmieducar.matricula m, pmieducar.matricula_turma
  107 + WHERE
  108 + aprovado = '1' AND m.ativo = '1' AND ref_ref_cod_escola = '%d' AND
  109 + ref_ref_cod_serie='%d' AND ref_cod_curso = '%d' AND
  110 + cod_matricula = ref_cod_matricula AND ref_cod_turma = '%d'",
  111 + $this->ref_cod_escola, $this->ref_ref_cod_serie, $this->ref_cod_curso, $this->ref_cod_turma)
  112 + );
97 113  
98 114 while ($db->ProximoRegistro()) {
99 115 list($cod_matricula, $ref_cod_aluno) = $db->Tupla();
100   - $prox_mod = $db2->campoUnico("SELECT ref_serie_destino FROM pmieducar.sequencia_serie WHERE ref_serie_origem = '{$this->ref_ref_cod_serie}' AND ativo = '1' ");
  116 +
  117 + // Seleciona a série da sequência de séries
  118 + $prox_mod = $db2->campoUnico(sprintf(
  119 + "SELECT
  120 + ref_serie_destino
  121 + FROM
  122 + pmieducar.sequencia_serie
  123 + WHERE
  124 + ref_serie_origem = '%d' AND ativo = '1'", $this->ref_ref_cod_serie)
  125 + );
  126 +
  127 + // Seleciona o código do curso da série de sequência
  128 + $ref_cod_curso = $db2->CampoUnico(sprintf("SELECT ref_cod_curso FROM pmieducar.serie WHERE cod_serie = %d", $prox_mod));
101 129  
102 130 if (is_numeric($prox_mod)) {
103   - // Aqui localizar o próximo curso
104   - $ref_cod_curso = $db2->CampoUnico("SELECT ref_cod_curso FROM pmieducar.serie WHERE cod_serie = {$prox_mod}");
105   - $db2->Consulta("UPDATE pmieducar.matricula SET ultima_matricula = '0' WHERE cod_matricula = '$cod_matricula'");
  131 + // Atualiza a matrícula atual do aluno, para evitar que seja listada no cadastro deste
  132 + $db2->Consulta(sprintf("UPDATE pmieducar.matricula SET ultima_matricula = '0' WHERE cod_matricula = '%d'", $cod_matricula));
106 133  
107   - $db2->Consulta("
  134 + // Cria uma nova matrícula
  135 + $db2->Consulta(sprintf("
108 136 INSERT INTO pmieducar.matricula
109 137 (ref_ref_cod_escola, ref_ref_cod_serie, ref_usuario_cad, ref_cod_aluno, aprovado, data_cadastro, ano, ref_cod_curso, ultima_matricula)
110 138 VALUES
111   - ('{$this->ref_cod_escola}', '$prox_mod', '{$this->pessoa_logada}', '$ref_cod_aluno', '3', 'NOW()', '$ano', '{$ref_cod_curso}', '1')
112   - ");
  139 + ('%d', '%d', '%d', '%d', '3', 'NOW()', '%d', '%d', '1')",
  140 + $this->ref_cod_escola, $prox_mod, $this->pessoa_logada, $ref_cod_aluno, $ano, $ref_cod_curso)
  141 + );
113 142 }
114 143 }
115 144  
116   - // Reprovados
117   - $db->Consulta("SELECT cod_matricula, ref_cod_aluno, ref_ref_cod_serie FROM pmieducar.matricula, pmieducar.matricula_turma WHERE aprovado = '2' AND ref_ref_cod_escola = '{$this->ref_cod_escola}' AND ref_ref_cod_serie='{$this->ref_ref_cod_serie}' AND cod_matricula = ref_cod_matricula AND ref_cod_turma = '$this->ref_cod_turma'");
118   -
  145 + // Seleciona todos os alunos que foram reprovados na turma/série/curso/escola informados
  146 + $db->Consulta(sprintf("
  147 + SELECT
  148 + cod_matricula, ref_cod_aluno, ref_ref_cod_serie
  149 + FROM
  150 + pmieducar.matricula, pmieducar.matricula_turma
  151 + WHERE
  152 + aprovado = '2' AND ref_ref_cod_escola = '%d' AND ref_ref_cod_serie='%d' AND cod_matricula = ref_cod_matricula AND ref_cod_turma = '%d'",
  153 + $this->ref_cod_escola, $this->ref_ref_cod_serie, $this->ref_cod_turma)
  154 + );
  155 +
  156 + // Cria uma nova matrícula para cada aluno reprovado na mesma série/curso/escola informados
119 157 while ($db->ProximoRegistro()) {
120 158 list($cod_matricula, $ref_cod_aluno, $ref_cod_serie) = $db->Tupla();
121 159  
122   - $db2->Consulta("UPDATE pmieducar.matricula SET ultima_matricula = '0'
123   - WHERE cod_matricula = '$cod_matricula'");
  160 + $db2->Consulta(sprintf("UPDATE pmieducar.matricula SET ultima_matricula = '0'
  161 + WHERE cod_matricula = '%d'", $cod_matricula));
124 162  
125   - $db2->Consulta("
126   - INSERT INTO pmieducar.matricula
  163 + $db2->Consulta(
  164 + sprintf("INSERT INTO pmieducar.matricula
127 165 (ref_ref_cod_escola, ref_ref_cod_serie, ref_usuario_cad, ref_cod_aluno, aprovado, data_cadastro, ano, ref_cod_curso, ultima_matricula)
128 166 VALUES
129   - ('{$this->ref_cod_escola}', '$ref_cod_serie', '{$this->pessoa_logada}', '$ref_cod_aluno', '3', 'NOW()', '$ano', '{$this->ref_cod_curso}', '1')
130   - ");
  167 + ('%d', '%d', '%d', '%d', '3', 'NOW()', '%d', '%d', '1')",
  168 + $this->ref_cod_escola, $ref_cod_serie, $this->pessoa_logada, $ref_cod_aluno, $ano, $this->ref_cod_curso)
  169 + );
131 170 }
132 171  
133 172 $this->mensagem = "Rematrícula efetuada com sucesso!";
... ...