Exemple #1
0
        private void FecharOcorrencia()
        {
            SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
            {
                DataHoraConclusao = DateTime.Now,
                OcorrenciaId      = ocorrencia.Id
            };

            RepositoryService.Ocorrencia.FecharOcorrencia(ocorrencia, solucaoOcorrencia);
        }
Exemple #2
0
        public string Executar(string mensagem, string numeroMensagem, Usuario usuario)
        {
            usuarioIntegracao = usuario;
            var  xml      = this.CarregarMensagem <Pollux.MSG0288>(mensagem);
            bool reaberta = false; // Variável de controle de acesso

            List <Intelbras.Message.Helper.Entities.AtendimentoTelefonico> lstAtendimentosTelefonicos = new List <Pollux.Entities.AtendimentoTelefonico>();

            #region Leitura do xml atualização ocorrencia e montagem retorno

            if (xml.AtendimentoTelefonico != null)
            {
                foreach (Pollux.Entities.AtendimentoTelefonico atendimentoTelefonico in xml.AtendimentoTelefonico)
                {
                    if (!string.IsNullOrEmpty(atendimentoTelefonico.ProtocoloTelefonico))
                    {
                        Ocorrencia ocorrencia = new Servicos.RepositoryService(this.Organizacao, this.IsOffline).Ocorrencia.ObterPorProtocoloTelefonico(atendimentoTelefonico.ProtocoloTelefonico);
                        if (ocorrencia != null)
                        {
                            //Reabre a ocorrência, para que salve os dados do protocola de atendimento.
                            bool ocorrenciaEstavaFechada = (ocorrencia.RazaoStatus.Value == (int)StatusDaOcorrencia.Resolvido);
                            if (ocorrenciaEstavaFechada)
                            {
                                (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.ReabrirOcorrencia(ocorrencia);
                                ocorrencia.RazaoStatus  = (int)StatusDaOcorrencia.Aberta;
                                ocorrencia.ManterAberto = true;
                                reaberta = true;
                                ocorrencia.Atualizar();
                            }

                            if (atendimentoTelefonico.DuracaoChamada.HasValue)
                            {
                                ocorrencia.DuracaoChamada = atendimentoTelefonico.DuracaoChamada;
                            }

                            if (!string.IsNullOrEmpty(atendimentoTelefonico.NomeQuestionario))
                            {
                                List <QuestionarioPergunta> lstQuestionarioPergunta = new Servicos.QuestionarioPerguntaServices(this.Organizacao, this.IsOffline).ListarQuestionarioPerguntaPorNomeQuestionario(atendimentoTelefonico.NomeQuestionario);

                                if (atendimentoTelefonico.PesquisaSatisfacao != null)
                                {
                                    if (atendimentoTelefonico.PesquisaSatisfacao.Count > 0)
                                    {
                                        foreach (var pesquisaSatisfacao in atendimentoTelefonico.PesquisaSatisfacao)
                                        {
                                            foreach (var pergunta in lstQuestionarioPergunta)
                                            {
                                                if (pesquisaSatisfacao.Questao == pergunta.Ordem)
                                                {
                                                    List <QuestionarioOpcao> lstOpcoesResposta = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarQuestionarioOpcaoPor((Guid)pergunta.ID);
                                                    foreach (QuestionarioOpcao opcaoItem in lstOpcoesResposta)
                                                    {
                                                        if (opcaoItem.Nome == pesquisaSatisfacao.ValorPesquisa.ToString())
                                                        {
                                                            //Cria o vínculo da Resposta com a ocorrência
                                                            QuestionarioResposta questionarioRespostaCreate = new QuestionarioResposta();
                                                            questionarioRespostaCreate.QuestionarioOpcao = new Lookup(opcaoItem.Id, "itbc_questionarioresposta");
                                                            questionarioRespostaCreate.QuestionarioRespostaOcorrencia = new Lookup(ocorrencia.Id, "incident");
                                                            new RepositoryService(this.Organizacao, this.IsOffline).QuestionarioResposta.Create(questionarioRespostaCreate);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            if (atendimentoTelefonico.TempoFila.HasValue)
                            {
                                ocorrencia.TempoFila = atendimentoTelefonico.TempoFila;
                            }

                            if (atendimentoTelefonico.TempoWrap.HasValue)
                            {
                                ocorrencia.TempoWrap = atendimentoTelefonico.TempoWrap;
                            }

                            if (!String.IsNullOrEmpty(atendimentoTelefonico.NumeroFilaEntrada))
                            {
                                ocorrencia.NumeroFilaEntrada = atendimentoTelefonico.NumeroFilaEntrada;
                            }

                            if (!String.IsNullOrEmpty(atendimentoTelefonico.CodigoProdutoURA))
                            {
                                ocorrencia.CodigoProdutoURA = atendimentoTelefonico.CodigoProdutoURA;
                            }

                            try
                            {
                                if (reaberta == true) // Entrou no if de cancelada ou resolvida
                                {
                                    ocorrencia.ManterAberto = false;
                                    reaberta = false;
                                    ocorrencia.Atualizar();
                                }
                                else
                                {
                                    ocorrencia.Atualizar();
                                }

                                //Antes de resolver a ocorrência, precisa preencher a resolução
                                SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(this.Organizacao, this.IsOffline)
                                {
                                    DataHoraConclusao = DateTime.Now,
                                    Nome         = "Rotina Histórico do Protocolo de atendimento",
                                    OcorrenciaId = ocorrencia.Id
                                };

                                //Fecha a ocorrência, caso ela já estivesse fechada.
                                if (ocorrenciaEstavaFechada)
                                {
                                    (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.FecharOcorrencia(ocorrencia, solucaoOcorrencia);
                                }

                                if (ocorrencia != null)
                                {
                                    Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                                    objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico;
                                    objPollux.NumeroOcorrencia    = ocorrencia.Numero;
                                    objPollux.Mensagem            = "Ocorrência atualizada com sucesso!";

                                    lstAtendimentosTelefonicos.Add(objPollux);
                                }
                            } catch (Exception e) {
                                if (ocorrencia != null)
                                {
                                    Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                                    objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico;
                                    objPollux.NumeroOcorrencia    = ocorrencia.Numero;
                                    objPollux.Mensagem            = "Falha na atualização da Ocorrência: '" + e.Message + "'.";

                                    lstAtendimentosTelefonicos.Add(objPollux);
                                }
                            }
                        }
                        else
                        {
                            Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico();

                            objPollux.ProtocoloTelefonico = atendimentoTelefonico.ProtocoloTelefonico;
                            objPollux.Mensagem            = "Não encontrou ocorrência com esse Protocolo.";

                            lstAtendimentosTelefonicos.Add(objPollux);
                        }
                    }
                }
            }
            #endregion
            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
            retorno.Add("AtendimentoTelefonicoAtualizado", lstAtendimentosTelefonicos);
            retorno.Add("Resultado", resultadoPersistencia);

            return(CriarMensagemRetorno <Pollux.MSG0288R1>(numeroMensagem, retorno));
        }
Exemple #3
0
        private static void Executar()
        {
            bool reaberta = false;

            //Cria pasta de armazenamento de log caso não exista.
            if (!Directory.Exists(Settings.Default.Log))
            {
                Directory.CreateDirectory(Settings.Default.Log);
            }

            //Cria o arquivo de log da execução
            if (Settings.Default.HabilitarLog)
            {
                ostrm  = new FileStream(Settings.Default.Log + @"\Log_" + DateTime.Now.ToString("yyyy-MM-dd-HH.mm") + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
                writer = new StreamWriter(ostrm);
                oldOut = Console.Out;
                Console.SetOut(writer);
            }

            Console.WriteLine("******************************************************************************");
            Console.WriteLine("                 Serviço - Integração Chat x CRM");
            Console.WriteLine("******************************************************************************");
            Console.WriteLine();
            try
            {
                foreach (var item in ListaAtendimentosFinalizados())
                {
                    List <Ocorrencia> lstOcorrencias = new List <Ocorrencia>();
                    try
                    {
                        lstOcorrencias = new OcorrenciaService(OrganizationName, IsOffline).BuscarOcorrenciaPorProtocoloChat(item.protocolNumber);
                        if (lstOcorrencias.Count == 0)
                        {
                            Console.WriteLine("--Atendimento nº " + item.protocolNumber + " não foi encontrado no CRM!");
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("--Erro ao buscar no CRM o nº " + item.protocolNumber + ", " + e.Message);
                    }

                    //Registra os dados da ocorrencia
                    foreach (var ocorrencia in lstOcorrencias)
                    {
                        bool ocorrenciaEstavaFechada = (ocorrencia.Status.Value == 1 || ocorrencia.Status.Value == 2); // Cancelada ou Resolvida
                        if (ocorrenciaEstavaFechada)
                        {
                            (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.ReabrirOcorrencia(ocorrencia);
                            ocorrencia.RazaoStatus  = (int)StatusDaOcorrencia.Aberta;
                            ocorrencia.ManterAberto = true;
                            reaberta = true;
                            ocorrencia.Atualizar();
                        }

                        Console.WriteLine("> Ocorrência nº " + ocorrencia.Numero + " encontrada, atendimento nº " + item.protocolNumber);
                        ocorrencia.OrigemChat            = item.origin;
                        ocorrencia.DataEntradaChat       = Util.Utilitario.ConverterEmData(item.onSystemDate);
                        ocorrencia.DataInicioAtendimento = Util.Utilitario.ConverterEmData(item.contactStartedDate);
                        ocorrencia.DataFinalAtendimento  = Util.Utilitario.ConverterEmData(item.contactFinishedDate);
                        ocorrencia.StatusAtendimentoChat = item.contactState;
                        ocorrencia.TempoNaFilaChat       = item.customerInQueueTime;
                        ocorrencia.TempoAtendimentoAtivo = item.agentServingTime;
                        ocorrencia.DuracaoAtendimento    = item.contactTotalTime;
                        foreach (var formulario in item.formAnswers)
                        {
                            ocorrencia.FormularioAtendimento = "Questão: " + formulario.question + "\n" + "Resposta:" + formulario.answer + "\n";
                        }
                        foreach (var nota in item.ratings)
                        {
                            ocorrencia.NotaPesquisa = Convert.ToInt32(nota.answer);
                        }

                        if (Settings.Default.HabilitarLog == false)
                        {
                            Console.WriteLine("** Atualizando Ocorrencia **");
                        }


                        if (reaberta == true) // Entrou no if de cancelada e resolvida
                        {
                            ocorrencia.ManterAberto = false;
                            reaberta = false;
                            ocorrencia.Atualizar();
                        }

                        //Antes de resolver a ocorrência, precisa preencher a resolução
                        SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(OrganizationName, IsOffline)
                        {
                            DataHoraConclusao = DateTime.Now,
                            Nome         = "Rotina Histórico do chat",
                            OcorrenciaId = ocorrencia.Id
                        };

                        //Fecha a ocorrência, caso ela já estivesse fechada.
                        if (ocorrenciaEstavaFechada)
                        {
                            (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.FecharOcorrencia(ocorrencia, solucaoOcorrencia);
                        }


                        if (Settings.Default.HabilitarLog == false)
                        {
                            Console.WriteLine("** Gravando Data do Atendimento **");
                        }

                        if (Settings.Default.HabilitarLog == false)
                        {
                            Console.WriteLine("** Registrando Conversa no CRM **");
                        }

                        try
                        {
                            RegistrarConversaCRM(item.protocolNumber, ocorrencia);
                        }
                        catch (System.Exception e)
                        {
                            Console.WriteLine("--Atendimento nº " + item.protocolNumber + " não foi possivel atualizar atendimento, " + e.Message + "!");
                        }
                    }
                    GravaDataAtendimento(Util.Utilitario.ConverterEmData(item.onSystemDate).ToString());
                }
            }
            //Entra no catch caso encontre alguma inconsistência na execução de atualização de informações da ocorrencia
            catch (Exception ex)
            {
                SDKore.Helper.Error.Create("AtualizarAtendimentoChat: " + ex.Message, System.Diagnostics.EventLogEntryType.Error);
                Console.WriteLine("Erro a executar a aplicação");
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.WriteLine();
                Console.WriteLine("******************************************************************************");
                Console.WriteLine("                          Fim da execução");
                if (Settings.Default.HabilitarLog)
                {
                    Console.SetOut(oldOut);
                    writer.Close();
                    ostrm.Close();
                }
            }
        }
Exemple #4
0
        public string GeraExtratoASTEC(DateTime data)
        {
            string retorno = "Extrato;OcorrenciaId;AvulsoId;ValorServico;%NL%";

            //Lista as contas que estiverem para gerar extrato na data passada
            var contas = RepositoryService.Conta.ListarContasAstec(data);

            if (contas.Count == 0)
            {
                return("");
            }

            foreach (var conta in contas)
            {
                var ocorrencias = RepositoryService.Ocorrencia.ListarPorAutorizada(conta.Id);                                //Lista as ocorrências para gerar o extrato
                var listaLancamentoAvulsoDoExtrato = RepositoryService.LancamentoAvulsoDoExtrato.ListarSemExtratoPor(conta); //Lista todos os itens do lançamento avulso

                string  numeroExtrato = conta.CodigoMatriz + string.Format("{0:yyyyMMdd}", data);
                Extrato extrato       = RepositoryService.Extrato.ObterPor(numeroExtrato);

                if ((ocorrencias.Count > 0 || listaLancamentoAvulsoDoExtrato.Count > 0) && extrato == null)
                {
                    extrato = new Extrato(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
                    {
                        Numero       = numeroExtrato,
                        Nome         = numeroExtrato,
                        AutorizadaId = new Lookup(conta.Id, "account"),
                        Autorizada   = conta
                    };
                    extrato.Id = RepositoryService.Extrato.Create(extrato);
                }

                foreach (Ocorrencia item in ocorrencias)
                {
                    Ocorrencia ocorrenciaTemp = new Ocorrencia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline);
                    ocorrenciaTemp.Id = item.Id;
                    ocorrenciaTemp.ReferenciaExtratoPagamentoId = new Lookup(extrato.Id, "new_extrato_pagamento_ocorrencia");
                    if (item.RazaoStatus == (int)StatusDaOcorrencia.Reprovada)
                    {
                        ocorrenciaTemp.ValorServico = 0;
                    }
                    SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline)
                    {
                        DataHoraConclusao = DateTime.Now,
                        Nome         = "Rotina de Extrato de pagamento",
                        OcorrenciaId = item.Id
                    };

                    try
                    {
                        retorno += extrato.Numero + ";" + item.Id.ToString() + ";-;" + item.ValorServico.ToString() + ";%NL%";
                        RepositoryService.Ocorrencia.Update(ocorrenciaTemp);
                        RepositoryService.Ocorrencia.FecharOcorrencia(item, solucaoOcorrencia);
                    }
                    catch (Exception ex) { }
                }

                foreach (LancamentoAvulsoDoExtrato itemLancamentoAvulsoDoExtrato in listaLancamentoAvulsoDoExtrato)
                {
                    itemLancamentoAvulsoDoExtrato.ExtratoId = new Lookup(extrato.Id, "new_extrato_pagamento_ocorrencia");
                    RepositoryService.LancamentoAvulsoDoExtrato.Update(itemLancamentoAvulsoDoExtrato);
                    retorno += extrato.Numero + ";-;" + itemLancamentoAvulsoDoExtrato.Id.ToString() + ";" + itemLancamentoAvulsoDoExtrato.Valor.ToString() + ";%NL%";
                }

                if (extrato != null)
                {
                    extrato.RazaoStatus = 1; //Aguardando Análise Intelbras
                    extrato.AtualizarValor();
                    RepositoryService.Extrato.Update(extrato);
                    retorno += extrato.Numero + ";ValorTotal;-;" + extrato.ValorTotal.ToString() + ";%NL%";
                }
            }
            return(retorno);
        }