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)); }
public string Executar(string mensagem, string numeroMensagem, Usuario usuario) { var xml = this.CarregarMensagem <Pollux.MSG0293>(mensagem); List <Intelbras.Message.Helper.Entities.PerguntaItem> lstQuestionarioRespostaItem = new List <Pollux.Entities.PerguntaItem>(); //Consultas List <QuestionarioPergunta> lstQuestionarioPergunta = new Servicos.QuestionarioPerguntaServices(this.Organizacao, this.IsOffline).ListarQuestionarioPerguntaPorQuestionario(xml.Questionario); List <QuestionarioResposta> lstRespostasConta = new Servicos.QuestionarioRespostaServices(this.Organizacao, this.IsOffline).ObterREspostaConta(xml.Conta, true); string strMarcas = ""; #region Marcas if (xml.Conta != null) { Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Conta)); if (conta.MarcasEnviadas != null) { strMarcas = conta.MarcasEnviadas; } } #endregion #region Lista if (lstQuestionarioPergunta != null && lstQuestionarioPergunta.Count > 0) { foreach (QuestionarioPergunta crmItem in lstQuestionarioPergunta) { Pollux.Entities.PerguntaItem objPollux = new Pollux.Entities.PerguntaItem(); objPollux.OpcoesResposta = new List <Pollux.Entities.OpcaoRespostaItem>(); QuestionarioGrupoPergunta grupo = new Servicos.QuestionarioGrupoPerguntaServices(this.Organizacao, this.IsOffline).ListarGrupoById(crmItem.Grupo.Id.ToString()); objPollux.CodigoPergunta = crmItem.ID.ToString(); objPollux.NomePergunta = crmItem.Nome; objPollux.TipoPergunta = crmItem.TipoPergunta; objPollux.OrdemPergunta = crmItem.Ordem; objPollux.PesoPergunta = crmItem.Peso; if (grupo != null) { objPollux.NomeGrupo = grupo.Nome; objPollux.GrupoOrdem = grupo.Ordem; } List <QuestionarioOpcao> lstOpcoesResposta = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarQuestionarioOpcaoPor((Guid)crmItem.ID); foreach (QuestionarioOpcao opcaoItem in lstOpcoesResposta) { Pollux.Entities.OpcaoRespostaItem objPolluxOpcao = new Pollux.Entities.OpcaoRespostaItem(); objPolluxOpcao.CodigoOpcao = opcaoItem.ID.ToString(); objPolluxOpcao.NomeOpcao = opcaoItem.Nome; objPolluxOpcao.OrdemOpcao = opcaoItem.Ordem; objPolluxOpcao.PontuacaoResposta = opcaoItem.Pontuacao; var selecionada = lstRespostasConta.Where(s => s.QuestionarioOpcao.Id == opcaoItem.ID).FirstOrDefault <QuestionarioResposta>(); if (selecionada != null) { objPolluxOpcao.ValorResposta = selecionada.Valor; objPolluxOpcao.Selecionada = true; } else { objPolluxOpcao.ValorResposta = 0; objPolluxOpcao.Selecionada = false; } objPollux.OpcoesResposta.Add(objPolluxOpcao); } lstQuestionarioRespostaItem.Add(objPollux); } } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Não foram encontrados registros que satisfaçam os critérios de pesquisa."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0293R1>(numeroMensagem, retorno)); } #endregion resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; retorno.Add("Marcas", strMarcas); retorno.Add("Perguntas", lstQuestionarioRespostaItem); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0293R1>(numeroMensagem, retorno)); }