private function carregarDadosManter($connection, $id = "", $mensagem = "")
 {
     if (!Functions::isEmpty($id)) {
         $model = new TiposAmbientesModel();
         $tiposAmbientes = $model->loadById($connection, $id);
     } else {
         $tiposAmbientes = new TiposAmbientesVo();
     }
     return $this->trabalharDadosManter($tiposAmbientes, $mensagem);
 }
Beispiel #2
0
 private function populateVo($connection, $row)
 {
     $usuarioModel = new UsuariosModel();
     $usuarioVo = $usuarioModel->loadById($connection, $row->cha_cdiusuario);
     $requisitanteVo = $usuarioModel->loadById($connection, $row->cha_cdiusuario_requisitante);
     $atendenteVo = $usuarioModel->loadById($connection, $row->cha_cdiusuario_atendente);
     $situacaoModel = new SituacoesModel();
     $situacaoVo = $situacaoModel->loadById($connection, $row->cha_cdisituacao);
     $empresaModel = new EmpresasModel();
     $empresaVo = $empresaModel->loadById($connection, $row->cha_cdiempresa);
     $categoriaModel = new CategoriasModel();
     $categoriaVo = $categoriaModel->loadById($connection, $row->cha_cdicategoria);
     $tipoAmbienteModel = new TiposAmbientesModel();
     $tipoAmbienteVo = $tipoAmbienteModel->loadById($connection, $row->cha_cditipoambiente);
     $tipoProdutoModel = new TiposProdutosModel();
     $tipoProdutoVo = $tipoProdutoModel->loadById($connection, $row->cha_cditipoproduto);
     $modulosModel = new ModulosModel();
     $moduloVo = $modulosModel->loadById($connection, $row->cha_cdimodulo);
     $prioridadeModel = new PrioridadesModel();
     $prioridadeVo = $prioridadeModel->loadById($connection, $row->cha_cdiprioridade);
     $vo = new ChamadosVo();
     $vo->setId($row->cha_cdichamado);
     $vo->setUsuario($usuarioVo);
     $vo->setRequisitante($requisitanteVo);
     $vo->setAtendente($atendenteVo);
     $vo->setData(Functions::toDate($row->cha_dtdcriacao));
     $vo->setSituacao($situacaoVo);
     $vo->setEmpresa($empresaVo);
     $vo->setCategoria($categoriaVo);
     $vo->setTipoAmbiente($tipoAmbienteVo);
     $vo->setTipoProduto($tipoProdutoVo);
     $vo->setModulo($moduloVo);
     $vo->setPrioridade($prioridadeVo);
     $vo->setImpacto($row->cha_oplimpacto);
     $vo->setUsuariosAfetados($row->cha_nuiusuariosafetados);
     $vo->setAreasAfetadas($row->cha_nuiareasafetadas);
     $vo->setPrevisaoTermino(Functions::toDate($row->cha_dtdprevisaotermino));
     $vo->setAssunto($row->cha_dssassunto);
     $vo->setObservacao($row->cha_dsbobservacao);
     return $vo;
 }
 public function salvarCadastrarAction()
 {
     $connection = Databases::connect();
     $chamadosModel = new ChamadosModel();
     $chamadoVo = $chamadosModel->loadById($connection, $this->getParametroTela('id'));
     $situacoesModel = new SituacoesModel();
     $situacaoVo = $situacoesModel->loadById($connection, $this->getParametroTela('situacao'));
     $usuariosModel = new UsuariosModel();
     $usuarioVo = $usuariosModel->loadById($connection, $this->getParametroTela('usuario'));
     $requisitanteVo = $usuariosModel->loadById($connection, $this->getParametroTela('requisitante'));
     $atendenteVo = $usuariosModel->loadById($connection, $this->getParametroTela('atendente'));
     $empresasModel = new EmpresasModel();
     $empresaVo = $empresasModel->loadById($connection, $this->getParametroTela('empresa'));
     $categoriasModel = new CategoriasModel();
     $categoriaVo = $categoriasModel->loadById($connection, $this->getParametroTela('categoria'));
     $tiposAmbientesModel = new TiposAmbientesModel();
     $tipoAmbienteVo = $tiposAmbientesModel->loadById($connection, $this->getParametroTela('tipoAmbiente'));
     $tiposProdutosModel = new TiposProdutosModel();
     $tipoProdutoVo = $tiposProdutosModel->loadById($connection, $this->getParametroTela('tipoProduto'));
     $modulosModel = new ModulosModel();
     $moduloVo = $modulosModel->loadById($connection, $this->getParametroTela('modulo'));
     $prioridadesModel = new PrioridadesModel();
     $prioridadeVo = $prioridadesModel->loadById($connection, $this->getParametroTela('prioridade'));
     if (Functions::isEmpty($this->getParametroTela('impacto'))) {
         $impacto = 0;
     } else {
         $impacto = $this->getParametroTela('impacto');
     }
     if (Functions::isEmpty($this->getParametroTela('id'))) {
         $modo = "I";
     } else {
         $modo = "A";
     }
     $vo = new ChamadosVo();
     $vo->setId($this->getParametroTela('id'));
     $vo->setUsuario($usuarioVo);
     $vo->setRequisitante($requisitanteVo);
     $vo->setAtendente($atendenteVo);
     $vo->setData($this->getParametroTela('data'));
     $vo->setSituacao($situacaoVo);
     $vo->setEmpresa($empresaVo);
     $vo->setCategoria($categoriaVo);
     $vo->setTipoAmbiente($tipoAmbienteVo);
     $vo->setTipoProduto($tipoProdutoVo);
     $vo->setModulo($moduloVo);
     $vo->setPrioridade($prioridadeVo);
     $vo->setImpacto($impacto);
     $vo->setUsuariosAfetados($this->getParametroTela('usuariosAfetados'));
     $vo->setAreasAfetadas($this->getParametroTela('areasAfetadas'));
     $vo->setPrevisaoTermino($this->getParametroTela('previsaoTermino'));
     $vo->setAssunto($this->getParametroTela('assunto'));
     $vo->setObservacao($this->getParametroTela('observacao'));
     $vo->setAnexo($_FILES["anexo"]);
     $erro = false;
     // Validações adicionais de segurança para o perfil de cliente
     if ($_SESSION['perfilCliente'] == 1) {
         // Valida se cliente fez malandragem de trocar empresa
         if ($this->clienteSelecionouEmpresaInvalida($connection, $empresaVo->getId())) {
             $erro = true;
             $mensagem = 'N' . 'Percebemos que você selecionou uma empresa diferente da sua. Por motivos de segurança, não gravaremos o chamado';
         }
         // Valida se cliente fez malandragem de trocar usuário
         /*
         if ($this->clienteSelecionouUsuarioInvalido($connection, $usuarioVo->getId())) {
             $erro = true;
             $mensagem = 'N' . 'Percebemos que você selecionou um usuário de uma empresa diferente da sua. Por motivos de segurança, não gravaremos o chamado';
         }
         */
         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 (!$erro) {
         $mensagem = $this->validarFormulario($vo);
     }
     if (substr($mensagem, 0, 1) == 'S') {
         $id = $this->salvarRegistro($connection, $vo);
         $vo->setId($id);
         $alteracoes = $this->verificarAlteracoes($chamadoVo, $vo);
         // Lançamento de Histórico do Chamado
         if (!Functions::isEmpty($alteracoes)) {
             $usuarioLogadoVo = $usuariosModel->loadById($connection, $_SESSION['usuarioCodigo']);
             $historico = new ChamadosHistoricosVo();
             $historico->setChamado($vo);
             $historico->setUsuario($usuarioLogadoVo);
             $historico->setData(date('Y-m-d H:i'));
             $historico->setObservacao($alteracoes);
             $historico->setAnexo($vo->getAnexo());
             $historicosModel = new ChamadosHistoricosModel();
             $historicosModel->save($connection, $historico);
         }
         // Disparo de E-mail Comunicando
         if (!Functions::isEmpty($alteracoes)) {
             $txt = '<font color="red"><b>OBS: Este e-mail foi gerado automaticamente. Favor não responder para este endereço.</b></font><br /><br />';
             if ($modo == "I") {
                 if ($_SESSION['perfilCliente'] == 1) {
                     $subject = 'BasisIT :: Inclusão de Chamado :: Número ' . $vo->getId() . ' :: ' . $vo->getEmpresa()->getDescricao();
                     $txt = $txt . '<b>' . $vo->getUsuario()->getNome() . '</b> da empresa <b>' . $vo->getEmpresa()->getDescricao() . '</b> criou o chamado <b>' . $vo->getId() . ' - ' . $vo->getAssunto() . '</b> na categoria <b>' . $vo->getCategoria()->getDescricao() . '.</b>';
                 } else {
                     $subject = 'BasisIT :: Inclusão de Chamado :: Número ' . $vo->getId() . ' :: ' . $vo->getEmpresa()->getDescricao();
                     $txt = $txt . 'Este chamado foi registrado pela <b>BasisIT</b> em nome do <b>' . $vo->getRequisitante()->getNome() . '</b> da empresa <b>' . $vo->getEmpresa()->getDescricao() . '</b>.<br />Chamado: <b>' . $vo->getId() . ' - ' . $vo->getAssunto() . '</b> na categoria <b>' . $vo->getCategoria()->getDescricao() . '.</b>';
                 }
             } else {
                 $subject = 'BasisIT :: Nova Interação no Chamado :: Número ' . $vo->getId() . ' :: ' . $vo->getEmpresa()->getDescricao();
                 $txt = $txt . 'Informamos que houve uma nova interação no chamado ' . $vo->getId() . ' - ' . $vo->getAssunto() . '.';
             }
             $txt = $txt . '<br /><br />Você receberá um aviso a cada notificação feita.<br /><br />';
             $txt = $txt . '<fieldset><legend><b>Descrição da Interação:</b></legend>' . $alteracoes . '</fieldset>';
             $arrTo = array();
             // Usuário
             if (!Functions::isEmpty($vo->getUsuario()->getEmail())) {
                 $to = $vo->getUsuario()->getEmail();
                 array_push($arrTo, $to);
             }
             // Requisitante
             if (!Functions::isEmpty($vo->getRequisitante()->getEmail()) && $vo->getRequisitante()->getEmail() != $vo->getUsuario()->getEmail()) {
                 $to = $vo->getRequisitante()->getEmail();
                 array_push($arrTo, $to);
             }
             // Atendente
             if (!Functions::isEmpty($vo->getAtendente()->getEmail()) && $vo->getAtendente()->getEmail() != $vo->getUsuario()->getEmail()) {
                 $to = $vo->getAtendente()->getEmail();
                 array_push($arrTo, $to);
             }
             $arrCco = array();
             // Se for inclusão de chamado, coloca em cópia oculta a galera dos parâmetros
             if ($modo == "I") {
                 // Manda E-mail para todos os destinatários definidos no cadastro de parâmetros
                 $destinatarios = explode(';', Functions::getParametro('destinatários'));
                 foreach ($destinatarios as $to) {
                     array_push($arrCco, $to);
                 }
             }
             // Dispara o email
             Functions::email($arrTo, $subject, $txt, $arrCco);
         }
         // Lançamento de Apontamento Automático
         /*
         if ( ($modo == "I") && ($vo->getAtendente()->getId() == $vo->getUsuario()->getId()) ) {
             $controller = new ApontamentosController();
             $mensagem = $controller->iniciar($connection, "C", $vo->getId(), "Iniciado automaticamente");
         }
         */
     }
     $dados = $this->carregarDadosManter($connection, $vo, $mensagem);
     Databases::disconnect($connection);
     $this->exibirTelaManter($dados);
 }