예제 #1
0
        public void Execute(IPluginExecutionContext context)
        {
            DateTime inicioExecucao = DateTime.Now;

            try
            {
                if ((context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is DynamicEntity))
                {
                    this.EntidadeDoContexto = context.InputParameters.Properties["Target"] as DynamicEntity;
                }
                if (this.EntidadeDoContexto == null)
                {
                    return;
                }

                PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), "");
                FacadeOcorrencia facade = new FacadeOcorrencia(context);

                facade.PosAlteracao();

                PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
            catch (Exception ex)
            {
                PluginHelper.TratarExcecao(ex, TipoDeLog.PluginIncident);
                PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
        }
예제 #2
0
        public void Execute(IPluginExecutionContext context)
        {
            DateTime inicioExecucao = DateTime.Now;

            try
            {
                if ((context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is DynamicEntity))
                {
                    this.EntidadeDoContexto = context.InputParameters.Properties["Target"] as DynamicEntity;
                }
                if (this.EntidadeDoContexto == null)
                {
                    return;
                }

                PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), "");

                #region Recupera a Ocorrencia atualizada

                this.Organizacao = new Organizacao(context.OrganizationName);
                var id = PluginHelper.GetEntityId(context);
                //Retirado o Retrieve pois a função carrega vários sub-dados, como informações de cliente, nota fiscal, produto, etc, etc, etc
                var ocorrencia = DomainService.RepositoryOcorrencia.RetrieveBasico(id, "new_guid_endereco", "statuscode", "casetypecode", "new_data_hora_conclusao");

                #endregion


                this.AtualizaVigencia(ocorrencia);

                FacadeOcorrencia facade = new FacadeOcorrencia(context);
                facade.PosAlteracao();
                PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
            catch (Exception ex)
            {
                PluginHelper.TratarExcecao(ex, TipoDeLog.PluginIncident);
                PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
        }
예제 #3
0
        public void Execute(IPluginExecutionContext context)
        {
            DateTime inicioExecucao = DateTime.Now;

            try
            {
                var prop = context.InputParameters.Properties;
                if (prop.Contains("Target") && prop["Target"] is DynamicEntity)
                {
                    PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), "");
                    var organizacao = new Organizacao(context.OrganizationName);
                    var entidade    = prop["Target"] as DynamicEntity;

                    FacadeOcorrencia facade = new FacadeOcorrencia(context);
                    facade.Atender();

                    #region inserir resultado do atendimento do contexto

                    #region reincidencia

                    if (facade.Ocorrencia.OcorrenciaPai != null)
                    {
                        if (facade.Ocorrencia.OcorrenciaPai.Id != Guid.Empty)
                        {
                            entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_reincidenteid", new Lookup("incident", facade.Ocorrencia.OcorrenciaPai.Id));
                        }

                        if (facade.Ocorrencia.OcorrenciaPai.DataDeCriacao != DateTime.MinValue)
                        {
                            context.SharedVariables.Properties.Add(
                                new PropertyBagEntry("dataCriacaoReincidente", facade.Ocorrencia.OcorrenciaPai.DataDeCriacao.ToString())
                                );
                        }
                    }

                    #endregion

                    #region SLA

                    var sla = new CrmDateTime()
                    {
                        IsNull = true, IsNullSpecified = true
                    };
                    if (facade.Ocorrencia.DataSLA.HasValue)
                    {
                        sla = new CrmDateTime(facade.Ocorrencia.DataSLA.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "followupby", sla);

                    var escalacao = new CrmDateTime()
                    {
                        IsNull = true, IsNullSpecified = true
                    };
                    if (facade.Ocorrencia.DataEscalacao.HasValue)
                    {
                        escalacao = new CrmDateTime(facade.Ocorrencia.DataEscalacao.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_data_hora_escalacao", escalacao);

                    #endregion

                    #region  árvore de assunto

                    if (facade.Ocorrencia.EstruturaDeAssunto != null)
                    {
                        foreach (Assunto item in facade.Ocorrencia.EstruturaDeAssunto)
                        {
                            if (item.TipoDeAssunto != TipoDeAssunto.Vazio)
                            {
                                entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, item.CampoRelacionadoNaOcorrencia, new Lookup("subject", item.Id));
                            }
                        }
                    }

                    #endregion

                    #region Valor do Serviço

                    if (facade.Ocorrencia.ValorServico.HasValue)
                    {
                        var ValorServicoCRM = new CrmMoney(facade.Ocorrencia.ValorServico.Value);
                        entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_valor_servico", ValorServicoCRM);
                    }

                    #endregion

                    #endregion
                    PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString());
                }
            }
            catch (Exception ex)
            {
                PluginHelper.TratarExcecao(ex, TipoDeLog.PluginIncident);
                PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString());
            }
        }