/**
  * Construtor.
  */
 function clsPmieducarServidorDisciplina($ref_cod_disciplina = NULL, $ref_ref_cod_instituicao = NULL, $ref_cod_servidor = NULL, $ref_cod_curso = NULL)
 {
     $db = new clsBanco();
     $this->_schema = 'pmieducar.';
     $this->_tabela = $this->_schema . 'servidor_disciplina';
     $this->_campos_lista = $this->_todos_campos = 'ref_cod_disciplina, ref_ref_cod_instituicao, ref_cod_servidor, ref_cod_curso';
     if (is_numeric($ref_cod_servidor) && is_numeric($ref_ref_cod_instituicao)) {
         $servidor = new clsPmieducarServidor($ref_cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, $ref_ref_cod_instituicao);
         if ($servidor->existe()) {
             $this->ref_cod_servidor = $ref_cod_servidor;
             $this->ref_ref_cod_instituicao = $ref_ref_cod_instituicao;
         }
     }
     if (is_numeric($ref_cod_disciplina)) {
         $componenteMapper = new ComponenteCurricular_Model_ComponenteDataMapper();
         try {
             $componenteMapper->find($ref_cod_disciplina);
             $this->ref_cod_disciplina = $ref_cod_disciplina;
         } catch (Exception $e) {
         }
     }
     if (is_numeric($ref_cod_curso)) {
         $curso = new clsPmieducarCurso($ref_cod_curso);
         if ($curso->existe()) {
             $this->ref_cod_curso = $ref_cod_curso;
         }
     }
 }
 /**
  * Substitui a alocação entre servidores no quadro de horários
  *
  * Substitui a alocação entre servidores, atualizando a tabela
  * pmieducar.servidor_quadro_horario_horarios. O servidor nesse caso é
  * de alguma função do tipo professor. Esse método não valida esse dado,
  * sendo de responsabilidade do código cliente
  *
  * @param   int   $int_ref_cod_servidor_substituto  Código do servidor que substituirá o atual
  * @return  bool  TRUE em caso de sucesso, FALSE caso contrário
  */
 public function substituir_servidor($int_ref_cod_servidor_substituto)
 {
     if (is_numeric($int_ref_cod_servidor_substituto) && is_numeric($this->ref_cod_instituicao_servidor)) {
         $servidor = new clsPmieducarServidor($int_ref_cod_servidor_substituto, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_cod_instituicao_servidor);
         if (!$servidor->existe()) {
             return FALSE;
         }
     }
     if (is_numeric($this->ref_servidor) && is_numeric($this->ref_cod_instituicao_servidor)) {
         $sql = "UPDATE %s SET ref_servidor='%d', data_exclusao = NOW() ";
         $sql .= "WHERE ref_servidor = '%d' AND ref_cod_instituicao_servidor = '%d'";
         $sql = sprintf($sql, $this->_tabela, $int_ref_cod_servidor_substituto, $this->ref_servidor, $this->ref_cod_instituicao_servidor);
         $db = new clsBanco();
         $db->Consulta($sql);
         return TRUE;
     }
     return FALSE;
 }
 function Editar()
 {
     $timesep = explode(':', $this->carga_horaria);
     $hour = $timesep[0] + (int) ($timesep[1] / 60);
     $min = abs((int) ($timesep[1] / 60) - $timesep[1] / 60) . '<br>';
     $this->carga_horaria = $hour + $min;
     $this->carga_horaria = $hour + $min;
     @session_start();
     $this->pessoa_logada = $_SESSION['id_pessoa'];
     @session_write_close();
     $obj_permissoes = new clsPermissoes();
     $obj_permissoes->permissao_cadastra(635, $this->pessoa_logada, 7, 'educar_servidor_lst.php');
     if ($this->ref_cod_instituicao == $this->ref_cod_instituicao_original) {
         $this->carga_horaria = str_replace(',', '.', $this->carga_horaria);
         $obj = new clsPmieducarServidor($this->cod_servidor, $this->ref_cod_deficiencia, $this->ref_idesco, $this->carga_horaria, NULL, NULL, 1, $this->ref_cod_instituicao);
         $editou = $obj->edita();
         if ($editou) {
             $this->cadastraFuncoes();
             include 'educar_limpa_sessao_curso_disciplina_servidor.php';
             $this->mensagem .= 'Edição efetuada com sucesso.<br>';
             header("Location: educar_servidor_det.php?cod_servidor={$this->cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}");
             die;
         }
     } else {
         $obj_quadro_horario = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, NULL, NULL, NULL, NULL, $this->cod_servidor, NULL, NULL, NULL, NULL, NULL, NULL, 1, $this->ref_cod_instituicao);
         if ($obj_quadro_horario->detalhe()) {
             $this->mensagem = "Edição não realizada. O servidor está vinculado a um quadro de horários.<br>";
             return FALSE;
         } else {
             $obj_quadro_horario = new clsPmieducarQuadroHorarioHorarios(NULL, NULL, NULL, NULL, NULL, NULL, NULL, $this->cod_servidor, NULL, NULL, NULL, NULL, NULL, 1, NULL, $this->ref_cod_instituicao);
             if ($obj_quadro_horario->detalhe()) {
                 $this->mensagem = "Edição não realizada. O servidor está vinculado a um quadro de horários.<br>";
                 return FALSE;
             } else {
                 $this->carga_horaria = str_replace(',', '.', $this->carga_horaria);
                 $obj = new clsPmieducarServidor($this->cod_servidor, $this->ref_cod_deficiencia, $this->ref_idesco, $this->carga_horaria, NULL, NULL, 0, $this->ref_cod_instituicao_original);
                 $editou = $obj->edita();
                 if ($editou) {
                     $obj = new clsPmieducarServidor($this->cod_servidor, $this->ref_cod_deficiencia, $this->ref_idesco, $this->carga_horaria, NULL, NULL, 1, $this->ref_cod_instituicao);
                     if ($obj->existe()) {
                         $cadastrou = $obj->edita();
                     } else {
                         $cadastrou = $obj->cadastra();
                     }
                     if ($cadastrou) {
                         $this->cadastraFuncoes();
                         include 'educar_limpa_sessao_curso_disciplina_servidor.php';
                         $this->mensagem .= "Edição efetuada com sucesso.<br>";
                         header("Location: educar_servidor_det.php?cod_servidor={$this->cod_servidor}&ref_cod_instituicao={$this->ref_cod_instituicao}");
                         die;
                     }
                 }
             }
         }
     }
     $this->mensagem = "Edição não realizada.<br>";
     return FALSE;
 }
 /**
  * Substitui a alocação entre servidores
  *
  * Substitui a alocação entre servidores, atualizando a tabela
  * pmieducar.servidor_alocacao. A única atualização na tabela ocorre no
  * identificador do servidor, o campo ref_cod_servidor. Para usar este
  * método, um objeto desta classe precisa estar instanciado com os atributos
  * do servidor a ser substituido.
  *
  * @param  int  $int_ref_cod_servidor_substituto  Código do servidor que substituirá o atual
  * @return bool TRUE em caso de sucesso, FALSE caso contrário
  */
 function substituir_servidor($int_ref_cod_servidor_substituto)
 {
     if (is_numeric($int_ref_cod_servidor_substituto) && is_numeric($this->ref_ref_cod_instituicao)) {
         $servidor = new clsPmieducarServidor($int_ref_cod_servidor_substituto, NULL, NULL, NULL, NULL, NULL, NULL, $this->ref_ref_cod_instituicao);
         if (!$servidor->existe()) {
             return FALSE;
         }
     }
     if (is_numeric($this->ref_cod_servidor) && is_numeric($this->ref_ref_cod_instituicao) && is_numeric($this->ref_cod_escola) && is_numeric($this->periodo) && is_string($this->carga_horaria)) {
         $sql = "UPDATE %s SET ref_cod_servidor='%d' WHERE ref_cod_servidor = '%d' ";
         $sql .= "AND ref_ref_cod_instituicao = '%d' AND ref_cod_escola = '%d' AND ";
         $sql .= "carga_horaria = '%s' AND periodo = '%d'";
         $sql = sprintf($sql, $this->_tabela, $int_ref_cod_servidor_substituto, $this->ref_cod_servidor, $this->ref_ref_cod_instituicao, $this->ref_cod_escola, $this->carga_horaria, $this->periodo);
         $db = new clsBanco();
         $db->Consulta($sql);
         return TRUE;
     }
     return FALSE;
 }