/**
  * Método que retorna as informacoes sobre o prazo de resposta da diligencia, incluindo o icone que deve ser apresentado na tela
  * @access public
  * @param integer $idPronac (id do Projeto que deseja saber informacoes sobre a diligencia)
  * @param integer $idTipoDiligencia (id do tipo de diligencia, cada modulo possui um codigo especifico)
  * @param integer $idDiligencia (id da diligencia que deseja saber as informacoes)
  * @param boolean $blnPrazoPadrao (se true retorna apenas o prazo padrao de resposta da diligencia para o modulo em questao)
  * @param boolean $blnPrazoResposta (se true retorna apenas o prazo que o proponente tem para responder a diligencia)
  * @return string
  */
 public function prazoRespostaDiligencia($idPronac = null, $idTipoDiligencia = null, $idDiligencia = null, $blnPrazoPadrao = false, $blnPrazoResposta = false)
 {
     //inicializando vetores
     $arrRetorno = array();
     $arrRetorno['prazoPadrao'] = null;
     $arrRetorno['prazoRespostaCrescente'] = null;
     $arrRetorno['prazoRespostaDecrescente'] = null;
     $arrIcones = array();
     $arrIcones['icone'] = "notice1.png";
     $arrIcones['title'] = "A Diligenciar";
     $arrRetorno['iconeDiligencia'] = $arrIcones;
     if (isset($idPronac) && !empty($idPronac)) {
         $tbDiligencia = new tbDiligencia();
         $arrBusca = array();
         $arrBusca['IdPRONAC = ?'] = $idPronac;
         if (!empty($idTipoDiligencia)) {
             $arrBusca['idTipoDiligencia = ?'] = $idTipoDiligencia;
         }
         if (!empty($idDiligencia)) {
             $arrBusca['idDiligencia = ?'] = $idDiligencia;
         }
         // busca a situação do projeto
         $rsDiligencia = $tbDiligencia->buscar($arrBusca, array('DtSolicitacao DESC'))->current();
         if (!empty($rsDiligencia)) {
             $prazoPadrao = $this->prazoPadrao($rsDiligencia->idTipoDiligencia, $rsDiligencia->stProrrogacao);
             $prazoResposta = $this->prazoParaResposta($rsDiligencia->DtSolicitacao, $prazoPadrao);
             $prazoRespostaCresc = $this->prazoParaResposta($rsDiligencia->DtSolicitacao, $prazoPadrao);
             $prazoRespostaDesc = $this->prazoParaResposta($rsDiligencia->DtSolicitacao, $prazoPadrao, true);
             //retorna apenas o prazo padrao do sistema
             if ($blnPrazoPadrao) {
                 return $prazoPadrao;
             }
             //retorna apenas o prazo de resposta do proponente
             if ($blnPrazoResposta) {
                 return $prazoRespostaDesc == '-1' ? $prazoPadrao : $prazoRespostaDesc;
             }
             //retorna os dois prazos
             $arrRetorno['prazoPadrao'] = $prazoPadrao;
             $arrRetorno['prazoRespostaCrescente'] = $prazoRespostaCresc == '-1' ? $prazoPadrao : $prazoRespostaCresc;
             $arrRetorno['prazoRespostaDecrescente'] = $prazoRespostaDesc == '-1' ? $prazoPadrao : $prazoRespostaDesc;
             //verifica os icones a serem utilizados
             $arrIcones = $this->iconeDiligencia($rsDiligencia, $prazoPadrao, $prazoResposta);
             $arrRetorno['iconeDiligencia'] = $arrIcones;
             return $arrRetorno;
         } else {
             return $arrRetorno;
         }
     } else {
         return $arrRetorno;
     }
 }
 /**
  * Método para verificar o status da diligencia do projeto
  * @access public
  * @param integer $idPronac
  * @param integer $idProduto
  * @param array $idTipoDiligencia
  * @return string
  */
 public function checarDiligencia($idPronac = null, $idProduto = null, $idTipoDiligencia = array())
 {
     if (isset($idPronac) && !empty($idPronac)) {
         // objetos
         $tbDiligencia = new tbDiligencia();
         $tbDistribuirParecer = new tbDistribuirParecer();
         // busca a diligência
         $where = array('idPronac = ?' => $idPronac);
         $order = array('DtSolicitacao DESC');
         // filtra pelo id do produto
         if (!empty($idProduto)) {
             $where = array_merge($where, array('idProduto = ?' => $idProduto));
         }
         // filtra por tipos de diligências
         if (count($idTipoDiligencia) > 0) {
             $where = array_merge($where, array('idTipoDiligencia IN (?)' => $idTipoDiligencia));
         }
         $buscarDiligencia = $tbDiligencia->buscar($where, $order);
         // busca o parecer distribuido
         $whereParecer = array('idPRONAC = ?' => $idPronac, 'DtDistribuicao ?' => new Zend_Db_Expr('IS NOT NULL'), 'DtDevolucao ?' => new Zend_Db_Expr('IS NULL'), 'stEstado = ?' => 0, 'TipoAnalise = ?' => 3);
         $buscarParecer = $tbDistribuirParecer->buscar($whereParecer);
         if (count($buscarDiligencia) > 0) {
             $DtSolicitacao = $buscarDiligencia[0]->DtSolicitacao;
             $DtResposta = $buscarDiligencia[0]->DtResposta;
             $stEnviado = trim($buscarDiligencia[0]->stEnviado);
             $buscarTmpFimDiligencia = $tbDiligencia->buscar(array('idPronac = ?' => $idPronac, 'stProrrogacao = ?' => 'N'), array('DtSolicitacao DESC'));
             if (count($buscarTmpFimDiligencia) > 0) {
                 $TmpFimDiligencia = 20;
             } else {
                 $TmpFimDiligencia = 40;
             }
             if (count($buscarParecer) > 0) {
                 $DtDistribuicao = $buscarParecer[0]->{$DtDistribuicao};
             } else {
                 $DtDistribuicao = null;
             }
         } else {
             $DtSolicitacao = null;
             $DtResposta = null;
             $TmpFimDiligencia = null;
             $DtDistribuicao = null;
             $stEnviado = null;
         }
         $TmpDtDistribuicao = !empty($DtDistribuicao) ? round(Data::CompararDatas($DtDistribuicao)) : 0;
         if ($DtSolicitacao != null && $TmpDtDistribuicao > $TmpFimDiligencia) {
             return 3;
             // Diligência não respondida
         } elseif ($DtSolicitacao != null && $DtResposta != null) {
             return 2;
             // Diligência respondida
         } elseif ($DtSolicitacao != null && $DtResposta == null && $stEnviado == 'S') {
             return 1;
             // Diligenciado
         } else {
             return 0;
             // A diligenciar
         }
     } else {
         return 0;
         // A diligenciar
     }
 }
 public function diligenciaAction()
 {
     $this->view->idpronac = $this->_request->getParam('idpronac');
     $Usuario = new Usuario();
     // objeto usuário
     $auth = Zend_Auth::getInstance();
     // pega a autenticação
     $d = new tbDiligencia();
     $p = new Projetos();
     if (isset($_POST['idpronac'])) {
         $db = Zend_Db_Table::getDefaultAdapter();
         $db->beginTransaction();
         try {
             $dados = array('idPronac' => $_POST['idpronac'], 'idTipoDiligencia' => 174, 'DtSolicitacao' => date('Y-m-d H:i:s'), 'Solicitacao' => $_POST['justificativa'], 'idSolicitante' => $auth->getIdentity()->usu_codigo, 'stEnviado' => 'S');
             $d->inserir($dados);
             $where = "IdPRONAC = " . $_POST['idpronac'];
             $dadosalterar = array('Situacao' => 'E61');
             $p->alterar($dadosalterar, $where);
             $db->commit();
             echo "<script>history.go(-1);</script>";
         } catch (Zend_Exception $e) {
             $db->rollBack();
             echo $e->getMessage();
         }
     }
 }