protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { //if (context.GetStage() != Stage.PreValidation) // return; var e = context.GetContextEntity(); var _service = new Intelbras.CRM2013.Domain.Servicos.AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, null); switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: { Domain.Model.AcessoKonviva mAcessoKonviva = e.Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, userService); //Adicionado verificação preEvent pra poder mudar o nome da entidade if (mAcessoKonviva.Contato == null) { throw new ArgumentException("(CRM) Contato obrigatório"); } Domain.Model.Contato mContato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(mAcessoKonviva.Contato.Id); if (mContato == null) { throw new ArgumentException("(CRM) Contato não encontrado"); } if (!new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline, userService).ValidarExistenciaAcessoExtranet(mAcessoKonviva.Contato.Id)) { throw new ApplicationException("(CRM) Contato não possui acesso na extranet"); } if (!_service.ValidarTipoAcesso(mAcessoKonviva)) { throw new ApplicationException("(CRM) Usuários sem vínculo com a Intelbras não podem criar Acesso no Konviva com Perfil Administrador"); } //Já validamos se o contato existe mesmo na service com o método validarTipoAcesso e.Attributes["itbc_name"] = mContato.NomeCompleto; if (!e.Attributes.Contains("itbc_acaocrm") || e.GetAttributeValue <bool>("itbc_acaocrm") == false) { context.SharedVariables.Add("IntegraKonviva", true); } e.Attributes.Remove("itbc_acaocrm"); break; } case Domain.Enum.Plugin.MessageName.Update: { Guid contatoId; //Domain.Model.AcessoKonviva acessoKonvivaImagem = ((Entity)context.PreEntityImages["imagem"]).Parse<Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, context.UserId); Domain.Model.AcessoKonviva acessoKonvivaImagem = ((Entity)context.GetContextEntityMerge("imagem")).Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, context.UserId); Domain.Model.AcessoKonviva mAcessoKonvivaUpdate = e.Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, userService); //Adicionado verificação preEvent pra poder mudar o nome da entidade if (acessoKonvivaImagem.Contato == null && mAcessoKonvivaUpdate.Contato == null) { throw new ArgumentException("(CRM) Contato obrigatório"); } if (mAcessoKonvivaUpdate.Contato == null) { contatoId = acessoKonvivaImagem.Contato.Id; } else { contatoId = mAcessoKonvivaUpdate.Contato.Id; } Domain.Model.Contato mContatoUpdate = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(contatoId); if (mContatoUpdate == null) { throw new ArgumentException("(CRM) Contato não encontrado"); } if (!_service.ValidarTipoAcesso(acessoKonvivaImagem)) { throw new ApplicationException("(CRM) Usuários sem vínculo com a Intelbras não podem criar Acesso no Konviva com Perfil Administrador"); } //Já validamos se o contato existe mesmo na service validarTipoAcesso e.Attributes["itbc_name"] = mContatoUpdate.NomeCompleto; // SharedVariable para a Integração if (!e.Attributes.Contains("itbc_acaocrm") || e.GetAttributeValue <bool>("itbc_acaocrm") == false) { context.SharedVariables.Add("IntegraKonviva", true); } e.Attributes.Remove("itbc_acaocrm"); break; } } }
public ColaboradorTreinadoCertificado DefinirPropriedades(Intelbras.Message.Helper.MSG0106 xml) { var crm = new ColaboradorTreinadoCertificado(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml if (xml.DataConclusao.HasValue) { crm.DataConclusao = xml.DataConclusao; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "DataConclusao não enviada!"; return(crm); } if (xml.DataValidade.HasValue) { crm.DataValidade = xml.DataValidade; } else { //Se nao enviar datavalidade adicionamos 24meses a data de conclusao crm.DataValidade = crm.DataConclusao.Value.AddMonths(24); } if (xml.Situacao == 1 || xml.Situacao == 0) { crm.Status = xml.Situacao; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Situação não enviada!"; return(crm); } if (xml.StatusAproveitamento.HasValue) { if (xml.StatusAproveitamento != (int)Enum.ColaboradorTreinamentoCertificado.Status.Aprovado && xml.StatusAproveitamento != (int)Enum.ColaboradorTreinamentoCertificado.Status.Pendente && xml.StatusAproveitamento != (int)Enum.ColaboradorTreinamentoCertificado.Status.Reprovado) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Status Aproveitamento não existente."; return(crm); } crm.RazaoStatus = xml.StatusAproveitamento; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Status Aproveitamento não enviado!"; return(crm); } if (xml.IdentificadorTreinamento.HasValue) { TreinamentoCertificacao treinamentoCertif = new Servicos.TreinamentoCertificacaoService(this.Organizacao, this.IsOffline).ObterPor(xml.IdentificadorTreinamento.Value); if (treinamentoCertif != null) { crm.TreinamentoCertificado = new Lookup(treinamentoCertif.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "IdentificadorTreinamento não cadastrado no Crm!"; return(crm); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "IdentificadorTreinamento não enviado!"; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoContato)) { Guid contato; if (!Guid.TryParse(xml.CodigoContato, out contato)) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoConta inválido!"; return(crm); } crm.Contato = new Lookup(contato, ""); Contato contatoObj = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(contato); if (contatoObj == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Contato não encontrado!"; return(crm); } if (!String.IsNullOrEmpty(contatoObj.NomeCompleto)) { crm.Nome = contatoObj.NomeCompleto + " em " + xml.IdentificadorTreinamento.ToString(); } else if (!String.IsNullOrEmpty(contatoObj.PrimeiroNome)) { crm.Nome = contatoObj.PrimeiroNome + " em " + xml.IdentificadorTreinamento.ToString(); } else { crm.Nome = xml.IdentificadorTreinamento.ToString(); } Helper.Truncate(crm.Nome, 100); if (contatoObj.AssociadoA != null && contatoObj.AssociadoA.Type == SDKore.Crm.Util.Utility.GetEntityName <Domain.Model.Conta>().ToLower()) { crm.Canal = new Lookup(contatoObj.AssociadoA.Id, ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoContato não enviado!"; return(crm); } if (xml.IdentificadorMatricula.HasValue) { crm.IdMatricula = xml.IdentificadorMatricula; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "IdentificadorMatricula não enviado!"; return(crm); } #endregion return(crm); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { //if (context.GetStage() != Stage.PreValidation) // return; var e = context.GetContextEntity(); var _service = new Intelbras.CRM2013.Domain.Servicos.AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline, null); var sAcessoExtranetContato = new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline); switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: Domain.Model.AcessoExtranetContato acessoExtranetContatoEmail = e.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService); Contato contatoObj = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContatoEmail.Contato.Id); if (!string.IsNullOrEmpty(contatoObj.Email1)) { Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contatoObj.Email1); if (idContatoEmail != Guid.Empty && idContatoEmail != contatoObj.Id) { throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contatoObj.Email1)); } else { if (new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).ContatoPossuiTodosCamposParaIntegracao(contatoObj)) { contatoObj.IntegrarNoBarramento = true; contatoObj.Update(contatoObj); } else { throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui todos os campos para integração, favor completar o cadastro do contato."); } } } else { throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui e-mail cadastrado, favor completar o cadastro do contato."); } break; #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: var entityTargetUpdate = (Entity)context.PreEntityImages["imagem"]; Domain.Model.AcessoExtranetContato acessoExtranetContatoEmailUpdate = entityTargetUpdate.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService); Contato contatoObjUpdate = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContatoEmailUpdate.Contato.Id); if (!string.IsNullOrEmpty(contatoObjUpdate.Email1)) { Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contatoObjUpdate.Email1); if (idContatoEmail != Guid.Empty && idContatoEmail != contatoObjUpdate.Id) { throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contatoObjUpdate.Email1)); } else { if (new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).ContatoPossuiTodosCamposParaIntegracao(contatoObjUpdate)) { contatoObjUpdate.IntegrarNoBarramento = true; contatoObjUpdate.Update(contatoObjUpdate); } else { throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui todos os campos para integração, favor completar o cadastro do contato."); } } } else { throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui e-mail cadastrado, favor completar o cadastro do contato."); } break; #endregion #region SetStateDynamicEntity case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: var entityMerge = context.PreEntityImages["imagem"]; Domain.Model.AcessoExtranetContato acessoExtranetContato = entityMerge.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService); if (acessoExtranetContato.Status == 0) { Contato contato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContato.Contato.Id); Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contato.Email1); if (idContatoEmail != Guid.Empty && idContatoEmail != contato.Id) { throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contato.Email1)); } else { contato.IntegrarNoBarramento = true; contato.Update(contato); } acessoExtranetContato.Status = 1; sAcessoExtranetContato.IntegracaoBarramento(acessoExtranetContato); e.Attributes["itbc_acaocrm"] = true; } break; #endregion } }
public List <KeyValuePair <ExecuteMultipleResponse, ExecuteMultipleRequest> > AtualizarAcessosKonvivaInconsistentes(DateTime dataInicial) { var listaDePara = RepositoryService.DeParaDeUnidadeDoKonviva.ListarPor(new Dictionary <string, object>(), dataInicial, false); var listaAcessosKonviva = new List <AcessoKonviva>(); var listaAcessosKonvivaPadrao = new List <AcessoKonviva>(); var novaListaKonvivaUpdate = new List <AcessoKonviva>(); var novaListaKonvivaAdd = new List <AcessoKonviva>(); var retornosPaginacao = new List <KeyValuePair <ExecuteMultipleResponse, ExecuteMultipleRequest> >(); List <object> deParaUnidadesKonviva = new List <object>(); if (listaDePara.Count > 0) { foreach (var item in listaDePara) { deParaUnidadesKonviva.Add(item.ID.Value); } listaAcessosKonviva = RepositoryService.AcessoKonviva.ListarPor(deParaUnidadesKonviva.ToArray()); var aKService = new AcessoKonvivaService(RepositoryService); #region Correção de entradas de Acesso do Konviva que tiveram critérios alterados foreach (var item in listaAcessosKonviva) { if (item.Contato != null) { var contato = new ContatoService(RepositoryService).BuscaContato(item.Contato.Id); AcessoKonviva akTmp = this.ProcessaAcessoKonviva(contato, item); if (akTmp != null) { novaListaKonvivaUpdate.Add(akTmp); } } } #endregion #region Correção de entradas de acesso padrão do Konviva, avaliando se algum dos novos critérios se enquadram listaDePara = RepositoryService.DeParaDeUnidadeDoKonviva.ListarPor(new Dictionary <string, object>(), dataInicial, true); foreach (var item in listaDePara) { var listaMudar = new List <AcessoKonviva>(); if (item.Categoria != null || item.TipoDeRelacao == null) { listaMudar = RepositoryService.AcessoKonviva.ListarPorCriterioDeParaContas(item, this.unidadeKonvivaPadrao.Value); } else { if (item.PapelNoCanalIntelbras.HasValue) { listaMudar = RepositoryService.AcessoKonviva.ListarPorCriterioDeParaContatos(item, this.unidadeKonvivaPadrao.Value); } } foreach (var itemMudar in listaMudar) { itemMudar.UnidadeKonviva = item.UnidadeDoKonviva; itemMudar.DeParaUnidadeKonviva = new Lookup(item.ID.Value, ""); novaListaKonvivaUpdate.Add(itemMudar); } } #endregion List <AcessoKonviva> acessosTimeout = new List <AcessoKonviva>(); for (int i = 0; i < novaListaKonvivaUpdate.Count; i += 10) { try { retornosPaginacao.Add(RepositoryService.AcessoKonviva.ExecuteMultiple(novaListaKonvivaUpdate.Skip(i).Take(10).ToList(), new UpdateRequest())); } catch (TimeoutException e) { Console.WriteLine("Erro de Timeout nos seguintes GUIDs:"); foreach (var itemTimeout in novaListaKonvivaUpdate.Skip(i).Take(10).ToList()) { Console.WriteLine(itemTimeout.ID.ToString()); } Console.WriteLine("------------------------------------"); acessosTimeout.AddRange(novaListaKonvivaUpdate.Skip(i).Take(10).ToList()); } } for (int i = 0; i < acessosTimeout.Count; i += 10) { try { retornosPaginacao.Add(RepositoryService.AcessoKonviva.ExecuteMultiple(acessosTimeout.Skip(i).Take(10).ToList(), new UpdateRequest())); } catch (TimeoutException e) { Console.WriteLine("Erro de Timeout nos seguintes GUIDs (2a):"); foreach (var itemTimeout in novaListaKonvivaUpdate.Skip(i).Take(10).ToList()) { Console.WriteLine(itemTimeout.ID.ToString()); } Console.WriteLine("------------------------------------"); } } } return(retornosPaginacao); }
public Oportunidade DefinirPropriedades2(Intelbras.Message.Helper.MSG0268 xml, ClientePotencial ClientePotencial) { #region Propriedades Crm->Xml var crm2 = new Servicos.RepositoryService().Oportunidade.BuscarPor(ClientePotencial); if (crm2 != null) { crm2.IntegrarNoPlugin = true; crm2.NumeroProjeto = ClientePotencial.NumeroProjeto; if (!String.IsNullOrEmpty(xml.CodigoRevenda) && xml.CodigoRevenda.Length == 36) { if ((crm2.RevendaIntegrador == null) || (crm2.RevendaIntegrador.Id.ToString() != xml.CodigoRevenda)) { crm2.RevendaIntegrador = new Lookup(new Guid(xml.CodigoRevenda), ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoRevenda não enviado ou fora do padrão (Guid)."; return(crm2); } Contato executivo = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoExecutivo)); if (executivo != null) { if ((crm2.Executivo == null) || (crm2.Executivo.Id != executivo.ID.Value)) { crm2.Executivo = new Lookup(executivo.ID.Value, ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm."; return(crm2); } if (xml.DataEnvioCotacao.HasValue) { crm2.DataEnvioCotacao = xml.DataEnvioCotacao; } else { crm2.DataEnvioCotacao = null; } if (xml.TeveReuniao.HasValue) { crm2.TeveReuniao = xml.TeveReuniao; } else { crm2.TeveReuniao = (Int32)this.PreencherAtributoVazio("int"); } if (xml.DataReuniao.HasValue) { crm2.DataReuniao = xml.DataReuniao; } else { crm2.DataReuniao = null; } if (xml.DataEstimativaAprovacao.HasValue) { crm2.DataEstimativaAprovacao = xml.DataEstimativaAprovacao; } else { crm2.DataEstimativaAprovacao = null; } if (xml.PropostaAprovada.HasValue) { crm2.PropostaAprovada = xml.PropostaAprovada; } else { crm2.PropostaAprovada = (Int32)PreencherAtributoVazio("int"); } if (xml.DataAprovacao.HasValue) { crm2.DataAprovacao = xml.DataAprovacao; } else { crm2.DataAprovacao = null; } if (xml.DataEnvioPedidos.HasValue) { crm2.DataEnvioPedidos = xml.DataEnvioPedidos; } else { crm2.DataEnvioPedidos = null; } if (xml.PedidosFaturados.HasValue) { crm2.PedidosFaturados = xml.PedidosFaturados; } else { crm2.PedidosFaturados = 993520001; } #endregion return(crm2); } return(null); }
public ClientePotencial DefinirPropriedades(Intelbras.Message.Helper.MSG0268 xml) { var crm = new Model.ClientePotencial(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml crm.IntegrarNoPlugin = true; if (!String.IsNullOrEmpty(xml.NumeroProjeto)) { ClientePotencial cliente = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto); if (cliente != null) { crm.NumeroProjeto = xml.NumeroProjeto; crm.StatusValidacao = cliente.StatusValidacao; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "NumeroProjeto informado não existe para ser atualizado."; return(crm); } } if (!String.IsNullOrEmpty(xml.CodigoClientePotencial)) { crm.ID = new Guid(xml.CodigoClientePotencial); } else { crm.RazaoStatus = 993520003; originadoExtranet = true; } if (!String.IsNullOrEmpty(xml.CodigoRevenda) && xml.CodigoRevenda.Length == 36) { crm.RevendaIntegrador = new Lookup(new Guid(xml.CodigoRevenda), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoRevenda não enviado ou fora do padrão (Guid)."; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoDistribuidor) && xml.CodigoDistribuidor.Length == 36) { crm.Distribuidor = new Lookup(new Guid(xml.CodigoDistribuidor), ""); } Contato executivo = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoExecutivo)); if (executivo != null) { crm.Executivo = new Lookup(executivo.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm."; return(crm); } if (!String.IsNullOrEmpty(xml.CNPJCliente)) { crm.Cnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(xml.CNPJCliente); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CNPJCliente não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.RazaoSocial)) { crm.NomeDaEmpresa = xml.RazaoSocial; crm.Topico = xml.RazaoSocial; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "RazaoSocial não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.NomeContatoCliente)) { crm.NomeCompletoDoContato = xml.NomeContatoCliente; if (xml.NomeContatoCliente.Contains(" ")) { crm.PrimeiroNomeDoContato = xml.NomeContatoCliente.Substring(0, xml.NomeContatoCliente.IndexOf(' ')); crm.SobreNomeDoContato = xml.NomeContatoCliente.Substring(xml.NomeContatoCliente.IndexOf(' ') + 1, (xml.NomeContatoCliente.Length - xml.NomeContatoCliente.IndexOf(' ') - 1)); } else { crm.PrimeiroNomeDoContato = xml.NomeContatoCliente; } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "NomeContatoCliente não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.TelefoneContatoCliente)) { crm.TelefoneComercial = xml.TelefoneContatoCliente; crm.TelefoneCelular = xml.TelefoneContatoCliente; } if (!String.IsNullOrEmpty(xml.EmailContatoCliente)) { crm.Email = xml.EmailContatoCliente; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "EmailContatoCliente não enviado."; return(crm); } if (xml.TipoProjeto.HasValue) { crm.TipoProjeto = xml.TipoProjeto; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "TipoProjeto não enviado."; return(crm); } if (xml.EnvolverEngenharia.HasValue) { if (xml.EnvolverEngenharia.Value == 993520000) { crm.EnvolverEngenharia = true; } else { crm.EnvolverEngenharia = false; } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "EnvolverEngenharia não enviado."; return(crm); } if (xml.ReceitaEstimada.HasValue) { crm.ValorEstimado = (decimal)xml.ReceitaEstimada; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "ReceitaEstimada não enviado."; return(crm); } if (xml.DataPrevisaoFechamento.HasValue) { crm.DataEstimada = (DateTime)xml.DataPrevisaoFechamento; crm.DataProximaInteracao = DateTime.Now.AddDays(30); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "DataPrevisaoFechamento não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (unidadeNegocio != null) { crm.UnidadeNegocio = new Lookup(unidadeNegocio.Id, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enencontrado no CRM."; return(crm); } } if (!String.IsNullOrEmpty(xml.DescricaoProjeto)) { crm.Descricao = xml.DescricaoProjeto; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "DescricaoProjeto não enviado ou fora do padrão (Guid)."; return(crm); } if (xml.CotacaoEnviada.HasValue) { crm.CotacaoEnviada = xml.CotacaoEnviada; } if (xml.TipoSolucao.HasValue) { crm.TipoSolucao = xml.TipoSolucao; } else { crm.AddNullProperty("TipoSolucao"); } if (xml.PossivelDuplicidade.HasValue) { crm.PossivelDuplicidade = (bool)xml.PossivelDuplicidade; } #endregion #region Endereco crm.Endereco1CEP = xml.EnderecoClienteFinal.CEP; crm.Endereco1Rua = xml.EnderecoClienteFinal.Logradouro; crm.Endereco1Numero = xml.EnderecoClienteFinal.Numero; if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Complemento)) { crm.Endereco1Complemento = xml.EnderecoClienteFinal.Complemento; } crm.Endereco1Bairro = xml.EnderecoClienteFinal.Bairro; //Cidade if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Cidade)) { Municipio cidade = new Intelbras.CRM2013.Domain.Servicos.MunicipioServices(this.Organizacao, this.IsOffline).BuscaCidade(xml.EnderecoClienteFinal.Cidade); if (cidade != null && cidade.ID.HasValue) { crm.Endereco1Municipioid = new Lookup(cidade.ID.Value, ""); crm.Endereco1Municipio = cidade.Nome; } } //Estado if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Estado)) { Estado estado = new Intelbras.CRM2013.Domain.Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.EnderecoClienteFinal.Estado); if (estado != null && estado.ID.HasValue) { crm.Endereco1Estadoid = new Lookup(estado.ID.Value, ""); } } //Pais if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Pais)) { Pais Pais = new Intelbras.CRM2013.Domain.Servicos.PaisServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoClienteFinal.Pais); if (Pais != null && Pais.ID.HasValue) { crm.Endereco1Pais = new Lookup(Pais.ID.Value, ""); } } #endregion return(crm); }
public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { var xml = this.CarregarMensagem <Pollux.MSG0169>(mensagem); try { Validacao(xml); Guid itemFilaGuid; if (!String.IsNullOrEmpty(xml.CodigoItemFila) && !Guid.TryParse(xml.CodigoItemFila, out itemFilaGuid)) { throw new ArgumentException("(CRM) Código item fila em formato inválido."); } Guid contatoGuid; if (!Guid.TryParse(xml.CodigoContato, out contatoGuid)) { throw new ArgumentException("(CRM) Guid do código do contato em formato inválido."); } Contato contato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(contatoGuid); if (contato == null) { throw new ArgumentException("(CRM) Contato não encontrado."); } Fila fila = new Intelbras.CRM2013.Domain.Servicos.FilaServices(this.Organizacao, this.IsOffline).BuscaFilaPorNome(xml.NomeFilaAtendimento); if (fila == null) { throw new ArgumentException("(CRM) Fila de atendimento não encontrada."); } Guid referenteA; if (xml.Referente == SDKore.Crm.Util.Utility.GetEntityName <Pedido>()) { Pedido pedido = new Intelbras.CRM2013.Domain.Servicos.PedidoService(this.Organizacao, this.IsOffline).BuscaPedidoEMS(xml.NumeroPedido); if (pedido == null) { throw new ArgumentException("(CRM) Pedido não encontrado."); } referenteA = pedido.ID.Value; } else { if (!Guid.TryParse(xml.CodigoObjeto, out referenteA)) { throw new ArgumentException("(CRM) Não foi possível conversa o campo 'CodigoObjeto'."); } } Email email = new Email(this.Organizacao, this.IsOffline); email.De = new Lookup[1]; email.De[0] = new Lookup(contato.ID.Value, "contact"); email.Para = new Lookup[1]; email.Para[0] = new Lookup(fila.ID.Value, "queue"); email.Assunto = xml.Assunto; email.Mensagem = xml.DescricaoEmail; email.ReferenteA = new Lookup(referenteA, xml.Referente); email.Direcao = xml.Direcao.Value == 1; email.ID = new RepositoryService().Email.Create(email); new RepositoryService().Email.AlterarStatus(email.ID.Value, xml.StatusEmail.Value); ItemFila itemFila = new ItemFila(this.Organizacao, this.IsOffline); itemFila.Fila = new Lookup(fila.ID.Value, "queue"); itemFila.Objeto = new Lookup(email.ID.Value, "email"); itemFila.RazaoStatus = 1; itemFila.ID = new RepositoryService().ItemFila.Create(itemFila); resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração realizada com sucesso!"; retorno.Add("CodigoItemFila", itemFila.ID.Value.ToString()); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0169R1>(numeroMensagem, retorno)); } catch (Exception e) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0169R1>(numeroMensagem, retorno)); } }
public RelacionamentoCanal DefinirPropriedades(Intelbras.Message.Helper.MSG0137 xml) { var crm = new RelacionamentoCanal(this.Organizacao, this.IsOffline); #region Propriedades Crm->Xml crm.IntegrarNoPlugin = true; if (!String.IsNullOrEmpty(xml.CodigoRelacionamentoCanal)) { crm.ID = new Guid(xml.CodigoRelacionamentoCanal); } if (!String.IsNullOrEmpty(xml.Nome)) { crm.Nome = xml.Nome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Nome não enviado."; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoConta) && xml.CodigoConta.Length == 36) { crm.Canal = new Lookup(new Guid(xml.CodigoConta), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoConta não enviado ou fora do padrão (Guid)."; return(crm); } Contato keyAccount = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContatoPorCodigoRepresentante(xml.CodigoRepresentante.ToString()); if (keyAccount != null) { crm.KeyAccount = new Lookup(keyAccount.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "keyAccount não encontrado no Crm."; return(crm); } Usuario assistente = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscaPorCodigoAssistente(xml.CodigoAssistente); if (assistente != null) { crm.Assistente = new Lookup(assistente.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Assistente não encontrado no Crm."; return(crm); } if (!String.IsNullOrEmpty(xml.CodigoSupervisor) && xml.CodigoSupervisor.Length == 36) { crm.Supervisor = new Lookup(new Guid(xml.CodigoSupervisor), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Supervisor não encontrado no Crm."; return(crm); } if (crm.DataInicial.HasValue) { xml.DataInicial = crm.DataInicial.Value.ToLocalTime(); } if (crm.DataFinal.HasValue) { xml.DataFinal = crm.DataFinal.Value.ToLocalTime(); } crm.Status = xml.Situacao; #endregion return(crm); }