Commit b1a1974b8537b326e84d06850c308f33ffbf6f5f
1 parent
1d5a441b
Exists in
master
#71 by Eriksen Costa: Atualizada interface de alocação de servidores:
* Reforçada validação javascript para evitar cargas horárias maiores que {{{clsPmieducarServidorAlocacao::$cargaHorariaMax}}} (padrão 6h) * Restrição da carga horária validada também no construtor de {{{clsPmieducarServidorAlocacao}}} * Melhoria na interface com javascript e texto de ajuda para esclarecer que o valor máximo da alocação é de 6h (padrão) por período)
Showing
2 changed files
with
104 additions
and
117 deletions
Show diff stats
ieducar/intranet/educar_servidor_alocacao_cad.php
... | ... | @@ -84,6 +84,9 @@ class indice extends clsCadastro |
84 | 84 | var $alocacao_array = array(); |
85 | 85 | var $alocacao_excluida_array = array(); |
86 | 86 | |
87 | + static $escolasPeriodos = array(); | |
88 | + static $periodos = array(); | |
89 | + | |
87 | 90 | function Inicializar() |
88 | 91 | { |
89 | 92 | $retorno = 'Novo'; |
... | ... | @@ -154,26 +157,21 @@ class indice extends clsCadastro |
154 | 157 | $this->campoRotulo('nm_instituicao', 'Instituição', $inst_det['nm_instituicao']); |
155 | 158 | $this->campoOculto('ref_ref_cod_instituicao', $this->ref_ref_cod_instituicao); |
156 | 159 | |
157 | - if (class_exists('clsPmieducarServidor')) { | |
158 | - $objTemp = new clsPmieducarServidor($this->ref_cod_servidor); | |
159 | - $det = $objTemp->detalhe(); | |
160 | - | |
161 | - if ($det) { | |
162 | - foreach ($det as $key => $registro) { | |
163 | - $this->$key = $registro; | |
164 | - } | |
165 | - } | |
160 | + // Dados do servidor | |
161 | + $objTemp = new clsPmieducarServidor($this->ref_cod_servidor); | |
162 | + $det = $objTemp->detalhe(); | |
166 | 163 | |
167 | - if ($this->ref_cod_servidor) { | |
168 | - $objTemp = new clsFuncionario($this->ref_cod_servidor); | |
169 | - $detalhe = $objTemp->detalhe(); | |
170 | - $detalhe = $detalhe['idpes']->detalhe(); | |
171 | - $nm_servidor = $detalhe['nome']; | |
164 | + if ($det) { | |
165 | + foreach ($det as $key => $registro) { | |
166 | + $this->$key = $registro; | |
172 | 167 | } |
173 | 168 | } |
174 | - else { | |
175 | - echo '<!--\nErro\nClasse clsPmieducarServidor não encontrada\n-->'; | |
176 | - $opcoes = array('' => 'Erro na geração'); | |
169 | + | |
170 | + if ($this->ref_cod_servidor) { | |
171 | + $objTemp = new clsFuncionario($this->ref_cod_servidor); | |
172 | + $detalhe = $objTemp->detalhe(); | |
173 | + $detalhe = $detalhe['idpes']->detalhe(); | |
174 | + $nm_servidor = $detalhe['nome']; | |
177 | 175 | } |
178 | 176 | |
179 | 177 | $this->campoRotulo('nm_servidor', 'Servidor', $nm_servidor); |
... | ... | @@ -202,9 +200,7 @@ class indice extends clsCadastro |
202 | 200 | unset($this->ref_cod_escola); |
203 | 201 | } |
204 | 202 | |
205 | - /** | |
206 | - * Exclusão | |
207 | - */ | |
203 | + // Exclusão | |
208 | 204 | if ($this->alocacao_array) { |
209 | 205 | foreach ($this->alocacao_array as $key => $alocacao) { |
210 | 206 | if (is_numeric($_POST['excluir_periodo'])) { |
... | ... | @@ -217,9 +213,7 @@ class indice extends clsCadastro |
217 | 213 | } |
218 | 214 | } |
219 | 215 | |
220 | - /** | |
221 | - * Carga Horária | |
222 | - */ | |
216 | + // Carga horária | |
223 | 217 | $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel))); |
224 | 218 | $total_horas = sprintf('%02d', (int) (floor($this->carga_horaria_disponivel))); |
225 | 219 | $total_minutos = sprintf('%02d', (int) ((floatval($this->carga_horaria_disponivel) - floatval($total_horas)) * 60)); |
... | ... | @@ -257,29 +251,24 @@ class indice extends clsCadastro |
257 | 251 | $this->campoOculto('excluir_periodo', ''); |
258 | 252 | unset($aux); |
259 | 253 | |
260 | - if (class_exists('clsPmieducarEscola')) { | |
261 | - $obj_escola = new clsPmieducarEscola(); | |
262 | - $lista_escola = $obj_escola->lista(null, null, null, | |
263 | - $this->ref_ref_cod_instituicao, null, null, null, null, null, null, 1); | |
254 | + // Escolas | |
255 | + $obj_escola = new clsPmieducarEscola(); | |
256 | + $lista_escola = $obj_escola->lista(NULL, NULL, NULL, | |
257 | + $this->ref_ref_cod_instituicao, NULL, NULL, NULL, NULL, NULL, NULL, 1); | |
264 | 258 | |
265 | - if ($lista_escola) { | |
266 | - $opcoes = array('' => 'Selecione'); | |
267 | - foreach ($lista_escola as $escola) { | |
268 | - $opcoes[$escola['cod_escola']] = $escola['nome']; | |
269 | - } | |
259 | + if ($lista_escola) { | |
260 | + $opcoes = array('' => 'Selecione'); | |
261 | + foreach ($lista_escola as $escola) { | |
262 | + $opcoes[$escola['cod_escola']] = $escola['nome']; | |
270 | 263 | } |
271 | 264 | } |
272 | - else { | |
273 | - $registro['ref_cod_escola'] = 'Erro na geração'; | |
274 | - echo "<!--\nErro\nClasse não existente: clsPmieducarEscola\n-->"; | |
275 | - } | |
276 | 265 | |
277 | 266 | $periodo = array( |
278 | - '' => 'Selecione', | |
279 | 267 | 1 => 'Matutino', |
280 | 268 | 2 => 'Vespertino', |
281 | 269 | 3 => 'Noturno' |
282 | 270 | ); |
271 | + self::$periodos = $periodo; | |
283 | 272 | |
284 | 273 | $this->campoLista('ref_cod_escola', 'Escola', $opcoes, $this->ref_cod_escola, |
285 | 274 | '', FALSE, '', '', FALSE, FALSE); |
... | ... | @@ -290,6 +279,9 @@ class indice extends clsCadastro |
290 | 279 | $this->campoHora('carga_horaria_alocada', 'Carga Horária', |
291 | 280 | $this->carga_horaria_alocada, FALSE); |
292 | 281 | |
282 | + // Altera a string de descrição original do campo hora | |
283 | + $this->campos['carga_horaria_alocada'][6] = sprintf('Formato hh:mm (máximo de %d horas por período)', clsPmieducarServidorAlocacao::$cargaHorariaMax); | |
284 | + | |
293 | 285 | $this->campoOculto('alocacao_array', serialize($this->alocacao_array)); |
294 | 286 | |
295 | 287 | $this->campoOculto('alocacao_excluida_array', serialize($this->alocacao_excluida_array)); |
... | ... | @@ -308,10 +300,10 @@ class indice extends clsCadastro |
308 | 300 | $link_excluir = ''; |
309 | 301 | |
310 | 302 | if ($obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 3)) { |
311 | - $link_excluir = "<a href='#' onclick=\"getElementById('excluir_periodo').value = '{$key}'; getElementById( 'tipoacao' ).value = ''; {$this->__nome}.submit();\"><img src='imagens/nvp_bola_xis.gif' title='Excluir' border=0></a>"; | |
303 | + $link_excluir = "<a href='#' onclick=\"getElementById('excluir_periodo').value = '{$key}'; getElementById('tipoacao').value = ''; {$this->__nome}.submit();\"><img src='imagens/nvp_bola_xis.gif' title='Excluir' border=0></a>"; | |
312 | 304 | } |
313 | 305 | |
314 | - $obj_escola = new clsPmieducarEscola( $alocacao['ref_cod_escola'] ); | |
306 | + $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']); | |
315 | 307 | $det_escola = $obj_escola->detalhe(); |
316 | 308 | $det_escola = $det_escola['nome']; |
317 | 309 | |
... | ... | @@ -328,6 +320,9 @@ class indice extends clsCadastro |
328 | 320 | break; |
329 | 321 | } |
330 | 322 | |
323 | + // Períodos usados na escola | |
324 | + self::$escolasPeriodos[$alocacao['ref_cod_escola']][$alocacao['periodo']] = $alocacao['periodo']; | |
325 | + | |
331 | 326 | $this->campoTextoInv('periodo_' . $key, '', $nm_periodo, 10, 10, FALSE, |
332 | 327 | FALSE, TRUE, '', '', '', '', 'periodo'); |
333 | 328 | |
... | ... | @@ -382,7 +377,7 @@ class indice extends clsCadastro |
382 | 377 | $achou = FALSE; |
383 | 378 | |
384 | 379 | foreach ($this->alocacao_array as $alocacao) { |
385 | - if ($alocacao['periodo'] == $aux["periodo"]) { | |
380 | + if ($alocacao['periodo'] == $aux['periodo']) { | |
386 | 381 | $achou = TRUE; |
387 | 382 | } |
388 | 383 | } |
... | ... | @@ -403,7 +398,13 @@ class indice extends clsCadastro |
403 | 398 | $this->ref_cod_servidor, NULL, NULL, $this->ativo, |
404 | 399 | $alocacao['carga_horaria_alocada'], $alocacao['periodo']); |
405 | 400 | |
406 | - $cadastrou = $obj->cadastra(); | |
401 | + $cadastrou = FALSE; | |
402 | + if (FALSE == $obj->lista(NULL, $this->ref_ref_cod_instituicao, | |
403 | + NULL, NULL, $alocacao['escola'], $this->ref_cod_servidor, NULL, NULL, | |
404 | + NULL, NULL, NULL, NULL, $alocacao['periodo']) | |
405 | + ) { | |
406 | + $cadastrou = $obj->cadastra(); | |
407 | + } | |
407 | 408 | |
408 | 409 | if (!$cadastrou) { |
409 | 410 | $this->mensagem = 'Cadastro não realizado.<br />'; |
... | ... | @@ -428,7 +429,6 @@ class indice extends clsCadastro |
428 | 429 | function Excluir() |
429 | 430 | { |
430 | 431 | return FALSE; |
431 | - | |
432 | 432 | } |
433 | 433 | } |
434 | 434 | |
... | ... | @@ -445,6 +445,31 @@ $pagina->addForm($miolo); |
445 | 445 | $pagina->MakeAll(); |
446 | 446 | ?> |
447 | 447 | <script type="text/javascript"> |
448 | +var escolasPeriodos = <?php print json_encode(indice::$escolasPeriodos); ?>; | |
449 | +var periodos = <?php print json_encode(indice::$periodos); ?>; | |
450 | + | |
451 | +window.onload = function() | |
452 | +{ | |
453 | + getPeriodos(document.getElementById('ref_cod_escola').value); | |
454 | +} | |
455 | + | |
456 | +document.getElementById('ref_cod_escola').onchange = function() | |
457 | +{ | |
458 | + getPeriodos(document.getElementById('ref_cod_escola').value); | |
459 | +} | |
460 | + | |
461 | +function getPeriodos(codEscola) | |
462 | +{ | |
463 | + obj = document.getElementById('periodo'); | |
464 | + obj.length = 0; | |
465 | + | |
466 | + for (var ii in periodos) { | |
467 | + if (!escolasPeriodos[codEscola] || !escolasPeriodos[codEscola][ii]) { | |
468 | + obj.options[obj.length] = new Option(periodos[ii], i); | |
469 | + } | |
470 | + } | |
471 | +} | |
472 | + | |
448 | 473 | function validaHora() |
449 | 474 | { |
450 | 475 | var carga_horaria = document.getElementById('carga_horaria_alocada').value; |
... | ... | @@ -473,8 +498,14 @@ function validaHora() |
473 | 498 | var carga_horaria_alocada_ = document.getElementById('carga_horaria_alocada').value.split(":"); |
474 | 499 | |
475 | 500 | hora_ = Date.UTC(1970, 01, 01, carga_horaria_alocada_[0], carga_horaria_alocada_[1], 0); |
501 | + hora_max_ = Date.UTC(1970, 01, 01, <?php print clsPmieducarServidorAlocacao::$cargaHorariaMax ?>, 0, 0); | |
476 | 502 | hora_restantes_ = Date.UTC(1970, 01, 01, horas_restantes[0], horas_restantes[1], 0); |
477 | 503 | |
504 | + if (hora_ > hora_max_) { | |
505 | + alert("O número de horas máximo por período/escola é de 6h."); | |
506 | + return false; | |
507 | + } | |
508 | + | |
478 | 509 | if (hora_ > hora_restantes_) { |
479 | 510 | alert("Atenção número de horas excedem o número de horas disponíveis! Por favor, corrija."); |
480 | 511 | document.getElementById('ref_cod_escola').value = ''; | ... | ... |
ieducar/intranet/include/pmieducar/clsPmieducarServidorAlocacao.inc.php
... | ... | @@ -55,6 +55,12 @@ class clsPmieducarServidorAlocacao |
55 | 55 | var $periodo; |
56 | 56 | |
57 | 57 | /** |
58 | + * Carga horária máxima para um período de alocação (em horas). | |
59 | + * @var float | |
60 | + */ | |
61 | + static $cargaHorariaMax = 6.0; | |
62 | + | |
63 | + /** | |
58 | 64 | * Armazena o total de resultados obtidos na última chamada ao método lista(). |
59 | 65 | * @var int |
60 | 66 | */ |
... | ... | @@ -125,89 +131,33 @@ class clsPmieducarServidorAlocacao |
125 | 131 | $this->_campos_lista = $this->_todos_campos = 'cod_servidor_alocacao, ref_ref_cod_instituicao, ref_usuario_exc, ref_usuario_cad, ref_cod_escola, ref_cod_servidor, data_cadastro, data_exclusao, ativo, carga_horaria, periodo'; |
126 | 132 | |
127 | 133 | if (is_numeric($ref_usuario_cad)) { |
128 | - if (class_exists("clsPmieducarUsuario")) { | |
129 | - $tmp_obj = new clsPmieducarUsuario($ref_usuario_cad); | |
130 | - if (method_exists($tmp_obj, "existe")) { | |
131 | - if ($tmp_obj->existe()) { | |
132 | - $this->ref_usuario_cad = $ref_usuario_cad; | |
133 | - } | |
134 | - } | |
135 | - elseif (method_exists($tmp_obj, "detalhe")) { | |
136 | - if ($tmp_obj->detalhe()) { | |
137 | - $this->ref_usuario_cad = $ref_usuario_cad; | |
138 | - } | |
139 | - } | |
140 | - } | |
141 | - else { | |
142 | - if ($db->CampoUnico("SELECT 1 FROM pmieducar.usuario WHERE cod_usuario = '{$ref_usuario_cad}'")) { | |
143 | - $this->ref_usuario_cad = $ref_usuario_cad; | |
144 | - } | |
134 | + $usuario = new clsPmieducarUsuario($ref_usuario_cad); | |
135 | + if ($usuario->existe()) { | |
136 | + $this->ref_usuario_cad = $ref_usuario_cad; | |
145 | 137 | } |
146 | 138 | } |
147 | 139 | |
148 | 140 | if (is_numeric($ref_usuario_exc)) { |
149 | - if (class_exists("clsPmieducarUsuario")) { | |
150 | - $tmp_obj = new clsPmieducarUsuario($ref_usuario_exc); | |
151 | - if (method_exists($tmp_obj, "existe")) { | |
152 | - if ($tmp_obj->existe()) { | |
153 | - $this->ref_usuario_exc = $ref_usuario_exc; | |
154 | - } | |
155 | - } | |
156 | - elseif (method_exists($tmp_obj, "detalhe")) { | |
157 | - if ($tmp_obj->detalhe()) { | |
158 | - $this->ref_usuario_exc = $ref_usuario_exc; | |
159 | - } | |
160 | - } | |
161 | - } | |
162 | - else { | |
163 | - if ($db->CampoUnico("SELECT 1 FROM pmieducar.usuario WHERE cod_usuario = '{$ref_usuario_exc}'")) { | |
164 | - $this->ref_usuario_exc = $ref_usuario_exc; | |
165 | - } | |
141 | + $usuario = new clsPmieducarUsuario($ref_usuario_exc); | |
142 | + if ($usuario->existe()) { | |
143 | + $this->ref_usuario_exc = $ref_usuario_exc; | |
166 | 144 | } |
167 | 145 | } |
146 | + | |
168 | 147 | if (is_numeric($ref_cod_escola)) { |
169 | - if (class_exists("clsPmieducarEscola")) { | |
170 | - $tmp_obj = new clsPmieducarEscola($ref_cod_escola); | |
171 | - if (method_exists($tmp_obj, "existe")) { | |
172 | - if ($tmp_obj->existe()) { | |
173 | - $this->ref_cod_escola = $ref_cod_escola; | |
174 | - } | |
175 | - } | |
176 | - elseif (method_exists($tmp_obj, "detalhe")) { | |
177 | - if ($tmp_obj->detalhe()) { | |
178 | - $this->ref_cod_escola = $ref_cod_escola; | |
179 | - } | |
180 | - } | |
181 | - } | |
182 | - else { | |
183 | - if ($db->CampoUnico("SELECT 1 FROM pmieducar.escola WHERE cod_escola = '{$ref_cod_escola}'")) { | |
184 | - $this->ref_cod_escola = $ref_cod_escola; | |
185 | - } | |
148 | + $escola = new clsPmieducarEscola($ref_cod_escola); | |
149 | + if ($escola->existe()) { | |
150 | + $this->ref_cod_escola = $ref_cod_escola; | |
186 | 151 | } |
187 | 152 | } |
188 | 153 | |
189 | 154 | if (is_numeric($ref_cod_servidor) && is_numeric($ref_ref_cod_instituicao)) { |
190 | - if (class_exists("clsPmieducarServidor")) { | |
191 | - $tmp_obj = new clsPmieducarServidor($ref_cod_servidor, NULL, NULL, NULL, | |
192 | - NULL, NULL, NULL, $ref_ref_cod_instituicao); | |
193 | - if (method_exists($tmp_obj, "existe")) { | |
194 | - if ($tmp_obj->existe()) { | |
195 | - $this->ref_cod_servidor = $ref_cod_servidor; | |
196 | - $this->ref_ref_cod_instituicao = $ref_ref_cod_instituicao; | |
197 | - } | |
198 | - } | |
199 | - elseif (method_exists($tmp_obj, "detalhe")) { | |
200 | - if ($tmp_obj->detalhe()) { | |
201 | - $this->ref_cod_servidor = $ref_cod_servidor; | |
202 | - $this->ref_ref_cod_instituicao = $ref_ref_cod_instituicao; | |
203 | - } | |
204 | - } | |
205 | - } | |
206 | - else { | |
207 | - if ($db->CampoUnico("SELECT 1 FROM pmieducar.servidor WHERE cod_servidor = '{$ref_cod_servidor}' AND ref_cod_instituicao = '{$ref_ref_cod_instituicao}'")) { | |
208 | - $this->ref_cod_servidor = $ref_cod_servidor; | |
209 | - $this->ref_ref_cod_instituicao = $ref_ref_cod_instituicao; | |
210 | - } | |
155 | + $servidor = new clsPmieducarServidor($ref_cod_servidor, NULL, NULL, NULL, | |
156 | + NULL, NULL, NULL, $ref_ref_cod_instituicao); | |
157 | + | |
158 | + if ($servidor->existe()) { | |
159 | + $this->ref_cod_servidor = $ref_cod_servidor; | |
160 | + $this->ref_ref_cod_instituicao = $ref_ref_cod_instituicao; | |
211 | 161 | } |
212 | 162 | } |
213 | 163 | |
... | ... | @@ -227,8 +177,14 @@ class clsPmieducarServidorAlocacao |
227 | 177 | $this->ativo = $ativo; |
228 | 178 | } |
229 | 179 | |
180 | + // Valida a carga horária | |
230 | 181 | if (is_string($carga_horaria)) { |
231 | - $this->carga_horaria = $carga_horaria; | |
182 | + $datetime = explode(':', $carga_horaria); | |
183 | + $minutos = (((int) $datetime[0]) * 60) + (int) $datetime[1]; | |
184 | + | |
185 | + if ((self::$cargaHorariaMax * 60) >= $minutos) { | |
186 | + $this->carga_horaria = $carga_horaria; | |
187 | + } | |
232 | 188 | } |
233 | 189 | |
234 | 190 | if (is_numeric($periodo)) { |
... | ... | @@ -379,7 +335,7 @@ class clsPmieducarServidorAlocacao |
379 | 335 | $int_ref_cod_servidor = NULL, $date_data_cadastro_ini = NULL, |
380 | 336 | $date_data_cadastro_fim = NULL, $date_data_exclusao_ini = NULL, |
381 | 337 | $date_data_exclusao_fim = NULL, $int_ativo = NULL, $int_carga_horaria = NULL, |
382 | - $int_periodo = NULL,$bool_busca_nome = FALSE, $boo_professor = NULL) | |
338 | + $int_periodo = NULL, $bool_busca_nome = FALSE, $boo_professor = NULL) | |
383 | 339 | { |
384 | 340 | $filtros = ''; |
385 | 341 | $whereAnd = ' WHERE '; |
... | ... | @@ -533,7 +489,7 @@ class clsPmieducarServidorAlocacao |
533 | 489 | { |
534 | 490 | if (is_numeric($this->cod_servidor_alocacao)) { |
535 | 491 | $db = new clsBanco(); |
536 | - $db->Consulta( "SELECT {$this->_todos_campos} FROM {$this->_tabela} WHERE cod_servidor_alocacao = '{$this->cod_servidor_alocacao}'" ); | |
492 | + $db->Consulta("SELECT {$this->_todos_campos} FROM {$this->_tabela} WHERE cod_servidor_alocacao = '{$this->cod_servidor_alocacao}'"); | |
537 | 493 | $db->ProximoRegistro(); |
538 | 494 | return $db->Tupla(); |
539 | 495 | } | ... | ... |