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 <br>"; // ------------------- 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 "<script> alert('ERRO - Não foi possível encontrar o registro do empréstimo!'); </script>"; } } else { if ($this->existe_reserva == 2) { // die("2"); // echo "RESERVA <br>"; // ------------------- 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 "<script> alert('ERRO - Não foi possível encontrar a reserva!'); </script>"; } } } // echo "data_prevista_disponivel 1: ".$data_prevista_disponivel."<br>"; $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."<br>"; 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."<br>"; $data_prevista_disponivel = date("D Y-m-d", strtotime("{$data_prevista_disponivel} +" . $dias_emprestimo . " days")); // echo "data_prevista_disponivel 3: ".$data_prevista_disponivel."<br>"; //---------------------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 "<pre>"; print_r($biblioteca_dias_feriado)."<br>"; // 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."<br>"; // 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."<br>"; $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."<br>"; } // echo "data_prevista_disponivel 5: ".$data_prevista_disponivel."<br>";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.<br>"; header("Location: educar_reservas_lst.php"); die; return true; } $this->mensagem = "Cadastro não realizado.<br>"; echo "<!--\nErro ao cadastrar clsPmieducarReservas\nvalores obrigatorios\n is_numeric( {$this->pessoa_logada} ) && is_numeric( {$this->ref_cod_cliente} ) && is_numeric( {$this->ref_cod_exemplar} )\n-->"; return false; }
protected function postReserva() { if ($this->canPostReserva()) { $exemplar = $this->loadExemplar(); $dataPrevistaDisponivel = $this->getDataPrevistaDisponivelForExemplarAfterLastPendencia($exemplar); $reserva = new clsPmieducarReservas(null, null, $this->getSession()->id_pessoa, $this->getRequest()->ref_cod_cliente, null, $dataPrevistaDisponivel, null, $this->getRequest()->exemplar_id, 1); if ($reserva->cadastra()) { $this->messenger->append("Reserva realizada com sucesso.", 'success'); } else { $this->messenger->append("Aparentemente a reserva não foi cadastrada, por favor, tente novamente.", 'error'); } } $this->appendResponse($this->loadExemplar($this->getRequest()->exemplar_id, $reload = true)); }