Commit c7299884c5b6bc747490447f58e5e1a7d27635f4
1 parent
8bcf8480
Exists in
master
#32 by Eriksen: Corrigido execução de regra de negócio ao afastar servidor. A correção envolve:
* Refactoring de código * Correção de código SQL com erro em clsPmieducarServidor::Listar() * Teste funcional ServidorAfastarWebTest atualizado para cobrir a correção
Showing
3 changed files
with
327 additions
and
231 deletions
Show diff stats
ieducar/intranet/educar_servidor_afastamento_cad.php
| ... | ... | @@ -33,7 +33,6 @@ require_once 'include/pmieducar/geral.inc.php'; |
| 33 | 33 | |
| 34 | 34 | |
| 35 | 35 | class clsIndexBase extends clsBase { |
| 36 | - | |
| 37 | 36 | public function Formular() { |
| 38 | 37 | $this->SetTitulo($this->_instituicao . ' i-Educar - Servidor Afastamento'); |
| 39 | 38 | $this->processoAp = '635'; |
| ... | ... | @@ -46,11 +45,13 @@ class indice extends clsCadastro { |
| 46 | 45 | |
| 47 | 46 | /** |
| 48 | 47 | * Referência a usuário da sessão |
| 49 | - * | |
| 50 | 48 | * @var int |
| 51 | 49 | */ |
| 52 | 50 | public $pessoa_logada = NULL; |
| 53 | 51 | |
| 52 | + /** | |
| 53 | + * Atributos de mapeamento dos campos de banco de dados | |
| 54 | + */ | |
| 54 | 55 | public |
| 55 | 56 | $ref_cod_servidor = NULL, |
| 56 | 57 | $sequencial = NULL, |
| ... | ... | @@ -68,9 +69,8 @@ class indice extends clsCadastro { |
| 68 | 69 | $parametros = NULL; |
| 69 | 70 | |
| 70 | 71 | /** |
| 71 | - * Array dos dias da semana | |
| 72 | - * | |
| 73 | - * @var Array | |
| 72 | + * Dias da semana | |
| 73 | + * @var array | |
| 74 | 74 | */ |
| 75 | 75 | public $dias_da_semana = array( |
| 76 | 76 | '' => 'Selecione', |
| ... | ... | @@ -85,6 +85,10 @@ class indice extends clsCadastro { |
| 85 | 85 | |
| 86 | 86 | |
| 87 | 87 | |
| 88 | + /** | |
| 89 | + * Implementação do método clsCadastro::Inicializar() | |
| 90 | + * @see ieducar/intranet/include/clsCadastro#Inicializar() | |
| 91 | + */ | |
| 88 | 92 | public function Inicializar() { |
| 89 | 93 | session_start(); |
| 90 | 94 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| ... | ... | @@ -113,8 +117,7 @@ class indice extends clsCadastro { |
| 113 | 117 | $registro = $obj->detalhe(); |
| 114 | 118 | |
| 115 | 119 | if ($registro) { |
| 116 | - | |
| 117 | - // passa todos os valores obtidos no registro para atributos do objeto | |
| 120 | + // Passa todos os valores obtidos no registro para atributos do objeto | |
| 118 | 121 | foreach ($registro as $campo => $val) { |
| 119 | 122 | $this->$campo = $val; |
| 120 | 123 | } |
| ... | ... | @@ -143,6 +146,10 @@ class indice extends clsCadastro { |
| 143 | 146 | |
| 144 | 147 | |
| 145 | 148 | |
| 149 | + /** | |
| 150 | + * Implementação do método clsCadastro::Gerar() | |
| 151 | + * @see ieducar/intranet/include/clsCadastro#Gerar() | |
| 152 | + */ | |
| 146 | 153 | public function Gerar() { |
| 147 | 154 | $this->campoOculto('ref_cod_servidor', $this->ref_cod_servidor); |
| 148 | 155 | $this->campoOculto('sequencial', $this->sequencial); |
| ... | ... | @@ -153,13 +160,13 @@ class indice extends clsCadastro { |
| 153 | 160 | $objTemp = new clsPmieducarMotivoAfastamento(); |
| 154 | 161 | $lista = $objTemp->lista(); |
| 155 | 162 | |
| 156 | - if (is_array($lista) && count($lista)) { | |
| 163 | + if (is_array($lista) && count($lista) > 0) { | |
| 157 | 164 | foreach ($lista as $registro) { |
| 158 | 165 | $opcoes[$registro['cod_motivo_afastamento']] = $registro['nm_motivo']; |
| 159 | 166 | } |
| 160 | 167 | } |
| 161 | 168 | else { |
| 162 | - $opcoes = array('' => 'Erro na geracao'); | |
| 169 | + $opcoes = array('' => 'Nenhum motivo de afastamento cadastrado'); | |
| 163 | 170 | } |
| 164 | 171 | |
| 165 | 172 | if ($this->status == 'N') { |
| ... | ... | @@ -171,123 +178,140 @@ class indice extends clsCadastro { |
| 171 | 178 | $opcoes, $this->ref_cod_motivo_afastamento, '', FALSE, '', '', TRUE); |
| 172 | 179 | } |
| 173 | 180 | |
| 174 | - // data | |
| 181 | + // Datas para registro | |
| 182 | + // Se novo registro | |
| 175 | 183 | if ($this->status == 'N') { |
| 176 | 184 | $this->campoData('data_saida', 'Data de Afastamento', $this->data_saida, TRUE); |
| 177 | 185 | } |
| 186 | + // Se edição, mostra a data de afastamento | |
| 178 | 187 | elseif ($this->status == 'E') { |
| 179 | 188 | $this->campoRotulo('data_saida', 'Data de Afastamento', $this->data_saida); |
| 180 | 189 | } |
| 181 | 190 | |
| 191 | + // Se edição, mostra campo para entrar com data de retorno | |
| 182 | 192 | if ($this->status == 'E') { |
| 183 | 193 | $this->campoData('data_retorno', 'Data de Retorno', $this->data_retorno, FALSE); |
| 184 | 194 | } |
| 185 | 195 | |
| 186 | - if (class_exists('clsPmieducarServidor')) { | |
| 187 | - $obj_servidor = new clsPmieducarServidor($this->ref_cod_servidor, | |
| 188 | - NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); | |
| 196 | + $obj_servidor = new clsPmieducarServidor($this->ref_cod_servidor, | |
| 197 | + NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); | |
| 189 | 198 | |
| 190 | - $det_servidor = $obj_servidor->detalhe(); | |
| 199 | + $det_servidor = $obj_servidor->detalhe(); | |
| 191 | 200 | |
| 192 | - if ($det_servidor) { | |
| 193 | 201 | |
| 194 | - if (class_exists('clsPmieducarFuncao')) { | |
| 195 | - $obj_funcao = new clsPmieducarFuncao($det_servidor['ref_cod_funcao'], | |
| 196 | - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); | |
| 202 | + if ($det_servidor) { | |
| 203 | + $obj_funcao = new clsPmieducarFuncao($det_servidor['ref_cod_funcao'], | |
| 204 | + NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao); | |
| 197 | 205 | |
| 198 | - $det_funcao = $obj_funcao->detalhe(); | |
| 206 | + // Se for professor | |
| 207 | + if (TRUE == $obj_servidor->isProfessor()) { | |
| 208 | + $obj = new clsPmieducarQuadroHorarioHorarios(); | |
| 199 | 209 | |
| 200 | - if ($det_funcao['professor'] == 1) { | |
| 201 | - $obj = new clsPmieducarQuadroHorarioHorarios(); | |
| 202 | - $lista = $obj->lista(NULL, NULL, NULL, NULL, NULL, NULL, NULL, | |
| 203 | - $this->ref_cod_instituicao, NULL, $this->ref_cod_servidor, NULL, | |
| 204 | - NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL); | |
| 210 | + // Pega a lista de aulas alocadas para este servidor | |
| 211 | + $lista = $obj->lista(NULL, NULL, NULL, NULL, NULL, NULL, NULL, | |
| 212 | + $this->ref_cod_instituicao, NULL, $this->ref_cod_servidor, NULL, | |
| 213 | + NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL); | |
| 205 | 214 | |
| 206 | - if ($lista) { | |
| 207 | - | |
| 208 | - // Passa todos os valores obtidos no registro para atributos do objeto | |
| 209 | - foreach ($lista as $campo => $val) { | |
| 210 | - $temp = array(); | |
| 211 | - $temp['hora_inicial'] = $val['hora_inicial']; | |
| 212 | - $temp['hora_final'] = $val['hora_final']; | |
| 213 | - $temp['dia_semana'] = $val['dia_semana']; | |
| 214 | - $temp['ref_cod_escola'] = $val['ref_cod_escola']; | |
| 215 | - $temp['ref_cod_substituto'] = $val['ref_servidor_substituto']; | |
| 216 | - $this->alocacao_array[] = $temp; | |
| 217 | - } | |
| 218 | - | |
| 219 | - if ($this->alocacao_array) { | |
| 220 | - $tamanho = sizeof($alocacao); | |
| 221 | - $script = "<script>\nvar num_alocacao = {$tamanho};\n"; | |
| 222 | - $script .= "var array_servidores = Array();\n"; | |
| 215 | + if ($lista) { | |
| 216 | + // Passa todos os valores obtidos no registro para atributos do objeto | |
| 217 | + foreach ($lista as $campo => $val) { | |
| 218 | + $temp = array(); | |
| 219 | + $temp['hora_inicial'] = $val['hora_inicial']; | |
| 220 | + $temp['hora_final'] = $val['hora_final']; | |
| 221 | + $temp['dia_semana'] = $val['dia_semana']; | |
| 222 | + $temp['ref_cod_escola'] = $val['ref_cod_escola']; | |
| 223 | + $temp['ref_cod_disciplina'] = $val['ref_cod_disciplina']; | |
| 224 | + $temp['ref_cod_substituto'] = $val['ref_servidor_substituto']; | |
| 225 | + $this->alocacao_array[] = $temp; | |
| 226 | + } | |
| 223 | 227 | |
| 224 | - foreach ($this->alocacao_array as $key => $alocacao) { | |
| 225 | - $script .= "array_servidores[{$key}] = new Array();\n"; | |
| 228 | + if ($this->alocacao_array) { | |
| 229 | + $tamanho = sizeof($alocacao); | |
| 230 | + $script = "<script>\nvar num_alocacao = {$tamanho};\n"; | |
| 231 | + $script .= "var array_servidores = Array();\n"; | |
| 226 | 232 | |
| 227 | - $hora_ini = explode(":", $alocacao['hora_inicial']); | |
| 228 | - $hora_fim = explode(":", $alocacao['hora_final']); | |
| 233 | + foreach ($this->alocacao_array as $key => $alocacao) { | |
| 234 | + $script .= "array_servidores[{$key}] = new Array();\n"; | |
| 229 | 235 | |
| 230 | - $horas_utilizadas = ($hora_fim[0] - $hora_ini[0]); | |
| 231 | - $minutos_utilizados = ($hora_fim[1] - $hora_ini[1]); | |
| 236 | + $hora_ini = explode(":", $alocacao['hora_inicial']); | |
| 237 | + $hora_fim = explode(":", $alocacao['hora_final']); | |
| 232 | 238 | |
| 233 | - $horas = sprintf('%02d', (int) $horas_utilizadas); | |
| 234 | - $minutos = sprintf('%02d', (int) $minutos_utilizados); | |
| 239 | + $horas_utilizadas = ($hora_fim[0] - $hora_ini[0]); | |
| 240 | + $minutos_utilizados = ($hora_fim[1] - $hora_ini[1]); | |
| 235 | 241 | |
| 236 | - $str_horas_utilizadas = "{$horas}:{$minutos}"; | |
| 242 | + $horas = sprintf('%02d', (int) $horas_utilizadas); | |
| 243 | + $minutos = sprintf('%02d', (int) $minutos_utilizados); | |
| 237 | 244 | |
| 238 | - $script .= "array_servidores[{$key}][0] = '{$str_horas_utilizadas}';\n"; | |
| 239 | - $script .= "array_servidores[{$key}][1] = '';\n\n"; | |
| 245 | + $str_horas_utilizadas = "{$horas}:{$minutos}"; | |
| 240 | 246 | |
| 241 | - $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']); | |
| 242 | - $det_escola = $obj_escola->detalhe(); | |
| 243 | - $det_escola = $det_escola['nome']; | |
| 244 | - $nm_dia_semana = $this->dias_da_semana[$alocacao['dia_semana']]; | |
| 247 | + $script .= "array_servidores[{$key}][0] = '{$str_horas_utilizadas}';\n"; | |
| 248 | + $script .= "array_servidores[{$key}][1] = '';\n\n"; | |
| 245 | 249 | |
| 246 | - $obj_subst = new clsPessoa_($alocacao['ref_cod_substituto']); | |
| 247 | - $det_subst = $obj_subst->detalhe(); | |
| 250 | + $obj_escola = new clsPmieducarEscola($alocacao['ref_cod_escola']); | |
| 251 | + $det_escola = $obj_escola->detalhe(); | |
| 252 | + $det_escola = $det_escola['nome']; | |
| 253 | + $nm_dia_semana = $this->dias_da_semana[$alocacao['dia_semana']]; | |
| 248 | 254 | |
| 249 | - if ($this->status == 'N') { | |
| 250 | - $this->campoTextoInv("dia_semana_{$key}_", '', $nm_dia_semana, | |
| 251 | - 8, 8, FALSE, FALSE, TRUE, '', '', '', '', 'dia_semana'); | |
| 255 | + $obj_subst = new clsPessoa_($alocacao['ref_cod_substituto']); | |
| 256 | + $det_subst = $obj_subst->detalhe(); | |
| 252 | 257 | |
| 253 | - $this->campoTextoInv("hora_inicial_{$key}_", '', $alocacao['hora_inicial'], | |
| 254 | - 5, 5, FALSE, FALSE, TRUE, '', '', '', '', 'ds_hora_inicial_'); | |
| 258 | + if ($this->status == 'N') { | |
| 259 | + $this->campoTextoInv("dia_semana_{$key}_", '', $nm_dia_semana, | |
| 260 | + 8, 8, FALSE, FALSE, TRUE, '', '', '', '', 'dia_semana'); | |
| 255 | 261 | |
| 256 | - $this->campoTextoInv("hora_final_{$key}_", '', $alocacao['hora_final'], | |
| 257 | - 5, 5, FALSE, FALSE, TRUE, '', '', '', '', 'ds_hora_final_'); | |
| 262 | + $this->campoTextoInv("hora_inicial_{$key}_", '', $alocacao['hora_inicial'], | |
| 263 | + 5, 5, FALSE, FALSE, TRUE, '', '', '', '', 'ds_hora_inicial_'); | |
| 258 | 264 | |
| 259 | - $this->campoTextoInv("ref_cod_escola_{$key}", '', $det_escola, | |
| 260 | - 30, 255, FALSE, FALSE, TRUE, '', '', '', '', 'ref_cod_escola_'); | |
| 265 | + $this->campoTextoInv("hora_final_{$key}_", '', $alocacao['hora_final'], | |
| 266 | + 5, 5, FALSE, FALSE, TRUE, '', '', '', '', 'ds_hora_final_'); | |
| 261 | 267 | |
| 262 | - $this->campoTextoInv("ref_cod_servidor_substituto_{$key}_", | |
| 263 | - '', $det_subst['nome'], 30, 255, FALSE, FALSE, FALSE, '', | |
| 264 | - "<span name=\"ref_cod_servidor_substituto\" id=\"ref_cod_servidor_substituicao_{$key}\"><img border='0' onclick=\"pesquisa_valores_popless('educar_pesquisa_servidor_lst.php?campo1=ref_cod_servidor_substituto[{$key}]&campo2=ref_cod_servidor_substituto_{$key}_&ref_cod_instituicao={$this->ref_cod_instituicao}&dia_semana={$alocacao["dia_semana"]}&hora_inicial={$alocacao["hora_inicial"]}&hora_final={$alocacao["hora_final"]}&ref_cod_servidor={$this->ref_cod_servidor}&professor=1&ref_cod_escola={$alocacao['ref_cod_escola']}&horario=S', 'nome')\" src=\"imagens/lupa.png\" ></span>", | |
| 265 | - '', '', 'ref_cod_servidor_substituto'); | |
| 266 | - } | |
| 268 | + $this->campoTextoInv("ref_cod_escola_{$key}", '', $det_escola, | |
| 269 | + 30, 255, FALSE, FALSE, TRUE, '', '', '', '', 'ref_cod_escola_'); | |
| 267 | 270 | |
| 268 | - $this->campoOculto("dia_semana_{$key}", $alocacao['dia_semana']); | |
| 269 | - $this->campoOculto("hora_inicial_{$key}", $alocacao['hora_inicial']); | |
| 270 | - $this->campoOculto("hora_final_{$key}", $alocacao['hora_final']); | |
| 271 | - $this->campoOculto("ref_cod_escola_{$key}", $alocacao['ref_cod_escola']); | |
| 272 | - $this->campoOculto("ref_cod_servidor_substituto[{$key}]", $alocacao['ref_cod_substituto']); | |
| 271 | + $this->campoTextoInv("ref_cod_servidor_substituto_{$key}_", | |
| 272 | + '', $det_subst['nome'], 30, 255, FALSE, FALSE, FALSE, '', | |
| 273 | + "<span name=\"ref_cod_servidor_substituto\" id=\"ref_cod_servidor_substituicao_{$key}\"><img border='0' onclick=\"pesquisa_valores_popless('educar_pesquisa_servidor_lst.php?campo1=ref_cod_servidor_substituto[{$key}]&campo2=ref_cod_servidor_substituto_{$key}_&ref_cod_instituicao={$this->ref_cod_instituicao}&dia_semana={$alocacao["dia_semana"]}&hora_inicial={$alocacao["hora_inicial"]}&hora_final={$alocacao["hora_final"]}&ref_cod_servidor={$this->ref_cod_servidor}&professor=1&ref_cod_escola={$alocacao['ref_cod_escola']}&horario=S&ref_cod_disciplina={$alocacao['ref_cod_disciplina']}', 'nome')\" src=\"imagens/lupa.png\" ></span>", | |
| 274 | + '', '', 'ref_cod_servidor_substituto'); | |
| 275 | + } | |
| 273 | 276 | |
| 274 | - } | |
| 277 | + $this->campoOculto("dia_semana_{$key}", $alocacao['dia_semana']); | |
| 278 | + $this->campoOculto("hora_inicial_{$key}", $alocacao['hora_inicial']); | |
| 279 | + $this->campoOculto("hora_final_{$key}", $alocacao['hora_final']); | |
| 280 | + $this->campoOculto("ref_cod_escola_{$key}", $alocacao['ref_cod_escola']); | |
| 281 | + $this->campoOculto("ref_cod_servidor_substituto[{$key}]", $alocacao['ref_cod_substituto']); | |
| 282 | + } | |
| 275 | 283 | |
| 276 | - $script .= "\n</script>"; | |
| 284 | + $script .= "\n</script>"; | |
| 277 | 285 | |
| 278 | - // Print do Javascript | |
| 279 | - print $script; | |
| 280 | - } | |
| 281 | - } | |
| 286 | + // Print do Javascript | |
| 287 | + print $script; | |
| 282 | 288 | } |
| 283 | 289 | } |
| 284 | - | |
| 285 | 290 | } |
| 291 | + | |
| 286 | 292 | } |
| 287 | 293 | } |
| 288 | 294 | |
| 289 | 295 | |
| 290 | 296 | |
| 297 | + /** | |
| 298 | + * Implementação do método clsCadastro::Novo() | |
| 299 | + * | |
| 300 | + * Recebe os valores com códigos de servidor e instituição atual, junto com | |
| 301 | + * a data. Casos de uso: | |
| 302 | + * - Servidor sem função de professor: apenas é marcado que o servidor está | |
| 303 | + * afastado | |
| 304 | + * - Servidor com função de professor: | |
| 305 | + * - Verifica-se quais professores estão aptos a substituir o servidor, | |
| 306 | + * baseado em critérios como horário de aula, alocação na escola, | |
| 307 | + * disciplinas que ministra. Esse passo é realizado no método | |
| 308 | + * {@see $this->Novo()}, ao possibilitar a escolha do substituto ao | |
| 309 | + * usuário | |
| 310 | + * | |
| 311 | + * @see clsPmieducarServidorAfastamento | |
| 312 | + * @see ieducar/intranet/include/clsCadastro#Novo() | |
| 313 | + * @return bool FALSE em caso de falha | |
| 314 | + */ | |
| 291 | 315 | public function Novo() { |
| 292 | 316 | session_start(); |
| 293 | 317 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| ... | ... | @@ -296,187 +320,233 @@ class indice extends clsCadastro { |
| 296 | 320 | $this->ref_cod_servidor = isset($_POST['ref_cod_servidor']) ? |
| 297 | 321 | $_POST['ref_cod_servidor'] : NULL; |
| 298 | 322 | |
| 323 | + $urlPermite = sprintf( | |
| 324 | + "educar_servidor_det.php?cod_servidor=%d&ref_cod_instituicao=%d", | |
| 325 | + $this->ref_cod_servidor, $this->ref_cod_instituicao | |
| 326 | + ); | |
| 327 | + | |
| 299 | 328 | $obj_permissoes = new clsPermissoes(); |
| 300 | - $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, | |
| 301 | - "educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); | |
| 329 | + $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, $urlPermite); | |
| 302 | 330 | |
| 303 | 331 | $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, NULL, |
| 304 | 332 | $this->ref_cod_motivo_afastamento, NULL, $this->pessoa_logada, NULL, NULL, |
| 305 | 333 | $this->data_retorno, $this->data_saida, 1, $this->ref_cod_instituicao); |
| 306 | 334 | |
| 307 | 335 | $cadastrou = $obj->cadastra(); |
| 336 | + | |
| 308 | 337 | if ($cadastrou) { |
| 338 | + if (is_array($_POST['ref_cod_servidor_substituto'])) { | |
| 339 | + /* | |
| 340 | + * Itera cada substituto e atualiza o quadro de horário com o código | |
| 341 | + * do servidor substituto, campos: | |
| 342 | + * - ref_cod_instituicao_substituto | |
| 343 | + * - ref_cod_servidor_substituto | |
| 344 | + */ | |
| 345 | + foreach ($_POST['ref_cod_servidor_substituto'] as $key => $valor) { | |
| 346 | + $ref_cod_servidor_substituto = $valor; | |
| 347 | + $ref_cod_escola = $_POST["ref_cod_escola_{$key}"]; | |
| 348 | + $dia_semana = $_POST["dia_semana_{$key}"]; | |
| 349 | + $hora_inicial = urldecode($_POST["hora_inicial_{$key}"]); | |
| 350 | + $hora_final = urldecode($_POST["hora_final_{$key}"]); | |
| 351 | + | |
| 352 | + if (is_numeric($ref_cod_servidor_substituto) && is_numeric($ref_cod_escola) && | |
| 353 | + is_numeric($dia_semana) && is_string($hora_inicial) && | |
| 354 | + is_string($hora_final)) { | |
| 355 | + | |
| 356 | + $obj_horarios = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, | |
| 357 | + $ref_cod_escola, NULL, NULL, NULL, $this->ref_cod_instituicao, | |
| 358 | + $ref_cod_servidor_substituto, $this->ref_cod_servidor, | |
| 359 | + $hora_inicial, $hora_final, NULL, NULL, 1, $dia_semana); | |
| 360 | + | |
| 361 | + $det_horarios = $obj_horarios->detalhe($ref_cod_escola); | |
| 362 | + | |
| 363 | + $obj_horario = new clsPmieducarQuadroHorarioHorarios( | |
| 364 | + $det_horarios['ref_cod_quadro_horario'], $det_horarios['ref_cod_serie'], | |
| 365 | + $det_horarios['ref_cod_escola'], $det_horarios['ref_cod_disciplina'], | |
| 366 | + $det_horarios['sequencial'], $det_horarios['ref_cod_instituicao_servidor'], | |
| 367 | + $det_horarios['ref_cod_instituicao_servidor'], $ref_cod_servidor_substituto, | |
| 368 | + $this->ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 369 | + | |
| 370 | + // Caso a atualização não tenha sucesso | |
| 371 | + if (!$obj_horario->edita()) { | |
| 372 | + $this->mensagem = "Cadastro não realizado.<br>"; | |
| 309 | 373 | |
| 310 | - if(is_array($_POST['ref_cod_servidor_substituto'])) | |
| 311 | - foreach ( $_POST['ref_cod_servidor_substituto'] as $key => $valor ) | |
| 312 | - { | |
| 313 | - //if ( substr( $campo, 0, 28 ) == 'ref_cod_servidor_substituto_' ) | |
| 314 | - // { | |
| 315 | - $ref_cod_servidor_substituto = $valor; | |
| 316 | - // } | |
| 317 | - //if ( substr( $campo, 0, 15 ) == 'ref_cod_escola_' ) | |
| 318 | - $ref_cod_escola = $_POST["ref_cod_escola_{$key}"]; | |
| 319 | - //if ( substr( $campo, 0, 11 ) == 'dia_semana_' ) | |
| 320 | - $dia_semana = $_POST["dia_semana_{$key}"]; | |
| 321 | - //if ( substr( $campo, 0, 13 ) == 'hora_inicial_' ) | |
| 322 | - $hora_inicial = urldecode( $_POST["hora_inicial_{$key}"] ); | |
| 323 | - // if ( substr( $campo, 0, 11 ) == 'hora_final_' ) | |
| 324 | - $hora_final = urldecode( $_POST["hora_final_{$key}"] ); | |
| 325 | - | |
| 326 | - if ( is_numeric( $ref_cod_servidor_substituto ) && is_numeric( $ref_cod_escola ) && is_numeric( $dia_semana ) && is_string( $hora_inicial ) && is_string( $hora_final ) ) | |
| 327 | - { | |
| 328 | - | |
| 329 | - //if ( substr( $campo, 0, 28 ) == 'ref_cod_servidor_substituto_' ) | |
| 330 | - //{die; | |
| 331 | - $obj_horarios = new clsPmieducarQuadroHorarioHorarios( null, null, $ref_cod_escola,null, null,null, $this->ref_cod_instituicao,$ref_cod_servidor_substituto, $this->ref_cod_servidor, $hora_inicial, $hora_final, null, null, 1, $dia_semana ); | |
| 332 | - $det_horarios = $obj_horarios->detalhe($ref_cod_escola); | |
| 333 | - //echo " = new clsPmieducarQuadroHorarioHorarios( {$det_horarios["ref_cod_quadro_horario"]}, {$det_horarios["ref_cod_serie"]}, {$det_horarios["ref_cod_escola"]}, {$det_horarios["ref_cod_disciplina"]}, {$det_horarios["ref_ref_cod_turma"]}, {$det_horarios["sequencial"]}, {$det_horarios["ref_cod_instituicao_servidor"]}, null, {$ref_cod_servidor_substituto}, null, null, null, null, null, null, null );";die; | |
| 334 | - $obj_horario = new clsPmieducarQuadroHorarioHorarios( $det_horarios["ref_cod_quadro_horario"], $det_horarios["ref_cod_serie"], $det_horarios["ref_cod_escola"], $det_horarios["ref_cod_disciplina"], $det_horarios["sequencial"], $det_horarios["ref_cod_instituicao_servidor"],$det_horarios["ref_cod_instituicao_servidor"], $ref_cod_servidor_substituto, $this->ref_cod_servidor, null, null, null, null, null, null ); | |
| 335 | - if( !$obj_horario->edita() ) | |
| 336 | - { | |
| 337 | - $this->mensagem = "Cadastro não realizado.<br>"; | |
| 338 | - return false; | |
| 339 | - } | |
| 340 | - //} | |
| 374 | + return FALSE; | |
| 375 | + } | |
| 341 | 376 | } |
| 342 | 377 | } |
| 378 | + | |
| 343 | 379 | $this->mensagem .= "Cadastro efetuado com sucesso.<br>"; |
| 344 | - header( "Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}" ); | |
| 380 | + header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); | |
| 345 | 381 | die(); |
| 346 | - return true; | |
| 347 | - } | |
| 348 | - else | |
| 349 | - { | |
| 350 | - $this->mensagem = "Cadastro não realizado.<br>"; | |
| 351 | - return false; | |
| 352 | - } | |
| 353 | - $this->mensagem = "Cadastro não realizado.<br>"; | |
| 354 | - echo "<!--\nErro ao cadastrar clsPmieducarServidorAfastamento\nvalores obrigatorios\nis_numeric( $this->ref_cod_servidor ) && is_numeric( $this->sequencial ) && is_numeric( $this->ref_ref_cod_instituicao ) && is_numeric( $this->ref_cod_motivo_afastamento ) && is_numeric( $this->ref_usuario_cad ) && is_string( $this->data_saida )\n-->"; | |
| 355 | - return false; | |
| 382 | + } | |
| 383 | + } | |
| 384 | + else { | |
| 385 | + $this->mensagem = "Cadastro não realizado.<br>"; | |
| 386 | + return FALSE; | |
| 387 | + } | |
| 388 | + | |
| 389 | + $this->mensagem = "Cadastro não realizado.<br>"; | |
| 390 | + return FALSE; | |
| 356 | 391 | } |
| 357 | 392 | |
| 358 | - function Editar() | |
| 359 | - { | |
| 360 | - @session_start(); | |
| 393 | + | |
| 394 | + | |
| 395 | + /** | |
| 396 | + * Implementação do método clsCadastro::Editar() | |
| 397 | + * | |
| 398 | + * Esse método é chamado quando o usuário "Retorna um servidor". Dessa forma, | |
| 399 | + * caso seja professor, precisa atualizar a sua alocação na tabela | |
| 400 | + * pmieducar.quadro_horario_horarios, apagando os valores dos campos | |
| 401 | + * ref_cod_instituicao_ e ref_cod_servidor_ -substituto | |
| 402 | + * | |
| 403 | + * @see ieducar/intranet/include/clsCadastro#Editar() | |
| 404 | + */ | |
| 405 | + public function Editar() { | |
| 406 | + session_start(); | |
| 361 | 407 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| 362 | - @session_write_close(); | |
| 408 | + session_write_close(); | |
| 409 | + | |
| 410 | + $urlPermite = sprintf( | |
| 411 | + 'educar_servidor_det.php?cod_servidor=%d&ref_cod_instituicao=%d', | |
| 412 | + $this->ref_cod_servidor, $this->ref_cod_instituicao); | |
| 363 | 413 | |
| 364 | 414 | $obj_permissoes = new clsPermissoes(); |
| 365 | - $obj_permissoes->permissao_cadastra( 635, $this->pessoa_logada, 7, "educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}" ); | |
| 415 | + $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, $urlPermite); | |
| 416 | + | |
| 417 | + $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, | |
| 418 | + $this->sequencial, $this->ref_cod_motivo_afastamento, $this->pessoa_logada, | |
| 419 | + NULL, NULL, NULL, $this->data_retorno, unserialize($this->data_saida), 1, | |
| 420 | + $this->ref_cod_instituicao ); | |
| 366 | 421 | |
| 367 | - $obj = new clsPmieducarServidorAfastamento( $this->ref_cod_servidor, $this->sequencial, $this->ref_cod_motivo_afastamento, $this->pessoa_logada, null, null, null, $this->data_retorno, unserialize( $this->data_saida ), 1, $this->ref_cod_instituicao ); | |
| 368 | 422 | $editou = $obj->edita(); |
| 369 | - if( $editou ) | |
| 370 | - { | |
| 371 | - if(is_array($_POST['ref_cod_servidor_substituto'])) | |
| 372 | - foreach ( $_POST['ref_cod_servidor_substituto'] as $key => $valor ) | |
| 373 | - { | |
| 374 | - $ref_cod_servidor_substituto = $valor; | |
| 375 | - | |
| 376 | - //if ( substr( $campo, 0, 15 ) == 'ref_cod_escola_' ) | |
| 377 | - $ref_cod_escola = $_POST["ref_cod_escola_{$key}"]; | |
| 378 | - //if ( substr( $campo, 0, 11 ) == 'dia_semana_' ) | |
| 379 | - $dia_semana = $_POST["dia_semana_{$key}"]; | |
| 380 | - //if ( substr( $campo, 0, 13 ) == 'hora_inicial_' ) | |
| 381 | - $hora_inicial = urldecode( $_POST["hora_inicial_{$key}"] ); | |
| 382 | - // if ( substr( $campo, 0, 11 ) == 'hora_final_' ) | |
| 383 | - $hora_final = urldecode( $_POST["hora_final_{$key}"] ); | |
| 384 | - | |
| 385 | - if ( is_numeric( $ref_cod_servidor_substituto ) && is_numeric( $ref_cod_escola ) && is_numeric( $dia_semana ) && is_string( $hora_inicial ) && is_string( $hora_final ) ) | |
| 386 | - { | |
| 387 | - //if ( substr( $campo, 0, 28 ) == 'ref_cod_servidor_substituto_' ) | |
| 388 | - //{ | |
| 389 | - $obj_horarios = new clsPmieducarQuadroHorarioHorarios( null, null, $ref_cod_escola,null, null,null, $this->ref_cod_instituicao,$ref_cod_servidor_substituto, $this->ref_cod_servidor, $hora_inicial, $hora_final, null, null, 1, $dia_semana ); | |
| 390 | - $det_horarios = $obj_horarios->detalhe($ref_cod_escola); | |
| 391 | - //if ( is_string( $this->data_retorno ) && $this->data_retorno != '' ) | |
| 392 | - //{ | |
| 393 | - //$obj_horario = new clsPmieducarQuadroHorarioHorarios( $det_horarios["ref_cod_quadro_horario"], $det_horarios["ref_ref_cod_serie"], $det_horarios["ref_ref_cod_escola"], $det_horarios["ref_ref_cod_disciplina"], $det_horarios["ref_ref_cod_turma"], $det_horarios["sequencial"], null, null, null, null, null, null, null, null, null, null ); | |
| 394 | - $obj_horario = new clsPmieducarQuadroHorarioHorarios( $det_horarios["ref_cod_quadro_horario"], $det_horarios["ref_cod_serie"], $det_horarios["ref_cod_escola"], $det_horarios["ref_cod_disciplina"], $det_horarios["sequencial"], null,$det_horarios["ref_cod_instituicao_servidor"], null, $this->ref_cod_servidor, null, null, null, null, null, null ); | |
| 395 | - //} | |
| 396 | - /* else | |
| 397 | - { | |
| 398 | - // $obj_horario = new clsPmieducarQuadroHorarioHorarios( $det_horarios["ref_cod_quadro_horario"], $det_horarios["ref_ref_cod_serie"], $det_horarios["ref_ref_cod_escola"], $det_horarios["ref_ref_cod_disciplina"], $det_horarios["ref_ref_cod_turma"], $det_horarios["sequencial"], $det_horarios["ref_cod_instituicao_servidor"], null, $ref_cod_servidor_substituto, null, null, null, null, null, null, null ); | |
| 399 | - $obj_horario = new clsPmieducarQuadroHorarioHorarios( $det_horarios["ref_cod_quadro_horario"], $det_horarios["ref_cod_serie"], $det_horarios["ref_cod_escola"], $det_horarios["ref_cod_disciplina"], $det_horarios["sequencial"], $det_horarios["ref_cod_instituicao_servidor"],$det_horarios["ref_cod_instituicao_servidor"], $ref_cod_servidor_substituto, $this->ref_cod_servidor, null, null, null, null, null, null ); | |
| 400 | - }*/ | |
| 401 | - if( !$obj_horario->edita() ) | |
| 402 | - { | |
| 423 | + if ($editou) { | |
| 424 | + if (is_array($_POST['ref_cod_servidor_substituto'])) { | |
| 425 | + foreach ($_POST['ref_cod_servidor_substituto'] as $key => $valor) { | |
| 426 | + $ref_cod_servidor_substituto = $valor; | |
| 427 | + $ref_cod_escola = $_POST["ref_cod_escola_{$key}"]; | |
| 428 | + $dia_semana = $_POST["dia_semana_{$key}"]; | |
| 429 | + $hora_inicial = urldecode($_POST["hora_inicial_{$key}"]); | |
| 430 | + $hora_final = urldecode($_POST["hora_final_{$key}"]); | |
| 431 | + | |
| 432 | + if (is_numeric($ref_cod_servidor_substituto) && is_numeric($ref_cod_escola) && | |
| 433 | + is_numeric($dia_semana) && is_string($hora_inicial) && | |
| 434 | + is_string($hora_final)) { | |
| 435 | + | |
| 436 | + $obj_horarios = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, | |
| 437 | + $ref_cod_escola, NULL, NULL, NULL, $this->ref_cod_instituicao, | |
| 438 | + $ref_cod_servidor_substituto, $this->ref_cod_servidor, $hora_inicial, | |
| 439 | + $hora_final, NULL, NULL, 1, $dia_semana); | |
| 440 | + | |
| 441 | + $det_horarios = $obj_horarios->detalhe($ref_cod_escola); | |
| 442 | + | |
| 443 | + // Os valores NULL apagam os campos ref_cod_instituicao_ e | |
| 444 | + // ref_cod_servidor_ -substituto da tabela pmieducar. | |
| 445 | + // quadro_horario_horarios | |
| 446 | + $obj_horario = new clsPmieducarQuadroHorarioHorarios( | |
| 447 | + $det_horarios["ref_cod_quadro_horario"], | |
| 448 | + $det_horarios["ref_cod_serie"], | |
| 449 | + $det_horarios["ref_cod_escola"], | |
| 450 | + $det_horarios["ref_cod_disciplina"], | |
| 451 | + $det_horarios["sequencial"], | |
| 452 | + NULL, | |
| 453 | + $det_horarios["ref_cod_instituicao_servidor"], | |
| 454 | + NULL, | |
| 455 | + $this->ref_cod_servidor); | |
| 456 | + | |
| 457 | + if (!$obj_horario->edita()) { | |
| 403 | 458 | $this->mensagem = "Cadastro não realizado.<br>"; |
| 404 | - return false; | |
| 459 | + return FALSE; | |
| 405 | 460 | } |
| 406 | - //} | |
| 461 | + | |
| 462 | + } | |
| 407 | 463 | } |
| 408 | 464 | } |
| 465 | + | |
| 409 | 466 | $this->mensagem .= "Edição efetuada com sucesso.<br>"; |
| 410 | - header( "Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}" ); | |
| 467 | + header("Location: educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}"); | |
| 411 | 468 | die(); |
| 412 | - return true; | |
| 413 | 469 | } |
| 414 | 470 | |
| 415 | 471 | $this->mensagem = "Edição não realizada.<br>"; |
| 416 | - echo "<!--\nErro ao editar clsPmieducarServidorAfastamento\nvalores obrigatorios\nif( is_numeric( $this->ref_cod_servidor ) && is_numeric( $this->sequencial ) && is_numeric( $this->ref_ref_cod_instituicao ) && is_numeric( $this->ref_usuario_exc ) )\n-->"; | |
| 417 | - return false; | |
| 472 | + return FALSE; | |
| 418 | 473 | } |
| 419 | 474 | |
| 420 | - function Excluir() | |
| 421 | - { | |
| 422 | - @session_start(); | |
| 475 | + | |
| 476 | + | |
| 477 | + /** | |
| 478 | + * Implementação do método clsCadastro::Excluir() | |
| 479 | + * @see ieducar/intranet/include/clsCadastro#Excluir() | |
| 480 | + */ | |
| 481 | + public function Excluir() { | |
| 482 | + session_start(); | |
| 423 | 483 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| 424 | - @session_write_close(); | |
| 484 | + session_write_close(); | |
| 485 | + | |
| 486 | + $urlPermite = sprintf( | |
| 487 | + "educar_servidor_det.php?cod_servidor=%d&ref_cod_instituicao=%d", | |
| 488 | + $this->ref_cod_servidor, $this->ref_cod_instituicao); | |
| 425 | 489 | |
| 426 | 490 | $obj_permissoes = new clsPermissoes(); |
| 427 | - $obj_permissoes->permissao_excluir( 635, $this->pessoa_logada, 7, "educar_servidor_det.php?cod_servidor={$this->ref_cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}" ); | |
| 491 | + $obj_permissoes->permissao_excluir(635, $this->pessoa_logada, 7, $urlPermite); | |
| 428 | 492 | |
| 493 | + $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, | |
| 494 | + $this->sequencial, $this->ref_ref_cod_instituicao, | |
| 495 | + $this->ref_cod_motivo_afastamento, $this->pessoa_logada, | |
| 496 | + $this->pessoa_logada, $this->data_cadastro, $this->data_exclusao, | |
| 497 | + $this->data_retorno, $this->data_saida, 0); | |
| 429 | 498 | |
| 430 | - $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, $this->sequencial, $this->ref_ref_cod_instituicao, $this->ref_cod_motivo_afastamento, $this->pessoa_logada, $this->pessoa_logada, $this->data_cadastro, $this->data_exclusao, $this->data_retorno, $this->data_saida, 0); | |
| 431 | 499 | $excluiu = $obj->excluir(); |
| 432 | - if( $excluiu ) | |
| 433 | - { | |
| 500 | + | |
| 501 | + if ($excluiu) { | |
| 434 | 502 | $this->mensagem .= "Exclusão efetuada com sucesso.<br>"; |
| 435 | - header( "Location: educar_servidor_afastamento_lst.php" ); | |
| 503 | + header("Location: educar_servidor_afastamento_lst.php"); | |
| 504 | + | |
| 436 | 505 | die(); |
| 437 | - return true; | |
| 438 | 506 | } |
| 439 | 507 | |
| 440 | 508 | $this->mensagem = "Exclusão não realizada.<br>"; |
| 441 | - echo "<!--\nErro ao excluir clsPmieducarServidorAfastamento\nvalores obrigatorios\nif( is_numeric( $this->ref_cod_servidor ) && is_numeric( $this->sequencial ) && is_numeric( $this->ref_ref_cod_instituicao ) && is_numeric( $this->ref_usuario_exc ) )\n-->"; | |
| 442 | - return false; | |
| 509 | + return FALSE; | |
| 443 | 510 | } |
| 444 | 511 | } |
| 445 | 512 | |
| 446 | -// cria uma extensao da classe base | |
| 513 | +// Instancia objeto de página | |
| 447 | 514 | $pagina = new clsIndexBase(); |
| 448 | -// cria o conteudo | |
| 515 | + | |
| 516 | +// Instancia objeto de conteúdo | |
| 449 | 517 | $miolo = new indice(); |
| 450 | -// adiciona o conteudo na clsBase | |
| 451 | -$pagina->addForm( $miolo ); | |
| 452 | -// gera o html | |
| 518 | + | |
| 519 | +// Atribui o conteúdo à página | |
| 520 | +$pagina->addForm($miolo); | |
| 521 | + | |
| 522 | +// Gera o código HTML | |
| 453 | 523 | $pagina->MakeAll(); |
| 454 | 524 | ?> |
| 455 | -<script> | |
| 456 | - if ( document.getElementById( 'btn_enviar' ) ) | |
| 457 | - { | |
| 458 | - document.getElementById( 'btn_enviar' ).onclick = function() { validaFormulario(); } | |
| 459 | - } | |
| 460 | - function validaFormulario() | |
| 461 | - { | |
| 462 | - var c = 0; | |
| 463 | - var loop = true; | |
| 464 | - do | |
| 465 | - { | |
| 466 | - if ( document.getElementById( 'ref_cod_servidor_substituto_' + c + '_' ) && document.getElementById( 'ref_cod_servidor_substituto_' + c ) ) | |
| 467 | - { | |
| 468 | - if ( document.getElementById( 'ref_cod_servidor_substituto_' + c + '_' ).value == '' && document.getElementById( 'ref_cod_servidor_substituto_' + c ).value == '' ) | |
| 469 | - { | |
| 470 | - alert( 'Você deve informar um substituto para cada horário.' ); | |
| 471 | - return; | |
| 472 | - } | |
| 473 | - } | |
| 474 | - else | |
| 475 | - { | |
| 476 | - loop = false; | |
| 477 | - } | |
| 478 | - c++; | |
| 479 | - } while ( loop ); | |
| 480 | - acao(); | |
| 481 | - } | |
| 525 | + | |
| 526 | +<script type="text/javascript"> | |
| 527 | +if (document.getElementById('btn_enviar')) { | |
| 528 | + document.getElementById('btn_enviar').onclick = function() { validaFormulario(); } | |
| 529 | +} | |
| 530 | + | |
| 531 | +function validaFormulario() { | |
| 532 | + var c = 0; | |
| 533 | + var loop = true; | |
| 534 | + | |
| 535 | + do { | |
| 536 | + if (document.getElementById('ref_cod_servidor_substituto_' + c + '_')) { | |
| 537 | + if (document.getElementById('ref_cod_servidor_substituto_' + c + '_').value == '') { | |
| 538 | + alert('Você deve informar um substituto para cada horário.'); | |
| 539 | + | |
| 540 | + return; | |
| 541 | + } | |
| 542 | + } | |
| 543 | + else { | |
| 544 | + loop = false; | |
| 545 | + } | |
| 546 | + | |
| 547 | + c++; | |
| 548 | + } while (loop); | |
| 549 | + | |
| 550 | + acao(); | |
| 551 | +} | |
| 482 | 552 | </script> |
| 483 | 553 | \ No newline at end of file | ... | ... |
ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php
| ... | ... | @@ -670,7 +670,7 @@ class clsPmieducarServidor { |
| 670 | 670 | AND qhh.ativo = '1' |
| 671 | 671 | AND qhh.dia_semana <> '$int_dia_semana' |
| 672 | 672 | AND qhh.ref_servidor = a.ref_cod_servidor |
| 673 | - GROUP BY qhh.ref_servidor ) ,'00:00') + '$str_hr_mat' + COALESCE( | |
| 673 | + GROUP BY qhh.ref_servidor) ,'00:00') + '$str_hr_mat' + COALESCE( | |
| 674 | 674 | (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) |
| 675 | 675 | FROM pmieducar.quadro_horario_horarios_aux qhha |
| 676 | 676 | WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' |
| ... | ... | @@ -678,7 +678,7 @@ class clsPmieducarServidor { |
| 678 | 678 | AND hora_inicial >= '08:00' |
| 679 | 679 | AND hora_inicial <= '12:00' |
| 680 | 680 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 681 | - AND identificador = $int_identificador | |
| 681 | + AND identificador = '$int_identificador' | |
| 682 | 682 | GROUP BY qhha.ref_servidor),'00:00'))"; |
| 683 | 683 | } |
| 684 | 684 | else { |
| ... | ... | @@ -716,7 +716,7 @@ class clsPmieducarServidor { |
| 716 | 716 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 717 | 717 | AND hora_inicial >= '12:00' |
| 718 | 718 | AND hora_inicial <= '18:00' |
| 719 | - AND identificador = $int_identificador | |
| 719 | + AND identificador = '$int_identificador' | |
| 720 | 720 | GROUP BY qhha.ref_servidor),'00:00') )"; |
| 721 | 721 | } |
| 722 | 722 | else { |
| ... | ... | @@ -752,7 +752,7 @@ class clsPmieducarServidor { |
| 752 | 752 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 753 | 753 | AND hora_inicial >= '18:00' |
| 754 | 754 | AND hora_inicial <= '23:00' |
| 755 | - AND identificador = $int_identificador | |
| 755 | + AND identificador = '$int_identificador' | |
| 756 | 756 | GROUP BY qhha.ref_servidor),'00:00') )"; |
| 757 | 757 | } |
| 758 | 758 | else { |
| ... | ... | @@ -788,14 +788,26 @@ class clsPmieducarServidor { |
| 788 | 788 | if ($det_curso['falta_ch_globalizada']) { |
| 789 | 789 | // Busca professores independentemente da disciplina, somente verifica |
| 790 | 790 | // se é professor e se ministra a disciplina para o curso |
| 791 | - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_curso_ministra scm WHERE scm.ref_cod_curso = $int_ref_cod_curso AND scm.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = scm.ref_cod_servidor)"; | |
| 791 | + $filtros .= " | |
| 792 | + {$whereAnd} EXISTS | |
| 793 | + (SELECT 1 | |
| 794 | + FROM pmieducar.servidor_curso_ministra scm | |
| 795 | + WHERE scm.ref_cod_curso = $int_ref_cod_curso AND | |
| 796 | + scm.ref_ref_cod_instituicao = s.ref_cod_instituicao AND | |
| 797 | + s.cod_servidor = scm.ref_cod_servidor)"; | |
| 792 | 798 | $whereAnd = " AND "; |
| 793 | 799 | } |
| 794 | 800 | else { |
| 795 | 801 | // Verifica se o professor está habilitado para ministrar a disciplina |
| 796 | - if(is_numeric($int_ref_cod_disciplina)) { | |
| 797 | - $filtros .= "{$whereAnd} EXISTS ( SELECT 1 FROM pmieducar.servidor_disciplina sd WHERE sd.ref_cod_disciplina = $int_ref_cod_disciplina AND sd.ref_ref_cod_instituicao = s.ref_cod_instituicao AND s.cod_servidor = sd.ref_cod_servidor)"; | |
| 798 | - $whereAnd = " AND "; | |
| 802 | + if (is_numeric($int_ref_cod_disciplina)) { | |
| 803 | + $filtros .= " | |
| 804 | + {$whereAnd} EXISTS | |
| 805 | + (SELECT 1 | |
| 806 | + FROM pmieducar.servidor_disciplina sd | |
| 807 | + WHERE sd.ref_cod_disciplina = $int_ref_cod_disciplina AND | |
| 808 | + sd.ref_ref_cod_instituicao = s.ref_cod_instituicao AND | |
| 809 | + s.cod_servidor = sd.ref_cod_servidor)"; | |
| 810 | + $whereAnd = " AND "; | |
| 799 | 811 | } |
| 800 | 812 | } |
| 801 | 813 | ... | ... |
ieducar/tests/functional/ServidorAfastarWebTest.class.php
| ... | ... | @@ -21,6 +21,9 @@ |
| 21 | 21 | * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. |
| 22 | 22 | */ |
| 23 | 23 | |
| 24 | +require_once realpath(dirname(__FILE__) . '/../') . '/FunctionalBaseTest.class.php'; | |
| 25 | + | |
| 26 | + | |
| 24 | 27 | /** |
| 25 | 28 | * ServidorAfastarWebTest class. |
| 26 | 29 | * |
| ... | ... | @@ -34,9 +37,6 @@ |
| 34 | 37 | * @since Classe disponível desde a versão 1.0.1 |
| 35 | 38 | * @version $Id$ |
| 36 | 39 | */ |
| 37 | - | |
| 38 | -require_once realpath(dirname(__FILE__) . '/../') . '/FunctionalBaseTest.class.php'; | |
| 39 | - | |
| 40 | 40 | class ServidorAfastarWebTest extends FunctionalBaseTest { |
| 41 | 41 | |
| 42 | 42 | private |
| ... | ... | @@ -144,6 +144,9 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { |
| 144 | 144 | public function testServidorAfastar() { |
| 145 | 145 | $this->doLogin(); |
| 146 | 146 | |
| 147 | + // ID da pessoa/servidor | |
| 148 | + $id = $this->slPessoaID; | |
| 149 | + | |
| 147 | 150 | $this->open('/intranet/educar_servidor_lst.php'); |
| 148 | 151 | $this->clickAndWait('link=' . $this->slPessoaNome); |
| 149 | 152 | $this->clickAndWait("//input[@value='Afastar Servidor']"); |
| ... | ... | @@ -154,9 +157,20 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { |
| 154 | 157 | $data = date('d/m/Y', (time() + (60 * 60 * 24 * 10))); |
| 155 | 158 | $this->type('data_saida', $data); |
| 156 | 159 | |
| 157 | - $this->clickAndWait('btn_enviar'); | |
| 158 | - $this->assertTrue($this->isTextPresent($this->slPessoaMatricula)); | |
| 160 | + // Verifica se a opção de busca de substituinte está presente, já que este | |
| 161 | + // servidor é professor e tem aulas alocadas no quadro de horários. | |
| 162 | + $searchButton = "//img[@onclick=\"pesquisa_valores_popless('educar_pesquisa_servidor_lst.php?campo1=ref_cod_servidor_substituto[0]&campo2=ref_cod_servidor_substituto_0_&ref_cod_instituicao=2&dia_semana=3&hora_inicial=09:00:00&hora_final=10:00:00&ref_cod_servidor=". $id ."&professor=1&ref_cod_escola=1&horario=S&ref_cod_disciplina=6', 'nome')\"]"; | |
| 163 | + $this->assertTrue($this->isElementPresent($searchButton)); | |
| 164 | + | |
| 165 | + // Clica no botão, seleciona o frame e verifica se existem resultados | |
| 166 | + // (válido apenas para o estado atual do banco de dados) | |
| 167 | + $this->click($searchButton); | |
| 168 | + sleep(10); | |
| 169 | + $this->selectFrame('temp_win_popless'); | |
| 170 | + $this->assertTrue(!$this->isTextPresent('Não há informação para ser apresentada')); | |
| 159 | 171 | |
| 172 | + // Retorna ao frame principal | |
| 173 | + $this->selectFrame('relative=up'); | |
| 160 | 174 | $this->doLogout(); |
| 161 | 175 | } |
| 162 | 176 | ... | ... |