/** * 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 } }