public function cadastrarPlanoDistribuicaoAction()
 {
     $linkFinal = '';
     if (isset($_POST['relatorofinal']) && $_POST['relatorofinal']) {
         $linkFinal = '-final';
     }
     //** Verifica se o usuário logado tem permissão de acesso **//
     $this->verificarPermissaoAcesso(false, true, false);
     $idpronac = $this->_request->getParam("idpronac");
     if (strlen($idpronac) > 7) {
         $idpronac = Seguranca::dencrypt($idpronac);
     }
     try {
         $Visao = new Visao();
         $visaoBeneficiario = $Visao->buscar(array('idAgente=?' => $_POST['idAgente'], 'Visao=?' => 199));
         if (count($visaoBeneficiario) == 0) {
             $dadosAgente = array('idAgente' => $_POST['idAgente'], 'Visao' => 199, 'Usuario' => $this->IdUsuario, 'stAtivo' => 'A');
             $Visao->inserir($dadosAgente);
         }
         $tbBeneficiarioProdutoCultural = new tbBeneficiarioProdutoCultural();
         $produtoBeneficiario = $tbBeneficiarioProdutoCultural->buscar(array('IdPRONAC=?' => $idpronac, 'idAgente=?' => $_POST['idAgente'], 'idPlanoDistribuicao=?' => $_POST['produto'], 'idTipoBeneficiario=?' => $_POST['tipoDocumento']));
         if (count($produtoBeneficiario) > 0) {
             parent::message("Já foi cadastrado o mesmo agente para este produto!", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
         } else {
             if (!empty($_FILES['arquivo']['tmp_name'])) {
                 $arquivoNome = $_FILES['arquivo']['name'];
                 // nome
                 $arquivoTemp = $_FILES['arquivo']['tmp_name'];
                 // nome temporário
                 $arquivoTipo = $_FILES['arquivo']['type'];
                 // tipo
                 $arquivoTamanho = $_FILES['arquivo']['size'];
                 // tamanho
                 if (!empty($arquivoNome) && !empty($arquivoTemp)) {
                     $arquivoExtensao = Upload::getExtensao($arquivoNome);
                     // extensão
                     $arquivoBinario = Upload::setBinario($arquivoTemp);
                     // binário
                     $arquivoHash = Upload::setHash($arquivoTemp);
                     // hash
                 }
                 if (!isset($_FILES['arquivo'])) {
                     parent::message("O arquivo não atende os requisitos informados no formulário.", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
                 }
                 if (empty($_FILES['arquivo']['tmp_name'])) {
                     parent::message("Favor selecionar um arquivo para o novo Plano de Distribuição.", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
                 }
                 $tipos = array('bmp', 'gif', 'jpeg', 'jpg', 'png', 'raw', 'tif', 'pdf');
                 if (!in_array(strtolower($arquivoExtensao), $tipos)) {
                     parent::message("Favor selecionar o arquivo de Marca no formato BMP, GIF, JPEG, JPG, PNG, RAW, TIF ou PDF!", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
                 }
                 $dataString = file_get_contents($arquivoTemp);
                 $arrData = unpack("H*hex", $dataString);
                 $data = "0x" . $arrData['hex'];
                 // ==================== PERSISTE DADOS DO ARQUIVO =================//
                 $dadosArquivo = array('nmArquivo' => $arquivoNome, 'sgExtensao' => $arquivoExtensao, 'biArquivo' => $data, 'dsDocumento' => 'Comprovação do Relatório Trimestral/Final - Plano de Distribuição', 'idPronac' => $idpronac, 'idTipoDocumento' => $_POST['tipoDocumento']);
                 $Arquivo = new Arquivo();
                 $Arquivo->inserirUploads($dadosArquivo);
                 $DocumentoProjeto = new tbDocumentoProjetoBDCORPORATIVO();
                 $dadosDocumento = $DocumentoProjeto->buscar(array('idPronac =?' => $idpronac, 'idTipoDocumento =?' => $_POST['tipoDocumento']), array('idDocumento DESC'));
                 $dados = array('IdPRONAC' => $idpronac, 'idAgente' => $_POST['idAgente'], 'idPlanoDistribuicao' => $_POST['produto'], 'idDocumento' => $dadosDocumento[0]->idDocumento, 'qtRecebida' => $_POST['quantidade'], 'idTipoBeneficiario' => $_POST['tipoDocumento']);
                 $tbBeneficiarioProdutoCultural->inserir($dados);
             } else {
                 parent::message("Não foi possível cadastrar os dados do Plano de Distribuição!", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
             }
         }
         parent::message("Dados salvos com sucesso!", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "CONFIRM");
     } catch (Exception $e) {
         parent::message("Erro ao salvar os dados.", "comprovarexecucaofisica/plano-de-distribuicao{$linkFinal}/idpronac/" . Seguranca::encrypt($idpronac), "ERROR");
     }
 }
 public function uploadAction()
 {
     //======================= INSTANCIA AS DAO ===========================
     $tbArquivoDAO = new tbArquivo();
     $tbArquivoImagemDAO = new tbArquivoImagem();
     $tbDocumentoDAO = new tbDocumento();
     $ProcuracaoDAO = new Procuracao();
     $tbVinculoPropostaDAO = new tbVinculoPropostaResponsavelProjeto();
     $tbVinculoDAO = new TbVinculo();
     $Sgcacesso = new Sgcacesso();
     $Agentes = new Agentes();
     $Nomes = new Nomes();
     $Visao = new Visao();
     $Internet = new Internet();
     //================== VARIÁVEIS PASSADAS VIA POST =====================
     $responsavel = $this->_request->getParam("responsavel");
     $proponente = $this->_request->getParam("proponente");
     $dsObservacao = $this->_request->getParam("dsObservacao");
     $arrayProjetos = $this->_request->getParam("projetos");
     // ==================== Dados do arquivo de upload ===============================
     $arquivoNome = $_FILES['divulgacao']['name'];
     // nome
     $arquivoTemp = $_FILES['divulgacao']['tmp_name'];
     // nome tempor�rio
     $arquivoTipo = $_FILES['divulgacao']['type'];
     // tipo
     $arquivoTamanho = $_FILES['divulgacao']['size'];
     // tamanho
     $arquivoExtensao = Upload::getExtensao($arquivoNome);
     // extens�o
     $arquivoBinario = Upload::setBinario($arquivoTemp);
     // bin�rio
     $arquivoHash = Upload::setHash($arquivoTemp);
     // hash
     //================= VALIDA O RESPONSAVEL E PROPONENTE ================
     if ($responsavel == 0) {
         $responsavel = $this->idResponsavel;
     }
     if ($proponente == 0) {
         $proponente = $this->idAgente;
     }
     //========= BUSCA O IDVINCULO COM AS INFORMAÇÕES PASSADAS =============
     $whereVinculo['idUsuarioResponsavel = ?'] = $responsavel;
     $whereVinculo['idAgenteProponente = ?'] = $proponente;
     $buscarVinculo = $tbVinculoDAO->buscar($whereVinculo);
     try {
         // ==================== Insere na Tabela tbArquivo ===============================
         $dadosArquivo = array('nmArquivo' => $arquivoNome, 'sgExtensao' => $arquivoExtensao, 'dsTipoPadronizado' => $arquivoTipo, 'nrTamanho' => $arquivoTamanho, 'dtEnvio' => new Zend_Db_Expr('GETDATE()'), 'dsHash' => $arquivoHash, 'stAtivo' => 'A');
         $idArquivo = $tbArquivoDAO->inserir($dadosArquivo);
         // ==================== Insere na Tabela tbArquivoImagem ===============================
         $dadosBinario = array('idArquivo' => $idArquivo, 'biArquivo' => new Zend_Db_Expr("CONVERT(varbinary(MAX), {$arquivoBinario})"));
         $idArquivo = $tbArquivoImagemDAO->inserir($dadosBinario);
         // ==================== Insere na Tabela tbDocumento ===============================
         $dados = array('idTipoDocumento' => 17, 'idArquivo' => $idArquivo, 'dsDocumento' => $_POST['dsObservacao'], 'dtEmissaoDocumento' => NULL, 'dtValidadeDocumento' => NULL, 'idTipoEventoOrigem' => NULL, 'nmTitulo' => 'Procuracao');
         $idDocumento = $tbDocumentoDAO->inserir($dados);
         $idDocumento = $idDocumento['idDocumento'];
         //======== MONTA UM ARRAY COM AS INFORMAÇÕES DO VINCULO PROPOSTA========
         for ($i = 0; $i < sizeof($arrayProjetos); $i++) {
             $arrayVinculoProposta = array('idVinculo' => $buscarVinculo[0]->idVinculo, 'idPreProjeto' => $arrayProjetos[$i], 'siVinculoProposta' => 0);
             // Salva as informações retornando o idVinculo Proposta
             $idVinculoProposta = $tbVinculoPropostaDAO->inserir($arrayVinculoProposta);
             // ==================== Insere na Tabela Procuracao ===============================
             $dadosVinculoProjeto = array('idVinculoProposta' => $idVinculoProposta, 'idDocumento' => $idDocumento, 'siProcuracao' => 0, 'dsObservacao' => $dsObservacao, 'dsJustificativa' => '');
             $inserirproposta = $ProcuracaoDAO->inserir($dadosVinculoProjeto);
         }
         // ======== CADASTRA A VISÃO DE PROCURADOR PARA O RESPONSÁVEL CASO A MESMA NÃO EXISTA ========
         $buscarDadosResponsavel = $Sgcacesso->buscar(array('IdUSuario = ?' => $responsavel))->current();
         // busca os dados do responsável
         $buscarDadosAgente = $Agentes->buscar(array('CNPJCPF = ?' => $buscarDadosResponsavel['Cpf']))->current();
         // verifica se o responsável é um agente
         if ($buscarDadosAgente) {
             // verifica se tem visão de procurador
             $buscarVisao = $Visao->buscar(array('idAgente = ?' => $buscarDadosAgente['idAgente'], 'Visao = ?' => 247))->current();
             if (!$buscarVisao) {
                 $dadosVisao = array('idAgente' => $buscarDadosAgente['idAgente'], 'Visao' => 247, 'Usuario' => empty($this->idUsuario) ? $this->idAgente : $this->idUsuario, 'stAtivo' => 'A');
                 $Visao->inserir($dadosVisao);
                 // cadastra a visão de procurador
             }
         } else {
             // cadastra como agente
             $dadosNovoAgente = array('CNPJCPF' => $buscarDadosResponsavel['Cpf'], 'TipoPessoa' => 0, 'Status' => 0, 'Usuario' => empty($this->idUsuario) ? $this->idAgente : $this->idUsuario);
             $Agentes->inserir($dadosNovoAgente);
             // cadastra o agente
             $idAgenteNovo = $Agentes->BuscaAgente($buscarDadosResponsavel['Cpf']);
             $idAgenteNovo = $idAgenteNovo[0]->idAgente;
             // pega o id do agente cadastrado
             $dadosNome = array('idAgente' => $idAgenteNovo, 'TipoNome' => 18, 'Descricao' => $buscarDadosResponsavel['Nome'], 'Status' => 0, 'Usuario' => empty($this->idUsuario) ? $this->idAgente : $this->idUsuario);
             $Nomes->inserir($dadosNome);
             // cadastra o nome do agente
             $dadosVisao = array('idAgente' => $idAgenteNovo, 'Visao' => 247, 'Usuario' => empty($this->idUsuario) ? $this->idAgente : $this->idUsuario, 'stAtivo' => 'A');
             $Visao->inserir($dadosVisao);
             // cadastra a visão de procurador
             $dadosInternet = array('idAgente' => $idAgenteNovo, 'TipoInternet' => 28, 'Descricao' => $buscarDadosResponsavel['Email'], 'Status' => 1, 'Divulgar' => 1, 'Usuario' => empty($this->idUsuario) ? $this->idAgente : $this->idUsuario);
             $Internet->inserir($dadosInternet);
             // cadastra o email do procurador
         }
         parent::message("Procura&ccedil;&atilde;o cadastrada com sucesso!", "procuracao/cadastramento", "CONFIRM");
     } catch (Zend_Exception $e) {
         parent::message("Error" . $e->getMessage(), "procuracao/cadastramento", "ERROR");
         //	            parent::message("&Eacute; necess&aacute;rio um v&iacute;nculo para enviar o cadastramento da procura&ccedil;&atilde;o", "procuracao/index?idPreProjeto=" . $idpreprojeto, "ERROR");
     }
     exit;
 }