Commit ac20311ca58fe63f2619d1c4fa24bd2d08b738cc
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!"; | ... | ... |