public static function getInstance()
 {
     if (self::$objInstance == null) {
         self::$objInstance = new RepoLinhaPrevio();
     }
     return self::$objInstance;
 }
 function alterarStatusConclusao($arrFiltro)
 {
     /*CRIA UMA LINHA EM LINHA_LIVRO_AUXILIAR E REPLICA OS DADOS DESSE 
      * PREVIO E PEGA O ID DELA GERADO E PASSA PRA 
      * $arrStrDados["liv_linha_auxiliar_id"]         
      */
     $arrCon["LPR_ID"] = $arrFiltro["LPR_ID"];
     $arrObjPrevio = $this->consultar($arrCon);
     if ($arrObjPrevio != "") {
         $linhaPrevio = new LinhaPrevio();
         $linhaPrevio = $arrObjPrevio["objects"][0];
         //$arrDadosLinhaAuxiliar["FAU_ID"] = "";//manda assim pra criar a linha automatico.
         $arrDadosLinhaAuxiliar["FAU_ID"] = $arrFiltro["FAU_ID"];
         //manda assim pra criar a linha automatico.
         $arrDadosLinhaAuxiliar["TIL_ID"] = $arrFiltro["TIL_ID"];
         $arrDadosLinhaAuxiliar["USU_UsuarioCadastroID"] = $_SESSION["USUARIO_ID"];
         $arrDadosLinhaAuxiliar["LAU_Descricao"] = $linhaPrevio->getDescricao();
         $arrDadosLinhaAuxiliar["LAU_Guia"] = $linhaPrevio->getGuia();
         $arrDadosLinhaAuxiliar["LAU_ProtocoloRecepcao"] = $linhaPrevio->getProtocoloRecepcao();
         $arrDadosLinhaAuxiliar["LAU_Quantidade"] = $linhaPrevio->getQuantidade();
         $arrDadosLinhaAuxiliar["LAU_Cpf"] = $linhaPrevio->getCpf();
         $arrDadosLinhaAuxiliar["LAU_Data"] = DataHelper::getInstance()->converterDataBancoParaDataUsuario($linhaPrevio->getData());
         $arrDadosLinhaAuxiliar["LAU_Valor"] = NumeroHelper::getInstance()->formatarMoeda($linhaPrevio->getValor());
         $arrDadosLinhaAuxiliar["LAU_DataHoraCadastro"] = date("Y-m-d H:i:s");
         if (NegLinhaAuxiliar::getInstance()->salvar($arrDadosLinhaAuxiliar)) {
             return RepoLinhaPrevio::getInstance()->alterarStatusConclusao($linhaPrevio);
         } else {
             throw new Exception("Erro ao criar a linha auxiliar, contate o administrador.");
         }
     } else {
         throw new Exception("Linha previo não encontrada, contate o administrador. ID_CONSULTA: " . $arrFiltro["LPR_ID"]);
     }
 }
 public function getIdLivroCadastrar()
 {
     $arrObjParametro = NegParametro::getInstance()->consultar(null);
     $arrObjParametro = $arrObjParametro["objects"];
     $parametro = new Parametro();
     $parametro = $arrObjParametro[0];
     $intQuantidadeFolhasLivro = (int) $parametro->getTotFolhaLivro();
     $intQuantidadeLinhasFolha = (int) $parametro->getTotLinhaFolha();
     //verificar se existe livro cadastrado, se não tiver cria um novo, se ja tiver segue a regra
     $arrRetornoLivro = RepoLivroPrevio::getInstance()->consultar(null);
     if ($arrRetornoLivro == "") {
         $objLivroAdd = new LivroPrevio();
         $objLivroAdd->setNumero("1");
         $arrConsultaUsuario["USU_ID"] = $_SESSION["USUARIO_ID"];
         $arrObjUsu = NegUsuario::getInstance()->consultar($arrConsultaUsuario);
         $arrObjUsu = $arrObjUsu["objects"];
         $objLivroAdd->setUsuarioCadastro($arrObjUsu[0]);
         $objLivroAdd->setDataHoraCadastro(date("Y-m-d H:i:s"));
         RepoLivroPrevio::getInstance()->salvar($objLivroAdd);
         return db::getInstance()->getLastId();
     } else {
         //se existir um livro ou mais, pegar o primeiro item do retorno, pois será  o ultimo livro cadastrado
         //echo 'se existir um livro ou mais, pegar o primeiro item do retorno, pois será  o ultimo livro cadastrado';
         $arrStrFiltrosFolha["LIP_ID"] = $arrRetornoLivro[0]["LIP_ID"];
         $arrTotalFolhas = RepoFolhaPrevio::getInstance()->consultar($arrStrFiltrosFolha);
         if ($arrTotalFolhas != "") {
             //tem folhas cadastradas
             //verifica se a quantidade de linhas pra folha foi atingida
             //se não for ja retorna o id do livro se não continua os testes
             $consultaLinha["FPR_ID"] = $arrTotalFolhas[0]["FPR_ID"];
             $arrTotLinha = RepoLinhaPrevio::getInstance()->consultar($consultaLinha);
             if (count($arrTotLinha) == $intQuantidadeLinhasFolha) {
                 //se o total de linhas para folha ja foi atingido
                 //testa a quantidade de folhas da pagina
                 //conta a quantidade se for igual ao que é permitido cadastra um novo livro
                 if (count($arrTotalFolhas) == $intQuantidadeFolhasLivro) {
                     //se a quantidade de folhas encontradas for igual a quantidade de folhas permitidas
                     // cria um novo livro
                     $objLivroAdd = new LivroPrevio();
                     $objLivroAdd->setNumero($arrRetornoLivro[0]["LIP_NumeroLivro"] + 1);
                     $arrConsultaUsuario["USU_ID"] = $_SESSION["USUARIO_ID"];
                     $arrObjUsu = NegUsuario::getInstance()->consultar($arrConsultaUsuario);
                     $arrObjUsu = $arrObjUsu["objects"];
                     $objLivroAdd->setUsuarioCadastro($arrObjUsu[0]);
                     $objLivroAdd->setDataHoraCadastro(date("Y-m-d H:i:s"));
                     RepoLivroPrevio::getInstance()->salvar($objLivroAdd);
                     //retorna o novo id gerado..
                     return db::getInstance()->getLastId();
                 } else {
                     //se não retorna o id do livro
                     return $arrRetornoLivro[0]["LIP_ID"];
                 }
             } else {
                 //se não for atingida a quantidae de linhas ja retorna o id do livro
                 return $arrRetornoLivro[0]["LIP_ID"];
             }
         } else {
             //não tem folha então pode retorna o id
             return $arrRetornoLivro[0]["LIP_ID"];
         }
     }
     /*
             
                 //verifica se tem livro no ano atual        
                 $arrStrFiltrosLivro["ANO"] = date("Y");
                 $arrRetornoLivro =  RepoLivroPrevio::getInstance()->consultar($arrStrFiltrosLivro);
                 
                 
                 // se não tiver o livro cadastra e retorna o id gerado
                 if($arrRetornoLivro == NULL){
                     //echo 'se não tiver o livro cadastra e retorna o id gerado';
                     
                     
                     $objLivroAdd = new LivroPrevio();
                     $objLivroAdd->setNumero("1");
                     
                     $arrConsultaUsuario["USU_ID"] = $_SESSION["USUARIO_ID"];
                     $arrObjUsu = NegUsuario::getInstance()->consultar($arrConsultaUsuario);
                     $arrObjUsu = $arrObjUsu["objects"];
                     
                     $objLivroAdd->setUsuarioCadastro($arrObjUsu[0]);
                     $objLivroAdd->setDataHoraCadastro(date("Y-m-d H:i:s"));
                     
                     RepoLivroPrevio::getInstance()->salvar($objLivroAdd);
                     
                     return db::getInstance()->getLastId();
                 }else{                
                     
                 }*/
 }
 /**
  * Metodo buscarIdFolhaCadastrarLinha()
  * @access public
  * @return um array com id do livro e da folha para cadastrar a linha
  */
 public function getIdFolhaCadastrar()
 {
     //pega o id do livro
     $arrStrFiltrosFolha["LIP_ID"] = NegLivroPrevio::getInstance()->getIdLivroCadastrar();
     $intFolhaId = 0;
     $arrObjParametro = NegParametro::getInstance()->consultar(null);
     $arrObjParametro = $arrObjParametro["objects"];
     $parametro = new Parametro();
     $parametro = $arrObjParametro[0];
     //pega a quantidae de linhas permitidas por folha
     $intQuantidadeLinhasFolha = (int) $parametro->getTotLinhaFolha();
     //com o id do livro pega a quantidade de folhas
     $arrFolha = RepoFolhaPrevio::getInstance()->consultar($arrStrFiltrosFolha);
     //die();
     if ($arrFolha == "") {
         //cadastra uma nov folha
         $objFolha = new FolhaPrevio();
         $objFolha->setNumero(1);
         $arrConsultaUsuario["USU_ID"] = $_SESSION["USUARIO_ID"];
         $arrObjUsu = NegUsuario::getInstance()->consultar($arrConsultaUsuario);
         $arrObjUsu = $arrObjUsu["objects"];
         $arrConsultaLivro["LIP_ID"] = $arrStrFiltrosFolha["LIP_ID"];
         $arrObjLivro = NegLivroPrevio::getInstance()->consultar($arrConsultaLivro);
         $arrObjLivro = $arrObjLivro["objects"];
         $objFolha->setUsuarioCadastro($arrObjUsu[0]);
         $objFolha->setLivroPrevio($arrObjLivro[0]);
         $objFolha->setData(date("d/m/Y"));
         $objFolha->setDataHoraCadastro(date("Y-m-d H:i:s"));
         RepoFolhaPrevio::getInstance()->salvar($objFolha);
         //retorna o novo id gerado..
         $intFolhaId = db::getInstance()->getLastId();
     } else {
         //se a quantidade de folha for maior ou igua ao permitido cadastra uma nova folha
         //ver aqui .. contar as linhas pra testar
         $arrConsultaLinha["FPR_ID"] = $arrFolha[0]["FPR_ID"];
         $arrLinha = RepoLinhaPrevio::getInstance()->consultar($arrConsultaLinha);
         if ($arrLinha != "") {
             //conta a quantidade de linha se for igual ao que é permitido cadastra uma novo folha
             if (count($arrLinha) == $intQuantidadeLinhasFolha) {
                 //cadastra uma novo folha
                 //incrementa o numero da folha
                 $numFolha = $arrFolha[0]["FPR_NumeroFolha"] + 1;
                 $objFolha = new FolhaPrevio();
                 $objFolha->setNumero($numFolha);
                 $arrConsultaUsuario["USU_ID"] = $_SESSION["USUARIO_ID"];
                 $arrObjUsu = NegUsuario::getInstance()->consultar($arrConsultaUsuario);
                 $arrObjUsu = $arrObjUsu["objects"];
                 $arrConsultaLivro["LIP_ID"] = $arrStrFiltrosFolha["LIP_ID"];
                 $arrObjLivro = NegLivroPrevio::getInstance()->consultar($arrConsultaLivro);
                 $arrObjLivro = $arrObjLivro["objects"];
                 $objFolha->setUsuarioCadastro($arrObjUsu[0]);
                 $objFolha->setLivroPrevio($arrObjLivro[0]);
                 $objFolha->setData(date("d/m/Y"));
                 $objFolha->setDataHoraCadastro(date("Y-m-d H:i:s"));
                 RepoFolhaPrevio::getInstance()->salvar($objFolha);
                 //retorna o novo id gerado..
                 $intFolhaId = db::getInstance()->getLastId();
             } else {
                 //ainda não tem a quantidade então retorna o id da folha
                 $intFolhaId = $arrFolha[0]["FPR_ID"];
             }
         } else {
             //não tem nenhuma linha em tõ retorna a folha
             $intFolhaId = $arrFolha[0]["FPR_ID"];
         }
         /*$arrRetorno["folhaId"] = $intFolhaId;
           $arrRetorno["livroId"] = $arrStrFiltrosFolha["LIA_ID"];*/
         return $intFolhaId;
     }
 }