public function cancelarAction($mensagem = "") { $connection = Databases::connect(); $id = $this->getParametroTela('id'); $chamadoModel = new ChamadosModel(); $chamadoVo = $chamadoModel->loadById($connection, $id); $apontamentoModel = new ApontamentosModel(); $apontamento = $apontamentoModel->verificaSeAberto($connection, "C", $id); $apontamentoController = new ApontamentosController(); $mensagem = $apontamentoController->validarIniciarApontamento(new AtividadesVo(), $chamadoVo, $apontamento, "C", $id); // Validações adicionais de segurança para o perfil de cliente if ($_SESSION['perfilCliente'] == 1) { if ($chamadoVo->getSituacao() != "") { // Solicitação número 2 do documento "Ajuste_Sistema_Chamados_Ver1_11.pdf" if ($chamadoVo->getSituacao()->getId() == $_SESSION['situacaoFinalizada']) { $erro = true; $mensagem = 'N' . 'Chamado se encontra finalizado e portanto não pode mais ser alterado.'; } // Solicitação número 2 do documento "Ajuste_Sistema_Chamados_Ver1_11.pdf" if ($chamadoVo->getSituacao()->getId() == $_SESSION['situacaoCancelada']) { $erro = true; $mensagem = 'N' . 'Chamado se encontra cancelado e portanto não pode mais ser alterado.'; } } } if (substr($mensagem, 0, 1) == 'S') { $situacaoModel = new SituacoesModel(); $situacaoVo = $situacaoModel->loadById($connection, $_SESSION['situacaoCancelada']); // Cancelado $chamadoVo->setSituacao($situacaoVo); $chamadoModel->save($connection, $chamadoVo); $usuarioModel = new UsuariosModel(); $usuarioVo = $usuarioModel->loadById($connection, $_SESSION['usuarioCodigo']); $chamadoHistoricoVo = new ChamadosHistoricosVo(); $chamadoHistoricoVo->setChamado($chamadoVo); $chamadoHistoricoVo->setData(date('Y-m-d H:i')); $chamadoHistoricoVo->setUsuario($usuarioVo); $chamadoHistoricoVo->setObservacao("* Chamado cancelado"); $chamadoHistoricoModel = new ChamadosHistoricosModel(); $chamadoHistoricoModel->save($connection, $chamadoHistoricoVo); // Disparo de E-mail Comunicando $recipients = array(); $subject = 'BasisIT :: Cancelamento de Chamado :: Número ' . $chamadoVo->getId() . ' :: ' . $chamadoVo->getEmpresa()->getDescricao(); $txt = '<font color="red"><b>OBS: Este e-mail foi gerado automaticamente. Favor não responder para este endereço.</b></font><br /><br />'; $txt = $txt . 'Informamos que houve uma nova interação no chamado ' . $chamadoVo->getId() . ' - ' . $chamadoVo->getAssunto() . '.<br /><br />'; $txt = $txt . '<fieldset><legend><b>Descrição da Interação:</b></legend>* O chamado foi cancelado</fieldset>'; // E-mail para o usuário que abriu o chamado vai sempre if (!Functions::isEmpty($chamadoVo->getUsuario()->getEmail())) { $to = $chamadoVo->getUsuario()->getEmail(); array_push($recipients, $to); } if (!Functions::isEmpty($chamadoVo->getRequisitante()->getEmail()) && $chamadoVo->getRequisitante()->getEmail() != $chamadoVo->getUsuario()->getEmail()) { $to = $chamadoVo->getRequisitante()->getEmail(); array_push($recipients, $to); } if (!Functions::isEmpty($chamadoVo->getAtendente()->getEmail()) && $chamadoVo->getAtendente()->getEmail() != $chamadoVo->getUsuario()->getEmail()) { $to = $chamadoVo->getAtendente()->getEmail(); array_push($recipients, $to); } Functions::email($recipients, $subject, $txt); } $dados = $this->carregarDadosManter($connection, $id, $mensagem); Databases::disconnect($connection); $this->exibirTelaManter($dados); }
public function loadRelatorioAtendimentosAnalitico($connection, $periodoInicial, $periodoFinal, $empresa, $situacao, $tipoAvaliacao) { $registros = array(); $query = " SELECT ch.cha_cdichamado, ch.cha_dtdcriacao\n , us.usu_dssnome, ep.emp_dssempresa\n , st.sit_dsssituacao, cg.cat_dsscategoria\n , ta.tpa_dsstipoambiente, tp.tpp_dsstipoproduto\n , md.mod_dssmodulo, ch.cha_dssassunto\n , SEC_TO_TIME(SUM(TIME_TO_SEC(ap.apo_hrsfaturadas))) apo_hrsfaturadas\n FROM chamados ch\n INNER JOIN apontamentos ap ON ap.apo_cdichamado = ch.cha_cdichamado\n LEFT JOIN usuarios us ON us.usu_cdiusuario = ch.cha_cdiusuario\n LEFT JOIN empresas ep ON ep.emp_cdiempresa = ch.cha_cdiempresa\n LEFT JOIN situacoes st ON st.sit_cdisituacao = ch.cha_cdisituacao\n LEFT JOIN categorias cg ON cg.cat_cdicategoria = ch.cha_cdicategoria\n LEFT JOIN tiposambientes ta ON ta.tpa_cditipoambiente = ch.cha_cditipoambiente\n LEFT JOIN tiposprodutos tp ON tp.tpp_cditipoproduto = ch.cha_cditipoproduto\n LEFT JOIN modulos md ON md.mod_cdimodulo = ch.cha_cdimodulo\n WHERE date_format(ap.apo_dtdinicio, '%Y-%m-%d') BETWEEN :periodoInicial AND :periodoFinal\n AND date_format(ap.apo_dtdfim , '%Y-%m-%d') BETWEEN :periodoInicial AND :periodoFinal "; if (!Functions::isEmpty($empresa)) { $query .= " AND ep.emp_cdiempresa = :empresa "; } if (!Functions::isEmpty($situacao)) { $query .= " AND st.sit_cdisituacao = :situacao "; } if (!Functions::isEmpty($tipoAvaliacao)) { if ($tipoAvaliacao == 1) { $query .= " AND ap.apo_cdimodofaturamento in (1,2,3) "; } else { if ($tipoAvaliacao == 2) { $query .= " AND ap.apo_cdimodofaturamento in (1,2) "; } else { if ($tipoAvaliacao == 3) { $query .= " AND ap.apo_cdimodofaturamento in (3) "; } } } } $query .= " GROUP BY ch.cha_cdichamado, ch.cha_dtdcriacao\n , us.usu_dssnome, ep.emp_dssempresa\n , st.sit_dsssituacao, cg.cat_dsscategoria\n , ta.tpa_dsstipoambiente, tp.tpp_dsstipoproduto\n , md.mod_dssmodulo, ch.cha_dssassunto\n ORDER BY ch.cha_cdichamado "; $stmt = $connection->prepare($query); if (!Functions::isEmpty($periodoInicial)) { $stmt->bindParam(':periodoInicial', Functions::toDateToSql($periodoInicial)); } if (!Functions::isEmpty($periodoFinal)) { $stmt->bindParam(':periodoFinal', Functions::toDateToSql($periodoFinal)); } if (!Functions::isEmpty($empresa)) { $stmt->bindParam(':empresa', $empresa); } if (!Functions::isEmpty($situacao)) { $stmt->bindParam(':situacao', $situacao); } $stmt->execute(); $rows = $stmt->fetchAll(); foreach ($rows as $row) { $chamadosHistoricosModel = new ChamadosHistoricosModel(); $chamadosHistoricosArray = $chamadosHistoricosModel->loadByChamado($connection, $row->cha_cdichamado); if (Functions::isEmpty($row->apo_hrsfaturadas)) { $horasFaturadas = '00:00:00'; } else { $horasFaturadas = $row->apo_hrsfaturadas; } $registro = array('chamadoCodigo' => $row->cha_cdichamado, 'chamadoData' => Functions::toDate($row->cha_dtdcriacao), 'usuarioNome' => $row->usu_dssnome, 'empresaDescricao' => $row->emp_dssempresa, 'situacaoDescricao' => $row->sit_dsssituacao, 'categoriaDescricao' => $row->cat_dsscategoria, 'tipoAmbienteDescricao' => $row->tpa_dsstipoambiente, 'tipoProdutoDescricao' => $row->tpp_dsstipoproduto, 'moduloDescricao' => $row->mod_dssmodulo, 'chamadoAssunto' => $row->cha_dssassunto, 'horasFaturadas' => $horasFaturadas, 'chamadoHistoricoArray' => $chamadosHistoricosArray); array_push($registros, $registro); } return $registros; }