Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }