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