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,7 +33,6 @@ require_once 'include/pmieducar/geral.inc.php'; | ||
| 33 | 33 | ||
| 34 | 34 | ||
| 35 | class clsIndexBase extends clsBase { | 35 | class clsIndexBase extends clsBase { |
| 36 | - | ||
| 37 | public function Formular() { | 36 | public function Formular() { |
| 38 | $this->SetTitulo($this->_instituicao . ' i-Educar - Servidor Afastamento'); | 37 | $this->SetTitulo($this->_instituicao . ' i-Educar - Servidor Afastamento'); |
| 39 | $this->processoAp = '635'; | 38 | $this->processoAp = '635'; |
| @@ -46,11 +45,13 @@ class indice extends clsCadastro { | @@ -46,11 +45,13 @@ class indice extends clsCadastro { | ||
| 46 | 45 | ||
| 47 | /** | 46 | /** |
| 48 | * Referência a usuário da sessão | 47 | * Referência a usuário da sessão |
| 49 | - * | ||
| 50 | * @var int | 48 | * @var int |
| 51 | */ | 49 | */ |
| 52 | public $pessoa_logada = NULL; | 50 | public $pessoa_logada = NULL; |
| 53 | 51 | ||
| 52 | + /** | ||
| 53 | + * Atributos de mapeamento dos campos de banco de dados | ||
| 54 | + */ | ||
| 54 | public | 55 | public |
| 55 | $ref_cod_servidor = NULL, | 56 | $ref_cod_servidor = NULL, |
| 56 | $sequencial = NULL, | 57 | $sequencial = NULL, |
| @@ -68,9 +69,8 @@ class indice extends clsCadastro { | @@ -68,9 +69,8 @@ class indice extends clsCadastro { | ||
| 68 | $parametros = NULL; | 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 | public $dias_da_semana = array( | 75 | public $dias_da_semana = array( |
| 76 | '' => 'Selecione', | 76 | '' => 'Selecione', |
| @@ -85,6 +85,10 @@ class indice extends clsCadastro { | @@ -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 | public function Inicializar() { | 92 | public function Inicializar() { |
| 89 | session_start(); | 93 | session_start(); |
| 90 | $this->pessoa_logada = $_SESSION['id_pessoa']; | 94 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| @@ -113,8 +117,7 @@ class indice extends clsCadastro { | @@ -113,8 +117,7 @@ class indice extends clsCadastro { | ||
| 113 | $registro = $obj->detalhe(); | 117 | $registro = $obj->detalhe(); |
| 114 | 118 | ||
| 115 | if ($registro) { | 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 | foreach ($registro as $campo => $val) { | 121 | foreach ($registro as $campo => $val) { |
| 119 | $this->$campo = $val; | 122 | $this->$campo = $val; |
| 120 | } | 123 | } |
| @@ -143,6 +146,10 @@ class indice extends clsCadastro { | @@ -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 | public function Gerar() { | 153 | public function Gerar() { |
| 147 | $this->campoOculto('ref_cod_servidor', $this->ref_cod_servidor); | 154 | $this->campoOculto('ref_cod_servidor', $this->ref_cod_servidor); |
| 148 | $this->campoOculto('sequencial', $this->sequencial); | 155 | $this->campoOculto('sequencial', $this->sequencial); |
| @@ -153,13 +160,13 @@ class indice extends clsCadastro { | @@ -153,13 +160,13 @@ class indice extends clsCadastro { | ||
| 153 | $objTemp = new clsPmieducarMotivoAfastamento(); | 160 | $objTemp = new clsPmieducarMotivoAfastamento(); |
| 154 | $lista = $objTemp->lista(); | 161 | $lista = $objTemp->lista(); |
| 155 | 162 | ||
| 156 | - if (is_array($lista) && count($lista)) { | 163 | + if (is_array($lista) && count($lista) > 0) { |
| 157 | foreach ($lista as $registro) { | 164 | foreach ($lista as $registro) { |
| 158 | $opcoes[$registro['cod_motivo_afastamento']] = $registro['nm_motivo']; | 165 | $opcoes[$registro['cod_motivo_afastamento']] = $registro['nm_motivo']; |
| 159 | } | 166 | } |
| 160 | } | 167 | } |
| 161 | else { | 168 | else { |
| 162 | - $opcoes = array('' => 'Erro na geracao'); | 169 | + $opcoes = array('' => 'Nenhum motivo de afastamento cadastrado'); |
| 163 | } | 170 | } |
| 164 | 171 | ||
| 165 | if ($this->status == 'N') { | 172 | if ($this->status == 'N') { |
| @@ -171,123 +178,140 @@ class indice extends clsCadastro { | @@ -171,123 +178,140 @@ class indice extends clsCadastro { | ||
| 171 | $opcoes, $this->ref_cod_motivo_afastamento, '', FALSE, '', '', TRUE); | 178 | $opcoes, $this->ref_cod_motivo_afastamento, '', FALSE, '', '', TRUE); |
| 172 | } | 179 | } |
| 173 | 180 | ||
| 174 | - // data | 181 | + // Datas para registro |
| 182 | + // Se novo registro | ||
| 175 | if ($this->status == 'N') { | 183 | if ($this->status == 'N') { |
| 176 | $this->campoData('data_saida', 'Data de Afastamento', $this->data_saida, TRUE); | 184 | $this->campoData('data_saida', 'Data de Afastamento', $this->data_saida, TRUE); |
| 177 | } | 185 | } |
| 186 | + // Se edição, mostra a data de afastamento | ||
| 178 | elseif ($this->status == 'E') { | 187 | elseif ($this->status == 'E') { |
| 179 | $this->campoRotulo('data_saida', 'Data de Afastamento', $this->data_saida); | 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 | if ($this->status == 'E') { | 192 | if ($this->status == 'E') { |
| 183 | $this->campoData('data_retorno', 'Data de Retorno', $this->data_retorno, FALSE); | 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 | public function Novo() { | 315 | public function Novo() { |
| 292 | session_start(); | 316 | session_start(); |
| 293 | $this->pessoa_logada = $_SESSION['id_pessoa']; | 317 | $this->pessoa_logada = $_SESSION['id_pessoa']; |
| @@ -296,187 +320,233 @@ class indice extends clsCadastro { | @@ -296,187 +320,233 @@ class indice extends clsCadastro { | ||
| 296 | $this->ref_cod_servidor = isset($_POST['ref_cod_servidor']) ? | 320 | $this->ref_cod_servidor = isset($_POST['ref_cod_servidor']) ? |
| 297 | $_POST['ref_cod_servidor'] : NULL; | 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 | $obj_permissoes = new clsPermissoes(); | 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 | $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, NULL, | 331 | $obj = new clsPmieducarServidorAfastamento($this->ref_cod_servidor, NULL, |
| 304 | $this->ref_cod_motivo_afastamento, NULL, $this->pessoa_logada, NULL, NULL, | 332 | $this->ref_cod_motivo_afastamento, NULL, $this->pessoa_logada, NULL, NULL, |
| 305 | $this->data_retorno, $this->data_saida, 1, $this->ref_cod_instituicao); | 333 | $this->data_retorno, $this->data_saida, 1, $this->ref_cod_instituicao); |
| 306 | 334 | ||
| 307 | $cadastrou = $obj->cadastra(); | 335 | $cadastrou = $obj->cadastra(); |
| 336 | + | ||
| 308 | if ($cadastrou) { | 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 | $this->mensagem .= "Cadastro efetuado com sucesso.<br>"; | 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 | die(); | 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 | $this->pessoa_logada = $_SESSION['id_pessoa']; | 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 | $obj_permissoes = new clsPermissoes(); | 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 | $editou = $obj->edita(); | 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 | $this->mensagem = "Cadastro não realizado.<br>"; | 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 | $this->mensagem .= "Edição efetuada com sucesso.<br>"; | 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 | die(); | 468 | die(); |
| 412 | - return true; | ||
| 413 | } | 469 | } |
| 414 | 470 | ||
| 415 | $this->mensagem = "Edição não realizada.<br>"; | 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 | $this->pessoa_logada = $_SESSION['id_pessoa']; | 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 | $obj_permissoes = new clsPermissoes(); | 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 | $excluiu = $obj->excluir(); | 499 | $excluiu = $obj->excluir(); |
| 432 | - if( $excluiu ) | ||
| 433 | - { | 500 | + |
| 501 | + if ($excluiu) { | ||
| 434 | $this->mensagem .= "Exclusão efetuada com sucesso.<br>"; | 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 | die(); | 505 | die(); |
| 437 | - return true; | ||
| 438 | } | 506 | } |
| 439 | 507 | ||
| 440 | $this->mensagem = "Exclusão não realizada.<br>"; | 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 | $pagina = new clsIndexBase(); | 514 | $pagina = new clsIndexBase(); |
| 448 | -// cria o conteudo | 515 | + |
| 516 | +// Instancia objeto de conteúdo | ||
| 449 | $miolo = new indice(); | 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 | $pagina->MakeAll(); | 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 | </script> | 552 | </script> |
| 483 | \ No newline at end of file | 553 | \ No newline at end of file |
ieducar/intranet/include/pmieducar/clsPmieducarServidor.inc.php
| @@ -670,7 +670,7 @@ class clsPmieducarServidor { | @@ -670,7 +670,7 @@ class clsPmieducarServidor { | ||
| 670 | AND qhh.ativo = '1' | 670 | AND qhh.ativo = '1' |
| 671 | AND qhh.dia_semana <> '$int_dia_semana' | 671 | AND qhh.dia_semana <> '$int_dia_semana' |
| 672 | AND qhh.ref_servidor = a.ref_cod_servidor | 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 | (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) | 674 | (SELECT SUM( qhha.hora_final - qhha.hora_inicial ) |
| 675 | FROM pmieducar.quadro_horario_horarios_aux qhha | 675 | FROM pmieducar.quadro_horario_horarios_aux qhha |
| 676 | WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' | 676 | WHERE qhha.ref_cod_instituicao_servidor = '$int_ref_cod_instituicao' |
| @@ -678,7 +678,7 @@ class clsPmieducarServidor { | @@ -678,7 +678,7 @@ class clsPmieducarServidor { | ||
| 678 | AND hora_inicial >= '08:00' | 678 | AND hora_inicial >= '08:00' |
| 679 | AND hora_inicial <= '12:00' | 679 | AND hora_inicial <= '12:00' |
| 680 | AND qhha.ref_servidor = a.ref_cod_servidor | 680 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 681 | - AND identificador = $int_identificador | 681 | + AND identificador = '$int_identificador' |
| 682 | GROUP BY qhha.ref_servidor),'00:00'))"; | 682 | GROUP BY qhha.ref_servidor),'00:00'))"; |
| 683 | } | 683 | } |
| 684 | else { | 684 | else { |
| @@ -716,7 +716,7 @@ class clsPmieducarServidor { | @@ -716,7 +716,7 @@ class clsPmieducarServidor { | ||
| 716 | AND qhha.ref_servidor = a.ref_cod_servidor | 716 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 717 | AND hora_inicial >= '12:00' | 717 | AND hora_inicial >= '12:00' |
| 718 | AND hora_inicial <= '18:00' | 718 | AND hora_inicial <= '18:00' |
| 719 | - AND identificador = $int_identificador | 719 | + AND identificador = '$int_identificador' |
| 720 | GROUP BY qhha.ref_servidor),'00:00') )"; | 720 | GROUP BY qhha.ref_servidor),'00:00') )"; |
| 721 | } | 721 | } |
| 722 | else { | 722 | else { |
| @@ -752,7 +752,7 @@ class clsPmieducarServidor { | @@ -752,7 +752,7 @@ class clsPmieducarServidor { | ||
| 752 | AND qhha.ref_servidor = a.ref_cod_servidor | 752 | AND qhha.ref_servidor = a.ref_cod_servidor |
| 753 | AND hora_inicial >= '18:00' | 753 | AND hora_inicial >= '18:00' |
| 754 | AND hora_inicial <= '23:00' | 754 | AND hora_inicial <= '23:00' |
| 755 | - AND identificador = $int_identificador | 755 | + AND identificador = '$int_identificador' |
| 756 | GROUP BY qhha.ref_servidor),'00:00') )"; | 756 | GROUP BY qhha.ref_servidor),'00:00') )"; |
| 757 | } | 757 | } |
| 758 | else { | 758 | else { |
| @@ -788,14 +788,26 @@ class clsPmieducarServidor { | @@ -788,14 +788,26 @@ class clsPmieducarServidor { | ||
| 788 | if ($det_curso['falta_ch_globalizada']) { | 788 | if ($det_curso['falta_ch_globalizada']) { |
| 789 | // Busca professores independentemente da disciplina, somente verifica | 789 | // Busca professores independentemente da disciplina, somente verifica |
| 790 | // se é professor e se ministra a disciplina para o curso | 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 | $whereAnd = " AND "; | 798 | $whereAnd = " AND "; |
| 793 | } | 799 | } |
| 794 | else { | 800 | else { |
| 795 | // Verifica se o professor está habilitado para ministrar a disciplina | 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,6 +21,9 @@ | ||
| 21 | * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | 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 | * ServidorAfastarWebTest class. | 28 | * ServidorAfastarWebTest class. |
| 26 | * | 29 | * |
| @@ -34,9 +37,6 @@ | @@ -34,9 +37,6 @@ | ||
| 34 | * @since Classe disponível desde a versão 1.0.1 | 37 | * @since Classe disponível desde a versão 1.0.1 |
| 35 | * @version $Id$ | 38 | * @version $Id$ |
| 36 | */ | 39 | */ |
| 37 | - | ||
| 38 | -require_once realpath(dirname(__FILE__) . '/../') . '/FunctionalBaseTest.class.php'; | ||
| 39 | - | ||
| 40 | class ServidorAfastarWebTest extends FunctionalBaseTest { | 40 | class ServidorAfastarWebTest extends FunctionalBaseTest { |
| 41 | 41 | ||
| 42 | private | 42 | private |
| @@ -144,6 +144,9 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { | @@ -144,6 +144,9 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { | ||
| 144 | public function testServidorAfastar() { | 144 | public function testServidorAfastar() { |
| 145 | $this->doLogin(); | 145 | $this->doLogin(); |
| 146 | 146 | ||
| 147 | + // ID da pessoa/servidor | ||
| 148 | + $id = $this->slPessoaID; | ||
| 149 | + | ||
| 147 | $this->open('/intranet/educar_servidor_lst.php'); | 150 | $this->open('/intranet/educar_servidor_lst.php'); |
| 148 | $this->clickAndWait('link=' . $this->slPessoaNome); | 151 | $this->clickAndWait('link=' . $this->slPessoaNome); |
| 149 | $this->clickAndWait("//input[@value='Afastar Servidor']"); | 152 | $this->clickAndWait("//input[@value='Afastar Servidor']"); |
| @@ -154,9 +157,20 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { | @@ -154,9 +157,20 @@ class ServidorAfastarWebTest extends FunctionalBaseTest { | ||
| 154 | $data = date('d/m/Y', (time() + (60 * 60 * 24 * 10))); | 157 | $data = date('d/m/Y', (time() + (60 * 60 * 24 * 10))); |
| 155 | $this->type('data_saida', $data); | 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 | $this->doLogout(); | 174 | $this->doLogout(); |
| 161 | } | 175 | } |
| 162 | 176 |