public void AtualizarBeneficiosECompromissosCascata(CompromissosDoCanal CompromissoTarget)
        {
            Guid?   UnidadeNeg    = null;
            Guid?   Classificacao = null;
            Guid?   Categoria     = null;
            Boolean?Exclusividade = null;

            if (CompromissoTarget.Canal == null)
            {
                throw new ArgumentException("Campo canal não preenchido");
            }

            Domain.Model.Conta canal = new Domain.Servicos.ContaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                       .BuscaConta(CompromissoTarget.Canal.Id);

            if (canal != null)
            {
                if (CompromissoTarget.UnidadeDeNegocio != null)
                {
                    UnidadeNeg = CompromissoTarget.UnidadeDeNegocio.Id;
                }

                if (canal.Classificacao != null)
                {
                    Classificacao = canal.Classificacao.Id;
                }

                Domain.Model.CategoriasCanal categoriaCanal = new Domain.Servicos.CategoriaCanalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                                              .ListarPor(canal.ID.Value, UnidadeNeg).FirstOrDefault();

                if (categoriaCanal != null && categoriaCanal.Categoria != null)
                {
                    Categoria = categoriaCanal.Categoria.Id;
                }

                if (canal.Exclusividade != null)
                {
                    Exclusividade = canal.Exclusividade.Value;
                }

                Domain.Model.Perfil perfil = new Intelbras.CRM2013.Domain.Servicos.PerfilServices(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarPerfil(Classificacao, UnidadeNeg, Categoria, Exclusividade);

                if (perfil != null)
                {
                    List <Domain.Model.BeneficiosCompromissos> benefCompr = new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscaBeneficiosCompromissos(perfil.ID.Value, CompromissoTarget.Compromisso.Id, null);

                    if (benefCompr != null && benefCompr.Count > 0)
                    {
                        foreach (Domain.Model.BeneficiosCompromissos item in benefCompr)
                        {
                            bool   flagAtualizarBeneficio = true;
                            Lookup statusBenef            = (Lookup) new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                                            .BuscarBeneficioCorrespondentePorCodigoStatus(item, CompromissoTarget.StatusCompromisso.Id);

                            if (statusBenef != null)
                            {
                                if (statusBenef.Name != Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido)
                                {
                                    //fluxo alternativo 1
                                    List <Domain.Model.BeneficiosCompromissos> benefComprAlternativo = new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscaBeneficiosCompromissos(perfil.ID.Value, null, item.Beneficio.Id);
                                    if (benefComprAlternativo.Count > 0)
                                    {
                                        List <BeneficiosCompromissos> lstDoBeneficio = new List <BeneficiosCompromissos>();// benefComprAlternativo.Where(x => x.Compromisso != CompromissoTarget.Compromisso).ToList<BeneficiosCompromissos>();
                                        foreach (var _benefCompro in benefComprAlternativo)
                                        {
                                            if (_benefCompro.Compromisso != null && _benefCompro.Compromisso.Id != CompromissoTarget.Compromisso.Id)
                                            {
                                                lstDoBeneficio.Add(_benefCompro);
                                            }
                                        }

                                        foreach (Domain.Model.BeneficiosCompromissos registro in lstDoBeneficio)
                                        {
                                            if (registro.Compromisso == null)
                                            {
                                                throw new ArgumentException("Beneficio x Compromisso do Perfil : " + perfil.Nome + " configurado incorretamente , campo compromisso vazio.Operação cancelada.");
                                            }

                                            Domain.Model.CompromissosDoCanal comproCanal = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                                                                           .BuscarCompromissoCanal(registro.Compromisso.Id, UnidadeNeg.Value, canal.ID.Value);

                                            if (comproCanal != null)
                                            {
                                                if (comproCanal.StatusCompromisso != null && comproCanal.StatusCompromisso.Name == Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido)
                                                {
                                                    flagAtualizarBeneficio = false;
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("O compromisso " + registro.Compromisso.Name + " não existe para este Canal");
                                            }
                                        }
                                    }
                                }
                                if (flagAtualizarBeneficio)
                                {
                                    Domain.Model.BeneficioDoCanal benefCanal = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                                                               .BuscarBeneficioCanal(item.Beneficio.Id, UnidadeNeg.Value, canal.ID.Value);
                                    benefCanal.StatusBeneficio = statusBenef;
                                    new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).AlterarBeneficioCanal(benefCanal);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #2
0
        public void TestePluginMonitoramento()
        {
            Domain.Model.CompromissosDoCanal CompromissoTarget = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline)
                                                                 .BuscarPorGuid(new Guid("2612525C-1432-E411-940F-00155D013D31"));

            //perfil = B1486E56-13F6-E311-91F5-00155D013E44
            //check if status changed on plugin
            Guid?   UnidadeNeg    = null;
            Guid?   Classificacao = null;
            Guid?   Categoria     = null;
            Boolean?Exclusividade = null;

            Domain.Model.Conta canal = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline)
                                       .BuscaConta(CompromissoTarget.Canal.Id);

            if (canal != null)
            {
                if (CompromissoTarget.UnidadeDeNegocio != null)
                {
                    UnidadeNeg = CompromissoTarget.UnidadeDeNegocio.Id;
                }

                if (canal.Classificacao != null)
                {
                    Classificacao = canal.Classificacao.Id;
                }

                Domain.Model.CategoriasCanal categoriaCanal = new Domain.Servicos.CategoriaCanalService(this.OrganizationName, this.IsOffline)
                                                              .ListarPor(canal.ID.Value, UnidadeNeg).FirstOrDefault();

                if (categoriaCanal != null && categoriaCanal.Categoria != null)
                {
                    Categoria = categoriaCanal.Categoria.Id;
                }

                if (canal.Exclusividade != null)
                {
                    Exclusividade = canal.Exclusividade.Value;
                }

                Domain.Model.Perfil perfil = new Intelbras.CRM2013.Domain.Servicos.PerfilServices(this.OrganizationName, this.IsOffline).BuscarPerfil(Classificacao, UnidadeNeg, Categoria, Exclusividade);

                if (perfil != null)
                {
                    List <Domain.Model.BeneficiosCompromissos> benefCompr = new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(this.OrganizationName, this.IsOffline).BuscaBeneficiosCompromissos(perfil.ID.Value, CompromissoTarget.Compromisso.Id, null);

                    if (benefCompr.Count > 0)
                    {
                        foreach (Domain.Model.BeneficiosCompromissos item in benefCompr)
                        {
                            bool   flagAtualizarBeneficio = true;
                            Lookup statusBenef            = (Lookup) new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(this.OrganizationName, this.IsOffline)
                                                            .BuscarBeneficioCorrespondentePorCodigoStatus(item, CompromissoTarget.StatusCompromisso.Id);

                            if (statusBenef != null)
                            {
                                if (statusBenef.Name != Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido)
                                {
                                    //fluxo alternativo 1
                                    List <Domain.Model.BeneficiosCompromissos> benefComprAlternativo = new Intelbras.CRM2013.Domain.Servicos.BeneficiosCompromissosService(this.OrganizationName, this.IsOffline).BuscaBeneficiosCompromissos(perfil.ID.Value, null, item.Beneficio.Id);
                                    if (benefComprAlternativo.Count > 0)
                                    {
                                        foreach (Domain.Model.BeneficiosCompromissos registro in benefComprAlternativo)
                                        {
                                            Domain.Model.CompromissosDoCanal comproCanal = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline)
                                                                                           .BuscarCompromissoCanal(registro.Compromisso.Id, UnidadeNeg.Value, canal.ID.Value);

                                            if (comproCanal != null)
                                            {
                                                if (comproCanal.StatusCompromisso.Name == Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido)
                                                {
                                                    flagAtualizarBeneficio = false;
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                throw new ArgumentException("O compromisso " + registro.Compromisso.Name + " não existe para este Canal");
                                            }
                                        }
                                    }
                                }
                                if (flagAtualizarBeneficio)
                                {
                                    Domain.Model.BeneficioDoCanal benefCanal = new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(this.OrganizationName, this.IsOffline)
                                                                               .BuscarBeneficioCanal(item.Beneficio.Id, UnidadeNeg.Value, canal.ID.Value);
                                    benefCanal.StatusBeneficio = statusBenef;
                                    new Intelbras.CRM2013.Domain.Servicos.BeneficioDoCanalService(this.OrganizationName, this.IsOffline).AlterarBeneficioCanal(benefCanal);
                                }
                            }
                        }
                    }
                }
            }
        }