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); }
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)); }
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); }