示例#1
0
        public Ocorrencia DefinirPropriedades(Intelbras.Message.Helper.MSG0279 xml)
        {
            var crm = new Model.Ocorrencia(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            if (!String.IsNullOrEmpty(xml.CodigoOcorrencia))
            {
                Ocorrencia ocorrencia = new Servicos.OcorrenciaService(this.Organizacao, this.IsOffline).BuscaOcorrencia(new Guid(xml.CodigoOcorrencia));
                if (ocorrencia != null)
                {
                    crm = ocorrencia;
                    if (!string.IsNullOrEmpty(xml.Foto))
                    {
                        Anotacao anotacao = new Anotacao();
                        anotacao.Assunto             = "Anexo";
                        anotacao.EntidadeRelacionada = new Lookup(ocorrencia.Id, "incident");
                        anotacao.Body         = xml.Foto;
                        anotacao.Tipo         = xml.ExtensaoArquivo;
                        anotacao.NomeArquivos = xml.Nome + "." + xml.ExtensaoArquivo;
                        try
                        {
                            anotacao.Texto = "A operação foi concluida com sucesso.";
                            new RepositoryService().Anexo.Create(anotacao);
                        }
                        catch (Exception ex)
                        {
                            anotacao.Texto = ex.Message;
                            new RepositoryService().Anexo.Create(anotacao);
                        }
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoOcorrencia informado não existe para ser atualizado.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoOcorrencia é obrigatório.";
                return(crm);
            }

            #endregion

            return(crm);
        }
示例#2
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0278>(mensagem);

            List <Intelbras.Message.Helper.Entities.OcorrenciaItem> lstOcorrenciaItem = new List <Pollux.Entities.OcorrenciaItem>();

            if (!xml.DataInicial.HasValue || !xml.DataFinal.HasValue)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "É necessário informar os 2 critérios de busca para a consulta.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0278R1>(numeroMensagem, retorno));
            }

            List <Ocorrencia> lstOcorrencias = new Servicos.OcorrenciaService(this.Organizacao, this.IsOffline).ListarOcorrenciasPorDataCriacao(xml.DataInicial, xml.DataFinal);

            #region Lista

            if (lstOcorrencias != null && lstOcorrencias.Count > 0)
            {
                foreach (Ocorrencia crmItem in lstOcorrencias)
                {
                    Pollux.Entities.OcorrenciaItem objPollux = new Pollux.Entities.OcorrenciaItem();

                    //Atualizar o campo que atualiza o portal operações e suporte quando a flag estiver setado como true
                    if (crmItem.AtualizarOperacoesSuporte == true)
                    {
                        crmItem.AtualizarOperacoesSuporte = false;
                        crmItem.Atualizar();
                    }

                    objPollux.CodigoOcorrencia = crmItem.ID.Value.ToString();
                    if (!string.IsNullOrEmpty(crmItem.Numero))
                    {
                        objPollux.NumeroOcorrencia = crmItem.Numero;
                    }
                    if (crmItem.RazaoStatus.HasValue)
                    {
                        objPollux.StatusOcorrencia = crmItem.RazaoStatus;
                    }
                    if (crmItem.PrioridadeValue.HasValue)
                    {
                        objPollux.PrioridadeOcorrencia = crmItem.PrioridadeValue;
                    }
                    if (crmItem.TipoDeOcorrencia.HasValue)
                    {
                        objPollux.TipoOcorrencia = crmItem.TipoDeOcorrencia;
                    }
                    if (!string.IsNullOrEmpty(crmItem.DefeitoAlegado))
                    {
                        objPollux.DefeitoAlegado = crmItem.DefeitoAlegado;
                    }
                    if (!string.IsNullOrEmpty(crmItem.AtividadeExecutada))
                    {
                        objPollux.AtividadeExecutada = crmItem.AtividadeExecutada;
                    }
                    if (!string.IsNullOrEmpty(crmItem.Anexo))
                    {
                        objPollux.Observacao = crmItem.Anexo;
                    }
                    if (crmItem.DataPrevistaParaVisita.HasValue)
                    {
                        objPollux.DataHoraPrevistaVisita = crmItem.DataPrevistaParaVisita.Value.ToLocalTime();
                    }
                    if (crmItem.DataInicioTecnico.HasValue)
                    {
                        objPollux.DataHoraChegadaTecnico = crmItem.DataInicioTecnico.Value.ToLocalTime();
                    }
                    if (crmItem.DataSaidaTecnico.HasValue)
                    {
                        objPollux.DataHoraSaidaTecnico = crmItem.DataSaidaTecnico.Value.ToLocalTime();
                    }
                    if (crmItem.DataDeConclusao.HasValue)
                    {
                        objPollux.DataHoraConclusao = crmItem.DataDeConclusao.Value.ToLocalTime();
                    }
                    if (crmItem.DataEscalacao.HasValue)
                    {
                        objPollux.DataHoraEscalacao = crmItem.DataEscalacao.Value.ToLocalTime();
                    }
                    if (crmItem.DataOrigem.HasValue)
                    {
                        objPollux.DataHoraAbertura = crmItem.DataOrigem.Value.ToLocalTime();
                    }
                    if (crmItem.ModificadoEm.HasValue)
                    {
                        objPollux.DataHoraModificacao = crmItem.ModificadoEm.Value.ToLocalTime();
                    }
                    if (crmItem.DataSLA.HasValue)
                    {
                        objPollux.TempoSLA = crmItem.DataSLA.Value.ToLocalTime();
                    }
                    if (!string.IsNullOrEmpty(crmItem.OsCliente))
                    {
                        objPollux.OrdemServicoCliente = crmItem.OsCliente;
                    }
                    if (crmItem.SolicitanteId != null)
                    {
                        objPollux.CodigoContato = crmItem.SolicitanteId.Id.ToString();
                    }

                    Usuario proprietario = new Domain.Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("incident", "incidentid", crmItem.ID.Value);

                    if (proprietario != null)
                    {
                        objPollux.NomeProprietario = proprietario.NomeCompleto;
                    }
                    if (crmItem.ClienteId != null)
                    {
                        objPollux.CodigoConta = crmItem.ClienteId.Id.ToString();
                        Conta conta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(crmItem.ClienteId.Id);
                        if (conta != null)
                        {
                            objPollux.RazaoSocialConta = conta.RazaoSocial;

                            if (conta.CpfCnpj != null)
                            {
                                objPollux.CNPJConta = conta.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                        }
                    }
                    if (crmItem.EmpresaExecutanteId != null)
                    {
                        objPollux.CodigoEmpresaExecutante = crmItem.EmpresaExecutanteId.Id.ToString();
                        Conta empresaexecutante = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(crmItem.EmpresaExecutanteId.Id);
                        if (empresaexecutante != null)
                        {
                            objPollux.RazaoSocialEmpresaExecutante = crmItem.EmpresaExecutante.RazaoSocial;
                            if (objPollux.CNPJEmpresaExecutante != null)
                            {
                                objPollux.CNPJEmpresaExecutante = crmItem.EmpresaExecutante.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                        }
                    }
                    if (crmItem.TecnicoDaVisitaId != null)
                    {
                        objPollux.TecnicoResponsavel = crmItem.TecnicoDaVisitaId.Id.ToString();
                        Contato tecnico = new Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(crmItem.TecnicoDaVisitaId.Id);
                        if (tecnico != null)
                        {
                            objPollux.NomeContato = tecnico.NomeCompleto;
                            if (!string.IsNullOrEmpty(crmItem.TecnicoDaVisita.CpfCnpj))
                            {
                                objPollux.CPF = crmItem.TecnicoDaVisita.CpfCnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                            }
                            if (!string.IsNullOrEmpty(crmItem.TecnicoDaVisita.IMEI))
                            {
                                objPollux.IMEI = crmItem.TecnicoDaVisita.IMEI;
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(crmItem.ContatoVisita))
                    {
                        objPollux.ContatoVisita = crmItem.ContatoVisita;
                    }
                    if (crmItem.MarcaId != null)
                    {
                        objPollux.CodigoMarca = crmItem.MarcaId.Id.ToString();
                        objPollux.NomeMarca   = crmItem.MarcaId.Name;
                    }
                    if (crmItem.ModeloId != null)
                    {
                        objPollux.CodigoModelo = crmItem.ModeloId.Id.ToString();
                        objPollux.NomeModelo   = crmItem.ModeloId.Name;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Rua))
                    {
                        objPollux.Logradouro = crmItem.Rua;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Bairro))
                    {
                        objPollux.Bairro = crmItem.Bairro;
                    }

                    if (!string.IsNullOrEmpty(crmItem.Cidade))
                    {
                        objPollux.NomeCidade = crmItem.Cidade;
                    }

                    if (!string.IsNullOrEmpty(crmItem.ProdutosDoCliente))
                    {
                        objPollux.NumeroSerieProduto = crmItem.ProdutosDoCliente.Trim();
                    }

                    lstOcorrenciaItem.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.MSG0278R1>(numeroMensagem, retorno));
            }

            #endregion
            resultadoPersistencia.Sucesso  = true;
            resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
            retorno.Add("OcorrenciaItens", lstOcorrenciaItem);
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0278R1>(numeroMensagem, retorno));
        }
示例#3
0
        public Ocorrencia DefinirPropriedades(Intelbras.Message.Helper.MSG0277 xml)
        {
            var crm = new Model.Ocorrencia(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            if (!String.IsNullOrEmpty(xml.CodigoOcorrencia))
            {
                Ocorrencia ocorrencia = new Servicos.OcorrenciaService(this.Organizacao, this.IsOffline).BuscaOcorrencia(new Guid(xml.CodigoOcorrencia));
                if (ocorrencia != null)
                {
                    crm.Id = new Guid(xml.CodigoOcorrencia);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoOcorrencia informado não existe para ser atualizado.";
                    return(crm);
                }
                if (ocorrencia.RazaoStatus == (int)Domain.Enum.StatusDaOcorrencia.Cancelada)
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Ocorrência " + ocorrencia.Numero + " está cancelada.";
                    return(crm);
                }
            }

            if (xml.StatusOcorrencia.HasValue)
            {
                crm.RazaoStatus = xml.StatusOcorrencia;
            }

            if (xml.PrioridadeOcorrencia.HasValue)
            {
                crm.PrioridadeValue = xml.PrioridadeOcorrencia;
            }

            if (xml.TipoOcorrencia.HasValue)
            {
                crm.TipoDeOcorrencia = xml.TipoOcorrencia;
            }

            if (!string.IsNullOrEmpty(xml.DefeitoAlegado))
            {
                crm.DefeitoAlegado = xml.DefeitoAlegado;
            }

            if (!string.IsNullOrEmpty(xml.AtividadeExecutada))
            {
                crm.AtividadeExecutada = xml.AtividadeExecutada;
            }

            if (!string.IsNullOrEmpty(xml.Observacao))
            {
                crm.Anexo = xml.Observacao;
            }

            if (xml.DataHoraPrevistaVisita.HasValue)
            {
                crm.DataPrevistaParaVisita = xml.DataHoraPrevistaVisita;
            }

            if (xml.DataHoraChegadaTecnico.HasValue)
            {
                crm.DataInicioTecnico = xml.DataHoraChegadaTecnico;
            }

            if (xml.DataHoraSaidaTecnico.HasValue)
            {
                crm.DataSaidaTecnico = xml.DataHoraSaidaTecnico;
            }

            if (xml.DataHoraConclusao.HasValue)
            {
                crm.DataDeConclusao = xml.DataHoraConclusao;
            }

            if (xml.DataHoraEscalacao.HasValue)
            {
                crm.DataEscalacao = xml.DataHoraEscalacao;
            }

            if (xml.TempoSLA.HasValue)
            {
                crm.DataSLA = xml.TempoSLA;
            }

            if (!string.IsNullOrEmpty(xml.OrdemServicoCliente))
            {
                crm.OsCliente = xml.OrdemServicoCliente;
            }

            if (!string.IsNullOrEmpty(xml.CodigoContato))
            {
                Contato contato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoContato));
                if (contato != null)
                {
                    crm.SolicitanteId = new Lookup(contato.ID.Value, "contact");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoContato não encontrado no Crm.";
                    return(crm);
                }
            }

            if (!string.IsNullOrEmpty(xml.CodigoConta))
            {
                Conta cliente = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoConta));
                if (cliente != null)
                {
                    crm.ClienteId = new Lookup(cliente.ID.Value, "account");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoConta não encontrado no Crm.";
                    return(crm);
                }
            }

            if (!string.IsNullOrEmpty(xml.CodigoEmpresaExecutante))
            {
                Conta empresaexecutante = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoEmpresaExecutante));
                if (empresaexecutante != null)
                {
                    crm.EmpresaExecutanteId = new Lookup(empresaexecutante.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoEmpresaExecutante não encontrado no Crm.";
                    return(crm);
                }
            }

            if (!string.IsNullOrEmpty(xml.TecnicoResponsavel))
            {
                Contato tecnicoresponsavel = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.TecnicoResponsavel));
                if (tecnicoresponsavel != null)
                {
                    //crm.TecnicoResponsavelId = new Lookup(tecnicoresponsavel.ID.Value, ""); Trocado para Técnico da Visita, por solicitação da Silvana - Chamado 133127
                    crm.TecnicoDaVisitaId = new Lookup(tecnicoresponsavel.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "TecnicoResponsavel não encontrado no Crm.";
                    return(crm);
                }
            }

            if (!string.IsNullOrEmpty(xml.Logradouro))
            {
                crm.Rua = xml.Logradouro;
            }

            if (!string.IsNullOrEmpty(xml.Bairro))
            {
                crm.Bairro = xml.Bairro;
            }

            if (!string.IsNullOrEmpty(xml.NomeCidade))
            {
                crm.Cidade = xml.NomeCidade;
            }

            if (!string.IsNullOrEmpty(xml.UF))
            {
                crm.Estado = xml.UF;
            }

            if (!string.IsNullOrEmpty(xml.DescricaoFCA))
            {
                crm.DescricaoDaMensagemDeIntegracao = xml.DescricaoFCA;
            }

            if (!string.IsNullOrEmpty(xml.ResumoOcorrencia))
            {
                crm.ResumoDaOcorrencia = xml.ResumoOcorrencia;
            }

            if (!string.IsNullOrEmpty(xml.CausaFinal))
            {
                Causa causa = new Intelbras.CRM2013.Domain.Servicos.CausaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CausaFinal));
                if (causa != null)
                {
                    crm.CausaFinal = new Lookup(causa.Id, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CausaFinal não encontrada no Crm.";
                    return(crm);
                }
            }

            if (!string.IsNullOrEmpty(xml.AcaoFinal))
            {
                Acao acao = new Intelbras.CRM2013.Domain.Servicos.AcaoService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.AcaoFinal));
                if (acao != null)
                {
                    crm.AcaoFinal = new Lookup(acao.Id, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "AcaoFinal não encontrada no Crm.";
                    return(crm);
                }
            }

            if (xml.StatusOcorrencia == 993520004) // Atendimento Rejeitado
            {
                Conta      conta         = new Intelbras.CRM2013.Domain.Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.CodigoEmpresaExecutante));
                Ocorrencia ocorrencia    = new Intelbras.CRM2013.Domain.Servicos.OcorrenciaService(this.Organizacao, this.IsOffline).BuscaOcorrencia(new Guid(xml.CodigoOcorrencia));
                string     justificativa = "";
                if (ocorrencia.EmpresaAtendimentoRejeitado == null)
                {
                    if (!string.IsNullOrEmpty(xml.Justificativa))
                    {
                        justificativa = xml.Justificativa;
                    }
                    crm.EmpresaAtendimentoRejeitado = conta.RazaoSocial + " - " + justificativa + " - " + DateTime.Now;
                }
                else
                {
                    if (!string.IsNullOrEmpty(xml.Justificativa))
                    {
                        justificativa = xml.Justificativa;
                    }
                    crm.EmpresaAtendimentoRejeitado += "\r\n" + (conta.RazaoSocial + " - " + justificativa + " - " + DateTime.Now);
                }
                crm.AddNullProperty("EmpresaExecutanteId");
            }

            #endregion

            return(crm);
        }