SetTitulo( "{$this->_instituicao} i-Educar - Reservas" ); $this->processoAp = "609"; } } class indice extends clsCadastro { /** * Referencia pega da session para o idpes do usuario atual * * @var int */ var $pessoa_logada; var $cod_reserva; var $ref_usuario_libera; var $ref_usuario_cad; var $ref_cod_cliente; var $data_reserva; var $data_disponivel; var $data_retirada; var $ref_cod_exemplar; var $dias_espera; var $ref_cod_biblioteca; var $ref_cod_acervo; var $titulo_obra; var $passo; var $existe_reserva = 0; var $ref_cod_reserva; var $dias_da_semana = array( 'Sun' => 1, 'Mon' => 2, 'Tue' => 3, 'Wed' => 4, 'Thu' => 5, 'Fri' => 6, 'Sat' => 7 ); var $confirmado; function Inicializar() { $retorno = "Novo"; @session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; $this->ref_cod_cliente = $_SESSION['reservas']['cod_cliente']; $this->ref_cod_biblioteca = $_SESSION['reservas']['ref_cod_biblioteca']; @session_write_close(); $this->cod_reserva=$_GET["cod_reserva"]; $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra( 609, $this->pessoa_logada, 11, "educar_reservas_lst.php" ); if (!isset($this->ref_cod_cliente)) { header( "Location: educar_reservas_lst.php" ); die(); } if( is_numeric( $this->cod_reserva ) ) { $obj = new clsPmieducarReservas( $this->cod_reserva ); $registro = $obj->detalhe(); if( $registro ) { foreach( $registro AS $campo => $val ) // passa todos os valores obtidos no registro para atributos do objeto $this->$campo = $val; } } return $retorno; } function Gerar() { $this->campoOculto("ref_cod_biblioteca", $this->ref_cod_biblioteca); if ($this->ref_cod_acervo) { $obj_acervo = new clsPmieducarAcervo( $this->ref_cod_acervo ); $det_acervo = $obj_acervo->detalhe(); $this->titulo_obra = $det_acervo["titulo"]; } $this->cod_biblioteca = $this->ref_cod_biblioteca; $this->campoOculto("cod_biblioteca", $this->cod_biblioteca); $obj_biblioteca = new clsPmieducarBiblioteca($this->ref_cod_biblioteca); $det_biblioteca = $obj_biblioteca->detalhe(); $max_emprestimo = $det_biblioteca["max_emprestimo"]; $valor_maximo_multa = $det_biblioteca["valor_maximo_multa"]; $this->dias_espera = $det_biblioteca["dias_espera"]; $this->campoOculto("dias_espera", $this->dias_espera); $obj_cliente_suspenso = new clsPmieducarCliente(); $lst_cliente_suspenso = $obj_cliente_suspenso->lista( $this->ref_cod_cliente,null,null,null,null,null,null,null,null,null,1,null,"suspenso" ); if ( is_array($lst_cliente_suspenso) ) { echo ""; die(); } $obj_reservas = new clsPmieducarReservas(); $lst_reservas = $obj_reservas->lista(null,null,null,$this->ref_cod_cliente,null,null,null,null,null,null,null,1,$this->ref_cod_biblioteca); // verifica se o cliente excedeu a qntde de reservas permitidas pela biblioteca if (count($lst_reservas) >= $max_emprestimo) { echo ""; die(); } $obj_exemplar_emprestimo = new clsPmieducarExemplarEmprestimo(); $lst_cliente_divida = $obj_exemplar_emprestimo->clienteDividaTotal(null,$this->ref_cod_cliente); if( is_array( $lst_cliente_divida ) && count( $lst_cliente_divida ) ) {// calcula o valor total das multas do cliente em todas as bibliotecas foreach ($lst_cliente_divida as $divida) { $valor_total_multa = $divida["valor_multa"]; $valor_total_pago = $divida["valor_pago"]; } $valor_total_divida = $valor_total_multa - $valor_total_pago; } $lst_cliente_divida = $obj_exemplar_emprestimo->clienteDividaTotal(null,$this->ref_cod_cliente,null,$this->ref_cod_biblioteca); if( is_array( $lst_cliente_divida ) && count( $lst_cliente_divida ) ) {// calcula o valor das multas do cliente na biblioteca em que esta realizando o emprestimo foreach ($lst_cliente_divida as $divida) { $valor_multa = $divida["valor_multa"]; $valor_pago = $divida["valor_pago"]; } $valor_divida = $valor_multa - $valor_pago; } // verifica se o valor da divida ultrapassou o valor maximo permitido da multa pela biblioteca if ( ($valor_maximo_multa <= $valor_total_divida) && ($this->confirmado != true) ) { echo ""; $this->confirmado = true; $this->campoOculto( "confirmado", $this->confirmado ); } if ($this->titulo_obra) { $obj_exemplar = new clsPmieducarExemplar(); $lst_exemplar = $obj_exemplar->lista(null,null,null,$this->ref_cod_acervo,null,null,null,2,null,null,null,null,null,1,null,null,null,null,$this->ref_cod_biblioteca); // verifica se o exemplar pode ser emprestado if( is_array( $lst_exemplar ) && count( $lst_exemplar ) ) { $obj_reservas = new clsPmieducarReservas(); foreach ( $lst_exemplar AS $exemplar ) { $lst_reservas = $obj_reservas->lista(null,null,null,$this->ref_cod_cliente,null,null,null,null,null,null,$exemplar["cod_exemplar"],1); if( is_array( $lst_reservas ) && count( $lst_reservas ) ) { // Já existe uma reserva do exemplar feita pelo cliente $reservou = true; } } if (!$reservou) { // volta para o inicio da lista reset($lst_exemplar); $reservas = array(); foreach ( $lst_exemplar AS $exemplar ) { $obj_situacao = new clsPmieducarSituacao($exemplar["ref_cod_situacao"]); $det_situacao = $obj_situacao->detalhe(); $situacao_permite_emprestimo = $det_situacao["permite_emprestimo"]; $situacao_emprestada = $det_situacao["situacao_emprestada"]; $situacao_padrao = $det_situacao["situacao_padrao"]; // verifica se a situacao do exemplar permite emprestimo if ($situacao_permite_emprestimo == 2 && $situacao_emprestada == 0 && $situacao_padrao == 1) { unset($this->titulo_obra); unset($this->ref_cod_acervo); echo ""; }// verifica se a situacao do exemplar esta como 'emprestado' else if ($situacao_permite_emprestimo == 1 && $situacao_emprestada == 1 && $situacao_padrao == 0) { $lst_reservas = $obj_reservas->lista(null,null,null,null,null,null,null,null,null,null,$exemplar["cod_exemplar"],1); // verifica se existem reservas do exemplar if( is_array( $lst_reservas ) && count( $lst_reservas ) ) { $this->existe_reserva = 2; } else { // encontrado exemplar sem reservas $this->ref_cod_exemplar = $exemplar["cod_exemplar"]; break; } } else { unset($this->titulo_obra); unset($this->ref_cod_acervo); echo ""; } } } else { unset($this->titulo_obra); unset($this->ref_cod_acervo); echo ""; } } else { unset($this->titulo_obra); unset($this->ref_cod_acervo); echo ""; } } // foreign keys $obj_cliente = new clsPmieducarCliente($this->ref_cod_cliente); $det_cliente = $obj_cliente->detalhe(); $ref_idpes = $det_cliente["ref_idpes"]; $obj_pessoa = new clsPessoa_($ref_idpes); $det_pessoa = $obj_pessoa->detalhe(); $nm_pessoa = $det_pessoa["nome"]; $this->campoTextoInv("nm_pessoa", "Cliente", $nm_pessoa, 30, 255); // outros Filtros $this->campoTexto("titulo_obra","Obra", $this->titulo_obra, 30, 255, true, false, false, "", "","","",true ); $this->campoOculto("ref_cod_acervo", $this->ref_cod_acervo); // caso exemplar esteja emprestado, mas ainda nao exista reserva if ( isset($this->ref_cod_exemplar) ) { // die("emprestado, sem reserva"); $this->campoOculto("ref_cod_exemplar", $this->ref_cod_exemplar); $this->existe_reserva = 1; $this->campoOculto("existe_reserva", $this->existe_reserva); }// caso já exista(m) reserva(s) para o exemplar else if ($this->existe_reserva == 2) { // die("emprestado, com reserva"); $lst_reserva = $obj_reservas->getUltimasReservas($this->ref_cod_acervo, 1); if( is_array( $lst_reserva ) && count( $lst_reserva ) ) { $det_reserva = array_shift($lst_reserva); $this->ref_cod_exemplar = $det_reserva["ref_cod_exemplar"]; $this->data_disponivel = $det_reserva["data_prevista_disponivel"]; $this->data_disponivel = dataFromPgToBr($this->data_disponivel,"Y-m-d"); $this->campoOculto("data_disponivel", $this->data_disponivel); $this->campoOculto("ref_cod_exemplar", $this->ref_cod_exemplar); $this->campoOculto("existe_reserva", $this->existe_reserva); } } $this->campoOculto("passo",1); $this->url_cancelar = "educar_reservas_lst.php"; $this->nome_url_cancelar = "Cancelar"; } function Novo() { @session_start(); $this->pessoa_logada = $_SESSION['id_pessoa']; $this->ref_cod_cliente = $_SESSION['reservas']['cod_cliente']; @session_write_close(); if ($this->passo == 2) return true; $obj_permissoes = new clsPermissoes(); $obj_permissoes->permissao_cadastra( 609, $this->pessoa_logada, 11, "educar_reservas_lst.php" ); $obj_acervo = new clsPmieducarAcervo( $this->ref_cod_acervo ); $det_acervo = $obj_acervo->detalhe(); // tipo de exemplar $cod_exemplar_tipo = $det_acervo["ref_cod_exemplar_tipo"]; if ($this->existe_reserva == 1) { // die("1"); // echo "EMPRESTIMO
"; // ------------------- DADOS DO CLIENTE (EMPRESTIMO) ------------------ // $obj_exemplar_emprestimo = new clsPmieducarExemplarEmprestimo(); $lst_exemplar_emprestimo = $obj_exemplar_emprestimo->lista(null,null,null,null,$this->ref_cod_exemplar,null,null,null,null,null,false,$this->ref_cod_biblioteca); if( is_array( $lst_exemplar_emprestimo ) && count( $lst_exemplar_emprestimo ) ) { $det_exemplar_emprestimo = array_shift($lst_exemplar_emprestimo); $cod_cliente = $det_exemplar_emprestimo["ref_cod_cliente"]; // data do emprestimo $data_retirada = $det_exemplar_emprestimo["data_retirada"]; $data_prevista_disponivel = dataFromPgToBr($data_retirada, "Y-m-d"); } else { echo ""; } } else if ($this->existe_reserva == 2) { // die("2"); // echo "RESERVA
"; // ------------------- DADOS DO CLIENTE (RESERVA) ------------------ // $obj_reservas = new clsPmieducarReservas(); $lst_reservas = $obj_reservas->lista(null,null,null,null,null,null,$this->data_disponivel,$this->data_disponivel,null,null,$this->ref_cod_exemplar,1,$this->ref_cod_biblioteca); if( is_array( $lst_reservas ) && count( $lst_reservas ) ) { $det_reservas = array_shift($lst_reservas); $cod_cliente = $det_reservas["ref_cod_cliente"]; // data da reserva $data_prevista_disponivel = $this->data_disponivel; } else { echo ""; } } // echo "data_prevista_disponivel 1: ".$data_prevista_disponivel."
"; $obj_cliente_tipo_cliente = new clsPmieducarClienteTipoCliente(); $lst_cliente_tipo_cliente = $obj_cliente_tipo_cliente->lista(null,$cod_cliente,null,null,null,null,null,null,$this->ref_cod_biblioteca ); $det_cliente_tipo_cliente = array_shift($lst_cliente_tipo_cliente); // tipo do cliente $cod_cliente_tipo = $det_cliente_tipo_cliente["ref_cod_cliente_tipo"]; $obj_cliente_tipo_exemplar_tipo = new clsPmieducarClienteTipoExemplarTipo( $cod_cliente_tipo, $cod_exemplar_tipo ); $det_cliente_tipo_exemplar_tipo = $obj_cliente_tipo_exemplar_tipo->detalhe(); // qtde de dias disponiveis para emprestimo $dias_emprestimo = $det_cliente_tipo_exemplar_tipo["dias_emprestimo"]; // echo "dias_espera: ".$this->dias_espera."
"; if ($this->existe_reserva == 2) { // Dias que o cliente tem pra pegar o exemplar. Calculo feito levando em consideracao a pior situacao. $data_prevista_disponivel = date("D Y-m-d", strtotime("$data_prevista_disponivel +".$this->dias_espera." days")); } // echo "data_prevista_disponivel 2: ".$data_prevista_disponivel."
"; $data_prevista_disponivel = date("D Y-m-d", strtotime("$data_prevista_disponivel +".$dias_emprestimo." days")); // echo "data_prevista_disponivel 3: ".$data_prevista_disponivel."
"; //---------------------DIAS FUNCIONAMENTO----------------------// $obj_biblioteca_dia = new clsPmieducarBibliotecaDia(); $lst_biblioteca_dia = $obj_biblioteca_dia->lista($this->ref_cod_biblioteca); if( is_array( $lst_biblioteca_dia ) && count( $lst_biblioteca_dia ) ) { foreach ($lst_biblioteca_dia AS $dia_semana) { // dias de funcionamento da biblioteca $biblioteca_dias_semana[] = $dia_semana["dia"]; } } // salva somente os dias que n se repetem ( dias de n funcionamento) $biblioteca_dias_folga = array_diff($this->dias_da_semana, $biblioteca_dias_semana); // inverte as relacoes entre chaves e valores ( de $variavel["Sun"] => 1, para $variavel[1] => "Sun") $biblioteca_dias_folga = array_flip($biblioteca_dias_folga); //---------------------DIAS FERIADO----------------------// $obj_biblioteca_feriado = new clsPmieducarBibliotecaFeriados(); $lst_biblioteca_feriado = $obj_biblioteca_feriado->lista( null, $this->ref_cod_biblioteca ); if( is_array( $lst_biblioteca_feriado ) && count( $lst_biblioteca_feriado ) ) { foreach ($lst_biblioteca_feriado AS $dia_feriado) { // dias de feriado da biblioteca $biblioteca_dias_feriado[] = dataFromPgToBr($dia_feriado["data_feriado"], "D Y-m-d"); } } // echo "
"; print_r($biblioteca_dias_feriado)."
"; // Cliente tem o dia inteiro para entregar o exemplar. Exemplar somente disponivel para a proxima reserva no dia seguinte. $data_prevista_disponivel = date("D Y-m-d ",strtotime("$data_prevista_disponivel +1 day")); // devido a comparacao das datas, é necessario mudar o formato da data $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "D Y-m-d"); // echo "data_prevista_disponivel 4: ".$data_prevista_disponivel."
"; // verifica se a data cai em algum dia que a biblioteca n funciona while( in_array(substr($data_prevista_disponivel,0,3), $biblioteca_dias_folga) || in_array($data_prevista_disponivel, $biblioteca_dias_feriado) ) { // echo "data_prevista_disponivel ASDFG = ".$data_prevista_disponivel."
"; $data_prevista_disponivel = date("D Y-m-d ",strtotime("$data_prevista_disponivel +1 day")); $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "D Y-m-d"); // echo "data_prevista_disponivel ASDFG = ".$data_prevista_disponivel."
"; } // echo "data_prevista_disponivel 5: ".$data_prevista_disponivel."
";die; $data_prevista_disponivel = dataFromPgToBr($data_prevista_disponivel, "Y-m-d"); $obj = new clsPmieducarReservas( null, null, $this->pessoa_logada, $this->ref_cod_cliente, null, $data_prevista_disponivel, null, $this->ref_cod_exemplar, 1 ); $cadastrou = $obj->cadastra(); if( $cadastrou ) { $this->mensagem .= "Cadastro efetuado com sucesso.
"; header( "Location: educar_reservas_lst.php" ); die(); return true; } $this->mensagem = "Cadastro não realizado.
"; echo ""; return false; } } // cria uma extensao da classe base $pagina = new clsIndexBase(); // cria o conteudo $miolo = new indice(); // adiciona o conteudo na clsBase $pagina->addForm( $miolo ); // gera o html $pagina->MakeAll(); ?>