public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { usuarioIntegracao = usuario; var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0124>(mensagem)); List <Pollux.Entities.RelacionamentoCanal> lstPolluxRelCanal = new List <Pollux.Entities.RelacionamentoCanal>(); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0124R1>(numeroMensagem, retorno)); } List <RelacionamentoCanal> lstRelacionamentoCanal = new Servicos.RelacionamentoCanalService(this.Organizacao, this.IsOffline).ListarAtivosPorCanal(objeto.Canal.Id); if (lstRelacionamentoCanal != null && lstRelacionamentoCanal.Count > 0) { foreach (RelacionamentoCanal item in lstRelacionamentoCanal) { Pollux.Entities.RelacionamentoCanal relCanal = new Pollux.Entities.RelacionamentoCanal(); if (item.Assistente != null) { Usuario objUsuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(item.Assistente.Id); if (objUsuario != null) { relCanal.CodigoAssistente = (int)objUsuario.CodigoAssistenteComercial; relCanal.NomeAssistente = item.Assistente.Name; relCanal.CodigoAssistenteCRM = objUsuario.ID.Value.ToString(); } if (item.KeyAccount != null) { Contato contato = new Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(item.KeyAccount.Id); if (contato != null && contato.CodigoRepresentante != null && (!String.IsNullOrEmpty(contato.CodigoRepresentante) && (!contato.CodigoRepresentante.Equals("0")) && contato.PrimeiroNome != null && (!String.IsNullOrEmpty(contato.PrimeiroNome)))) { relCanal.CodigoRepresentante = Convert.ToInt32(contato.CodigoRepresentante); relCanal.NomeRepresentante = contato.PrimeiroNome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Erro de inconsistência de dados no Crm. Elemento 'NomeRepresentante / CodigoRepresentante' não preenchido na base Crm para o RelacionamentoCanal - " + item.ID.Value.ToString(); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0124R1>(numeroMensagem, retorno)); } } if (item.Supervisor != null) { Usuario usuarioSuper = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).ObterPor(item.Supervisor.Id); if (usuarioSuper != null) { relCanal.CodigoSupervisor = item.Supervisor.Id.ToString(); relCanal.NomeSupervisor = usuarioSuper.Nome; if (!String.IsNullOrEmpty(usuarioSuper.CodigoSupervisorEMS)) { relCanal.CodigoSupervisorEMS = usuarioSuper.CodigoSupervisorEMS; } else { throw new Exception("Codigo Supervisor EMS não preenchido."); } } } if (item.DataInicial.HasValue) { relCanal.DataInicial = item.DataInicial.Value; } if (item.DataFinal.HasValue) { relCanal.DataFinal = item.DataFinal.Value; } //Nome Obrigatorio if (!String.IsNullOrEmpty(item.Nome)) { relCanal.Nome = item.Nome; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Erro de inconsistência de dados no Crm. Elemento 'Nome' não preenchido na base Crm para o RelacionamentoCanal - " + item.ID.Value.ToString(); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0124R1>(numeroMensagem, retorno)); } } relCanal.CodigoRelacionamentoCanal = item.ID.ToString(); lstPolluxRelCanal.Add(relCanal); } } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Não encontrado RelacionamentoCanal para este Canal no CRM."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0124R1>(numeroMensagem, retorno)); } resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso."; retorno.Add("RelacionamentosCanalItens", lstPolluxRelCanal); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0124R1>(numeroMensagem, retorno)); }
public bool CriarTarefa(Lookup referenteA, string tiposolicitacaonome, string descricao, string ParecerAnterior, ParticipantesDoProcesso PartProcesso) { Guid idProprietario = Guid.Empty; string tipoProprietario = ""; Model.Tarefa task = new Model.Tarefa(NomeDaOrganizacao, _isOffline); Model.SolicitacaoBeneficio tmpSolBen = new SolicitacaoBeneficio(NomeDaOrganizacao, _isOffline); Model.SolicitacaoCadastro tmpSolCad = new SolicitacaoCadastro(NomeDaOrganizacao, _isOffline); List <RelacionamentoCanal> lstRelacionamento = new List <RelacionamentoCanal>(); task.Assunto = "Plugin - " + referenteA.Name; task.ReferenteA = new Lookup(referenteA.Id, referenteA.Type); task.Assunto = PartProcesso.Papel.Name + " - " + tiposolicitacaonome; task.Ordem = PartProcesso.Ordem; task.PareceresAnteriores = ParecerAnterior; task.DescricaoSolicitacao = descricao; task.Conclusao = DateTime.Now.AddDays(1).AddHours(3); TipoDeAtividade tmpTipoDeAtividade = RepositoryService.TipoDeAtividade.ObterPorPapel(PartProcesso.Papel.Id); if (tmpTipoDeAtividade == null) { throw new ArgumentException("Tipo de Atividade do Participante Não Encontrado! : " + PartProcesso.Papel.Name + " : " + PartProcesso.Papel.Id.ToString()); } if (tmpTipoDeAtividade.ID.HasValue) { task.TipoDeAtividade = new Lookup(tmpTipoDeAtividade.ID.Value, "itbc_tipoatividade"); } if (PartProcesso.Equipe != null) { idProprietario = PartProcesso.Equipe.Id; tipoProprietario = PartProcesso.Equipe.Type; } if (PartProcesso.Usuario != null) { idProprietario = PartProcesso.Usuario.Id; tipoProprietario = PartProcesso.Usuario.Type; } if (PartProcesso.Contato != null) { idProprietario = PartProcesso.Contato.Id; tipoProprietario = PartProcesso.Contato.Type; } if (PartProcesso.PapelNoCanal.HasValue) { if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower())) { tmpSolCad = RepositoryService.SolicitacaoCadastro.Retrieve(referenteA.Id); lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolCad.Canal.Id); } if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower())) { tmpSolBen = RepositoryService.SolicitacaoBeneficio.Retrieve(referenteA.Id); lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolBen.Canal.Id); } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.DiretorDeUnidade) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null) { throw new ArgumentException("Diretor da Unidade Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } //Descemos mais um nivel para pegar o gerente do gerente _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(_usuario.Gerente.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } idProprietario = _usuario.Gerente.Id; tipoProprietario = _usuario.Gerente.Type; } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.GerenteNacionalGerenteDeDistribuicao) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null) { throw new ArgumentException("Gerente Nacional Gerente De Distribuicao Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id); if (_usuario == null) { throw new ArgumentException("Não foi encontrado o usuário."); } if (_usuario.Gerente == null) { throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada."); } idProprietario = _usuario.Gerente.Id; tipoProprietario = _usuario.Gerente.Type; } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.KeyAccountRepresentante) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null) { idProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id; tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type; } else { throw new ArgumentException("Key Account Representante Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } } if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.SupervisorDeVendas) { if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null) { idProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id; tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type; } else { throw new ArgumentException("Supervisor De Vendas Não encontrado. Não é possivel criar o próximo passo de Tarefa!"); } } } Guid idTask = RepositoryService.Tarefa.Create(task); if (idTask != Guid.Empty) { new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro(tipoProprietario, idProprietario, "task", idTask); } return(true); }