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