public void GerarAtividadeChecklist(string nomeAtividade, CompromissosDoCanal ObjCompromisso, Usuario Proprietario) { Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); ParametroGlobal paramGlobal = new Domain.Servicos.ParametroGlobalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider) .ObterFrequenciaAtividadeChecklist(ObjCompromisso.Compromisso.Id); if (paramGlobal != null && paramGlobal.Valor != null) { tarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt32(paramGlobal.Valor)); } else { tarefa.Conclusao = null; } // tarefa.Proprietario = new SDKore.DomainModel.Lookup(Proprietario.Id, Proprietario.Name, Proprietario.Type); tarefa.Assunto = nomeAtividade; Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarTipoTarefa("Checklist"); if (tipoAtividade != null) { tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } tarefa.ReferenteA = new SDKore.DomainModel.Lookup(ObjCompromisso.ID.Value, "itbc_compdocanal"); tarefa.ID = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).Persistir(tarefa); if (tarefa.ID.HasValue) { new Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", Proprietario.Id, "task", tarefa.ID.Value); } }
public void CriarTarefaChecklist(Tarefa tarefa) { if (tarefa.ReferenteA != null && tarefa.ReferenteA.Type.Equals("account")) { return; } var conta = RepositoryService.Conta.Retrieve(tarefa.ReferenteA.Id, "itbc_classificacaoid", "name"); if (conta == null || conta.Classificacao == null) { return; } var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService); var pAtividadeCheckList = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); var pListaAtividades = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor)) { throw new ArgumentException("(CRM) Operação Cancelada. O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor)) { throw new ArgumentException("(CRM) Operação Cancelada. O parâmetro global de Atividade de Checklist (63) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist"); var novaTarefa = new Domain.Model.Tarefa(RepositoryService); novaTarefa.Assunto = "Checklist - " + conta.RazaoSocial; novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account"); novaTarefa.Descricao = pListaAtividades.Valor; if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } tarefaService.Persistir(novaTarefa); Guid idTarefa = tarefaService.Persistir(tarefa); if (idTarefa != Guid.Empty) { Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarProprietario("task", "activityid", tarefa.Id); if (proprietario != null) { new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", proprietario.Id, "task", idTarefa); } } }
public void testeMonitoramento() { string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); Intelbras.CRM2013.Domain.Model.Tarefa imagemTarefa = new Domain.Servicos.TarefaService(organizationName, false).BuscaTarefa(new Guid("463D2AC8-AF48-E411-93F5-00155D013E70")); Intelbras.CRM2013.Domain.Model.Tarefa mTarefa = new Domain.Model.Tarefa(organizationName, false); Domain.Servicos.CompromissosDoCanalService ServiceCompromissosDoCanal = new Domain.Servicos.CompromissosDoCanalService(organizationName, false); Domain.Servicos.StatusCompromissoService StatusCompromissoService = new Domain.Servicos.StatusCompromissoService(organizationName, false); //mTarefa = imagemTarefa; mTarefa.Resultado = null; if (imagemTarefa.TipoDeAtividade.Name.Contains("Checklist")) { if (mTarefa.Resultado.HasValue) { switch (mTarefa.Resultado) { case (int)Domain.Enum.Tarefa.Resultado.Reprovada: Domain.Model.CompromissosDoCanal mCompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(mTarefa.ReferenteA.Id); if (mCompromissoCanal != null) { Domain.Model.StatusCompromissos statusComp = StatusCompromissoService.ObterPorNome("Não cumprido"); if (statusComp != null) { //Só atualiza o status do compromisso se ele for diferente do status que será mudado if (mCompromissoCanal.StatusCompromisso.Id != statusComp.ID.Value) { mCompromissoCanal.StatusCompromisso.Id = statusComp.ID.Value; ServiceCompromissosDoCanal.Atualizar(mCompromissoCanal); } } } break; case (int)Domain.Enum.Tarefa.Resultado.Aprovada: Domain.Model.CompromissosDoCanal mCompromissoCanalAprovado = ServiceCompromissosDoCanal.BuscarPorGuid(mTarefa.ReferenteA.Id); if (mCompromissoCanalAprovado != null) { Domain.Model.StatusCompromissos statusComp = StatusCompromissoService.ObterPorNome("Cumprido"); if (statusComp != null) { //Só atualiza o status do compromisso se ele for diferente do status que será mudado if (mCompromissoCanalAprovado.StatusCompromisso.Id != statusComp.ID.Value) { mCompromissoCanalAprovado.StatusCompromisso.Id = statusComp.ID.Value; ServiceCompromissosDoCanal.Atualizar(mCompromissoCanalAprovado); } } } break; } } } }
public void TestePluginCompromissoCanal() { //Variaveis para criacao da tarefa string assunto = string.Empty; string tipoTarefa = "Pendência do Canal"; DateTime dtConclusao = DateTime.Now; int tipoParametro = (int)Domain.Enum.TipoParametroGlobal.NumeroDiasParaCumprimento; Domain.Model.CompromissosDoCanal compromissoCanalPost = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline) .BuscarPorGuid(new Guid("EA8DD4C0-1432-E411-940F-00155D013D31")); if (compromissoCanalPost.StatusCompromisso != null && compromissoCanalPost.StatusCompromisso.Name == Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido) { //Verifica o tipo de compromisso e muda as variaveis necessarias para criar a tarefa com base no compromisso switch (compromissoCanalPost.Compromisso.Name) { case Domain.Enum.CompromissoCanal.Compromisso.Showroom: assunto = "Envio de evidências de Showroom"; dtConclusao = DateTime.Now.AddMonths(6); break; case Domain.Enum.CompromissoCanal.Compromisso.RenovacaoContatos: case Domain.Enum.CompromissoCanal.Compromisso.Sellout: case Domain.Enum.CompromissoCanal.Compromisso.Documentacao: assunto = compromissoCanalPost.Nome; //Pega a data de conclusao da tarefa nos parametros global com base no nome do tipoParametro + Guid compromisso dtConclusao = DateTime.Now.AddMonths(Convert.ToInt32(new Domain.Servicos.ParametroGlobalService(this.OrganizationName, this.IsOffline) .ObterPor(tipoParametro, null, null, null, null, compromissoCanalPost.Compromisso.Id, null, null).Valor)); break; } Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(this.OrganizationName, this.IsOffline); //Pegamos o canal para verificar o proprietario Domain.Model.Conta canal = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline) .BuscaConta(compromissoCanalPost.Canal.Id); tarefa.Assunto = assunto; Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).BuscarTipoTarefa(tipoTarefa); if (tipoAtividade != null) { tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } tarefa.Conclusao = dtConclusao; tarefa.ReferenteA = new SDKore.DomainModel.Lookup(compromissoCanalPost.ID.Value, "itbc_compdocanal"); tarefa.ID = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).Persistir(tarefa); } }
public void TestePluginSolicitacaoBeneficio() { Domain.Model.SolicitacaoBeneficio SolicitBeneficioPost = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(this.OrganizationName, this.IsOffline) .ObterPor(new Guid("116274FE-DBEF-E311-91F5-00155D013E44")); Domain.Model.SolicitacaoBeneficio SolBeneficioTarget = SolicitBeneficioPost; if (SolBeneficioTarget.BeneficioPrograma != null && SolBeneficioTarget.BeneficioPrograma.Name == "Showroom") { Domain.Model.CompromissosDoCanal compromissoCanal = new Domain.Model.CompromissosDoCanal(this.OrganizationName, this.IsOffline); #region Criacao Compromisso do Canal //Pegamos o canal para verificar o proprietario Domain.Model.Conta canal = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline) .BuscaConta(SolicitBeneficioPost.Canal.Id); compromissoCanal.Canal = new SDKore.DomainModel.Lookup(canal.ID.Value, ""); Domain.Model.CompromissosDoPrograma compromissoPrograma = new Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline) .BuscarCompromissoDoPrograma("Showroom"); compromissoCanal.Compromisso = new SDKore.DomainModel.Lookup(compromissoPrograma.ID.Value, ""); compromissoCanal.Nome = "Ter aderência às regras de utilização de identidade visual/showroom"; compromissoCanal.ID = new Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline).Persistir(compromissoCanal); if (compromissoCanal.ID.HasValue) { Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(this.OrganizationName, this.IsOffline).BuscarProprietario("account", "accountid", canal.Id); if (proprietario != null) { new Domain.Servicos.UtilService(this.OrganizationName, this.IsOffline).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "itbc_compdocanal", compromissoCanal.ID.Value); } } #endregion Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(this.OrganizationName, this.IsOffline); tarefa.Assunto = "Envio de evidências de Showroom"; Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).BuscarTipoTarefa("Pendência do Canal"); if (tipoAtividade != null) { tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } tarefa.Conclusao = DateTime.Now.AddMonths(6); tarefa.ReferenteA = new SDKore.DomainModel.Lookup(compromissoCanal.ID.Value, "itbc_compdocanal"); tarefa.ID = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).Persistir(tarefa); } }
public void GerarAtividadesVisitaComercial(Conta conta) { List <Model.RelacionamentoCanal> lstRelacionamento = new Domain.Servicos.RelacionamentoCanalService(RepositoryService).ListarAtivosPorCanal(conta.ID.Value); if (lstRelacionamento.Count > 0) { var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService); var pAtividadeCheckList = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); var pListaAtividades = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor)) { throw new ArgumentException("(CRM) Operação Cancelada.O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor)) { throw new ArgumentException("(CRM) Operação Cancelada.O parâmetro global de Atividade de Checklist (63) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist"); foreach (RelacionamentoCanal registro in lstRelacionamento) { if (registro.Supervisor != null) { var tarefa = new Domain.Model.Tarefa(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); if (tipoAtividade != null) { tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } tarefa.Assunto = "Checklist - " + conta.RazaoSocial; tarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor)); tarefa.Descricao = pListaAtividades.Valor; tarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account"); Guid idTarefa = tarefaService.Persistir(tarefa); if (idTarefa != Guid.Empty) { new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", registro.Supervisor.Id, "task", idTarefa); } } } } }
public void TestarTarefaVisitaComercial() { string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); Domain.Servicos.TarefaService ServiceTarefas = new Domain.Servicos.TarefaService(organizationName, false); Domain.Model.Tarefa Tarefa = ServiceTarefas.BuscaTarefa(new Guid("BEC979ED-A74F-E411-93F5-00155D013E70")); if (Tarefa.ReferenteA.Type.Equals("account")) { Domain.Model.Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(organizationName, false).BuscaConta(Tarefa.ReferenteA.Id); if (canal == null || canal.Classificacao == null) { throw new ArgumentException("Conta cadastrada no campo 'Referente a' não encontrada!"); } Domain.Model.ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); Domain.Model.ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(organizationName, false).ConverterParametroParaLista(paramGlobalListaAtividades.Valor); if (lstAtividades.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(organizationName, false); novaTarefa.Assunto = atividade; Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(organizationName, false).BuscarTipoTarefa("Checklist"); if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account"); novaTarefa.ID = new Domain.Servicos.TarefaService(organizationName, false).Persistir(novaTarefa); } } } }
public void testeTarefas() { string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); Domain.Servicos.TarefaService ServiceTarefas = new Domain.Servicos.TarefaService(organizationName, false); Domain.Model.CompromissosDoCanal CompromissoCanal = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(organizationName, false).BuscarPorGuid(new Guid("{801D7A52-1B1E-E811-80D4-0050568F3AB2}")); List <string> lstAtividades = ServiceTarefas.ListarAtividadesCheckup(CompromissoCanal.Compromisso.Id); if (lstAtividades.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, "DRE"); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(organizationName, false).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", CompromissoCanal.Id); if (proprietario != null) { new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(organizationName, false).GerarAtividadeChecklist(atividade, CompromissoCanal, proprietario); } } } }
public void Execute(IServiceProvider serviceProvider) { lock (thisLock) { var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(null); TarefaService ServiceTarefas = new TarefaService(context.OrganizationName, context.IsExecutingOffline, service); CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service); try { trace.Trace(context.MessageName); Intelbras.CRM2013.Domain.Model.Tarefa mTarefa = null; switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: var entidade = (Entity)context.InputParameters["Target"]; mTarefa = ServiceTarefas.BuscaTarefa(entidade.Id); new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).CriarParecerParaSolicitacao(mTarefa); Guid tipoAtividadeExecucao; if (!Guid.TryParse(SDKore.Configuration.ConfigurationManager.GetSettingValue("TipoAtividadeExecucao"), out tipoAtividadeExecucao)) { throw new ArgumentException("(CRM) Faltando parâmetro TipoAtividadeExecucao no SDKore"); } trace.Trace("Parâmetro do Config: TipoAtividadeExecucao '{0}'", tipoAtividadeExecucao); if (mTarefa.ReferenteA != null && mTarefa.TipoDeAtividade != null && mTarefa.TipoDeAtividade.Id == tipoAtividadeExecucao) { trace.Trace("Tarefa do tipo Execução."); SolicitacaoBeneficio solBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor(mTarefa.ReferenteA.Id); if (solBenef == null) { throw new ArgumentException("(CRM) Solicitação não encontrada."); } if (solBenef.TipoSolicitacao != null && solBenef.AjusteSaldo.Value) { trace.Trace("Solicitação do tipo Ajuste."); Tarefa _mTarefa = new Intelbras.CRM2013.Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service); _mTarefa.ID = context.PrimaryEntityId; _mTarefa.Resultado = (int)Domain.Enum.Tarefa.Resultado.PagamentoEfetuadoPedidoGerado; _mTarefa.State = 1; string retorno; TarefaService tarefaService = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service); tarefaService.Persistir(_mTarefa, out retorno); trace.Trace(tarefaService.Trace.StringTrace.ToString()); tarefaService.Trace.Save(); } } mTarefa.TempoAtuacao = 0; break; case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { Tarefa Tarefa = context.PostEntityImages["imagem"].Parse <Tarefa>(context.OrganizationName, context.IsExecutingOffline, service); if (Tarefa.ReferenteA == null || Tarefa.State.Value != (int)Domain.Enum.Tarefa.StateCode.Fechada) { break; } if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaSolicitacaoBeneficio(Tarefa, context.UserId); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaSolicitacaoDeCadastro(Tarefa, context.UserId); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <CompromissosDoCanal>().ToLower()) { new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service) .ConcluirTarefaCompromissoCanal(Tarefa); } else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <Conta>().ToLower()) { if (Tarefa.TipoDeAtividade.Name.Contains("Checklist")) { #region Pendencia Key-Account comentada Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, service).BuscaConta(Tarefa.ReferenteA.Id); if (canal == null || canal.Classificacao == null) { throw new ArgumentException("(CRM) Conta cadastrada no campo 'Referente a' não encontrada!"); } ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).ConverterParametroParaLista(paramGlobalListaAtividades.Valor); if (lstAtividades.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service); Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).BuscarTipoTarefa("Checklist"); if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } novaTarefa.Assunto = atividade; novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account"); novaTarefa.ID = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).Persistir(novaTarefa); if (novaTarefa.ID.HasValue) { Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("task", "activityid", Tarefa.Id); if (proprietario != null) { new Domain.Servicos.UtilService(context.OrganizationName, context.IsExecutingOffline, service).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value); } } } } else { Domain.Model.CompromissosDoCanal CompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(Tarefa.ReferenteA.Id); if (CompromissoCanal != null && CompromissoCanal.Compromisso != null) { List <string> listaAtividadesCheckup2 = ServiceTarefas.ListarAtividadesCheckup(CompromissoCanal.Compromisso.Id); if (listaAtividadesCheckup2.Count > 0) { string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(listaAtividadesCheckup2, Tarefa.Assunto); if (!string.IsNullOrEmpty(atividade)) { Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", CompromissoCanal.Id); if (proprietario != null) { new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service).GerarAtividadeChecklist(atividade, CompromissoCanal, proprietario); } } } } } #endregion } } } break; } } catch (Exception ex) { string message = SDKore.Helper.Error.Handler(ex); trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); throw new InvalidPluginExecutionException(message, ex); } } }
public void CriarTarefaChecklist(RelacionamentoCanal relacionamentoCanal) { if (relacionamentoCanal.Canal == null) { throw new ApplicationException("Canal precisa estar preenchido para criação das atividades de checklist!"); } if (relacionamentoCanal.Supervisor == null) { throw new ApplicationException("Supervisor precisa estar preenchido para criação das atividades de checklist!"); } var conta = RepositoryService.Conta.Retrieve(relacionamentoCanal.Canal.Id, "itbc_classificacaoid", "name", "itbc_participa_do_programa"); if (!conta.ParticipantePrograma.HasValue || conta.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { return; } if (conta == null || conta.Classificacao == null) { throw new ApplicationException("Canal precisa estar classificado para criação das atividades de checklist!"); } var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService); var pAtividadeCheckList = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); var pListaAtividades = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial); if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor)) { throw new ApplicationException("Operação Cancelada. O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor)) { throw new ApplicationException("Operação Cancelada. O parâmetro global de Atividade de Checklist (63) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global."); } var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist"); var novaTarefa = new Domain.Model.Tarefa(RepositoryService); novaTarefa.Assunto = "Checklist - " + conta.RazaoSocial; novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor)); novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account"); novaTarefa.Descricao = pListaAtividades.Valor; if (tipoAtividade != null) { novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, ""); } novaTarefa.ID = tarefaService.Persistir(novaTarefa); if (novaTarefa.ID.HasValue) { Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarProprietario("task", "activityid", relacionamentoCanal.Supervisor.Id); if (proprietario != null) { new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value); } } }