/**
  * 
  * @param type $id
  * @param type $observacao
  * @param type $atendimento
  * @param type $logon
  * @param type $dataInicial
  * @param type $dataFinal
  * @param datetime $opcaoDeferimento Decide se vai deferir enviando para análise do coordenador
  * ou diretamente para o publicação do diário oficial
  * @throws InvalidArgumentException
  */
 private function validarDeferimento($id, $observacao, $atendimento, $logon, $dataInicial, $dataFinal, $idPronac, $opcaoDeferimento)
 {
     $this->validarIndeferimento($id, $observacao, $atendimento, $logon, $dataInicial, $dataFinal, $idPronac, $opcaoDeferimento);
     $dataI = explode('/', $dataInicial);
     $dtI = checkdate($dataI[1], $dataI[0], $dataI[2]);
     if (!$dtI) {
         throw new DateException('Data inicinal inválida.');
     }
     $dataF = explode('/', $dataFinal);
     $dtF = checkdate($dataF[1], $dataF[0], $dataF[2]);
     if (!$dtF) {
         throw new DateException('Data final inválida.');
     }
     $checklistSolicitacaoProrrogacaoPrazo = new paChecklistSolicitacaoProrrogacaoPrazo();
     $this->setErros($checklistSolicitacaoProrrogacaoPrazo->checkSolicitacao($idPronac, Data::dataAmericana($dataInicial), Data::dataAmericana($dataFinal), 'A'));
     if ($this->hasErros()) {
         throw new Exception('A procedimento armazenado retornou erros do banco de dados');
     }
 }
 public function cadastrarProrrogacaoAction()
 {
     $projetos = new Projetos();
     $DadosProjeto = $projetos->buscar(array('idPronac = ?' => $_POST['pronac']))->current();
     $dataI = explode('/', $_POST['dtInicio']);
     $dtI = checkdate($dataI[1], $dataI[0], $dataI[2]);
     if (!$dtI) {
         parent::message("Data Início inválida.", "solicitarprorrogacao", "ERROR");
     }
     $dataF = explode('/', $_POST['dtFinal']);
     $dtF = checkdate($dataF[1], $dataF[0], $dataF[2]);
     if (!$dtF) {
         parent::message("Data Final inválida.", "solicitarprorrogacao", "ERROR");
     }
     $pa = new paChecklistSolicitacaoProrrogacaoPrazo();
     $resutadoPA = $pa->checkSolicitacao($_POST['pronac'], Data::dataAmericana($_POST['dtInicio']), Data::dataAmericana($_POST['dtFinal']), 'I');
     if (count($resutadoPA) > 0) {
         $Projetos = new Projetos();
         $this->view->dadosProjeto = $Projetos->buscar(array('IdPRONAC = ?' => $_POST['pronac']));
         $this->view->Erros = $resutadoPA;
     } else {
         //            $idDocumento = null;
         $idDocumento = '';
         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.", "solicitarprorrogacao", "ERROR");
             }
             if (empty($_FILES['arquivo']['tmp_name'])) {
                 parent::message("Falha ao anexar o arquivo.", "solicitarprorrogacao", "ERROR");
             }
             $tipos = array('pdf');
             if (!in_array(strtolower($arquivoExtensao), $tipos)) {
                 parent::message("Favor selecionar o arquivo no formato PDF!", "solicitarprorrogacao", "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' => 'Cadastro de Prorrogação de Prazo de Captação', 'idPronac' => $_POST['pronac'], 'idTipoDocumento' => 27);
             $Arquivo = new Arquivo();
             $Arquivo->inserirUploads($dadosArquivo);
             $DocumentoProjeto = new tbDocumentoProjetoBDCORPORATIVO();
             $dadosDocumento = $DocumentoProjeto->buscar(array('idPronac =?' => $_POST['pronac'], 'idTipoDocumento =?' => 27), array('idDocumento DESC'));
             $idDocumento = $dadosDocumento[0]->idDocumento;
         }
         $dados = array('idPronac' => $DadosProjeto->IdPRONAC, 'AnoProjeto' => $DadosProjeto->AnoProjeto, 'Sequencial' => $DadosProjeto->Sequencial, 'DtInicioExecucao' => $DadosProjeto->DtInicioExecucao, 'DtFimExecucao' => $DadosProjeto->DtFimExecucao, 'Justificativa' => $_POST['justificativa'], 'idUsuario' => $this->idUsuario, 'idDocumento' => $idDocumento, 'DtInicio' => Data::dataAmericana($_POST['dtInicio']), 'DtFinal' => Data::dataAmericana($_POST['dtFinal']));
         $vw = new vwSolicitarProrrogacaoPrazoCaptacao();
         $vw->inserir($dados);
         parent::message("Pedido de prorrogação enviado ao Ministério da Cultura com sucesso!", "consultardadosprojeto/index?idPronac=" . Seguranca::encrypt($DadosProjeto->IdPRONAC), "CONFIRM");
     }
 }