Commit e8b4a49ee7767de12de90ac666a8d1157c98b942
1 parent
6b85cbc0
Exists in
master
Atualizações diversas na classe {{{clsPmieducarServidor}}}:
* Subqueries para a seleção de servidores aptos a lecionar um componente curricular atualizados: período matutino a partir das 6 horas e período noturno encerrando as 23:59 * O horário de início e fim do array {{{$array_horario}}} é analisado para determinar que aulas iniciadas em um período (matutino, por exemplo), sejam consideradas apenas daquele período, facilitando a alocação dos servidores docentes, evitando a alocação de horário fragmentada (ex: 20 horas matutino e 4 horas vespertino onde 4 aulas semanais iniciam às 11:30 e terminem às 12:30) * Subquery para o período noturno corrigida: join para evitar que múltiplos registros fossem retornados, evitando erro de SQL
Showing
1 changed file
with
33 additions
and
4 deletions
Show diff stats
ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php
... | ... | @@ -442,6 +442,34 @@ class clsPmieducarServidor |
442 | 442 | $int_ref_cod_subnivel = NULL |
443 | 443 | ) { |
444 | 444 | |
445 | + // Extrai as informações de hora inicial e hora final, para definir melhor | |
446 | + // o lookup de carga horária de servidores alocados, para operações como | |
447 | + // a alocação de docente em quadro de horário. Isso é necessário para que | |
448 | + // não seja necessário alocar o docente em dois períodos diferentes apenas | |
449 | + // porque o horário final de uma aula extrapola o limite de horário do | |
450 | + // período. | |
451 | + if (is_array($array_horario) && 3 >= count($array_horario)) { | |
452 | + $horarioInicial = explode(':', $array_horario[1]); | |
453 | + $horarioFinal = explode(':', $array_horario[2]); | |
454 | + | |
455 | + $horarioInicial = $horarioInicial[0] * 60 + $horarioInicial[1]; | |
456 | + $horarioFinal = $horarioFinal[0] * 60 + $horarioFinal[1]; | |
457 | + | |
458 | + // Caso o horário definido inicie no período "matutino" e se encerre no | |
459 | + // período "vespertino", irá considerar como "matutino" apenas. | |
460 | + $matutinoLimite = 12 * 60; | |
461 | + if ($horarioInicial < $matutinoLimite && $horarioFinal > $matutinoLimite) { | |
462 | + $vespertino = false; | |
463 | + } | |
464 | + | |
465 | + // Caso o horário definido inicie no período "vespertino" e se encerre | |
466 | + // no período "noturno", irá considerar como "vespertino" apenas. | |
467 | + $vespertinoLimite = 18 * 60; | |
468 | + if ($horarioInicial < $vespertinoLimite && $horarioFinal > $vespertinoLimite) { | |
469 | + $noturno = false; | |
470 | + } | |
471 | + } | |
472 | + | |
445 | 473 | $whereAnd = ' WHERE '; |
446 | 474 | $filtros = ''; |
447 | 475 | $tabela_compl = ''; |
... | ... | @@ -609,7 +637,7 @@ class clsPmieducarServidor |
609 | 637 | FROM pmieducar.quadro_horario_horarios qhh |
610 | 638 | WHERE qhh.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' |
611 | 639 | AND qhh.ref_cod_escola = '$int_ref_cod_escola' |
612 | - AND hora_inicial >= '08:00' | |
640 | + AND hora_inicial >= '06:00' | |
613 | 641 | AND hora_inicial <= '12:00' |
614 | 642 | AND qhh.ativo = '1' |
615 | 643 | AND qhh.dia_semana <> '$int_dia_semana' |
... | ... | @@ -619,7 +647,7 @@ class clsPmieducarServidor |
619 | 647 | FROM pmieducar.quadro_horario_horarios_aux qhha |
620 | 648 | WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' |
621 | 649 | AND qhha.ref_cod_escola = $int_ref_cod_escola |
622 | - AND hora_inicial >= '08:00' | |
650 | + AND hora_inicial >= '06:00' | |
623 | 651 | AND hora_inicial <= '12:00' |
624 | 652 | AND qhha.ref_servidor = a.ref_cod_servidor |
625 | 653 | AND identificador = '$int_identificador' |
... | ... | @@ -686,8 +714,9 @@ class clsPmieducarServidor |
686 | 714 | AND qhh.ref_cod_escola = '$int_ref_cod_escola' |
687 | 715 | AND qhh.ativo = '1' |
688 | 716 | AND hora_inicial >= '18:00' |
689 | - AND hora_inicial <= '23:00' | |
717 | + AND hora_inicial <= '23:59' | |
690 | 718 | AND qhh.dia_semana <> '$int_dia_semana' |
719 | + AND qhh.ref_servidor = a.ref_cod_servidor | |
691 | 720 | GROUP BY qhh.ref_servidor ),'00:00') + '$str_hr_not' + COALESCE( |
692 | 721 | (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) |
693 | 722 | FROM pmieducar.quadro_horario_horarios_aux qhha |
... | ... | @@ -695,7 +724,7 @@ class clsPmieducarServidor |
695 | 724 | AND qhha.ref_cod_escola = '$int_ref_cod_escola' |
696 | 725 | AND qhha.ref_servidor = a.ref_cod_servidor |
697 | 726 | AND hora_inicial >= '18:00' |
698 | - AND hora_inicial <= '23:00' | |
727 | + AND hora_inicial <= '23:59' | |
699 | 728 | AND identificador = '$int_identificador' |
700 | 729 | GROUP BY qhha.ref_servidor),'00:00') )"; |
701 | 730 | } | ... | ... |