예제 #1
0
        public void CriarArquivoLog(List <string> mensagem, string url, string usuario, string senha)
        {
            string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

            Trace.Add("CriarArquivoLog - URL {0}  USERNAME: {1}", url, userName);
            Trace.Add("MensagemArquivoLog - {0}  ", mensagem);

            StringBuilder sb = new StringBuilder();

            foreach (string item in mensagem)
            {
                sb.AppendLine(item);
            }

            Uri destUri = new Uri(url);

            using (MemoryStream inStream = new System.IO.MemoryStream(Encoding.Default.GetBytes(sb.ToString())))
            {
                WebRequest request = WebRequest.Create(url);
                request.Credentials = new NetworkCredential(usuario, senha);
                request.Method      = "PUT";
                request.Timeout     = 10000;
                request.ContentType = "text/plain;charset=utf-8";
                using (Stream outStream = request.GetRequestStream())
                {
                    inStream.CopyTo(outStream);
                }
                WebResponse res = request.GetResponse();
            }
        }
예제 #2
0
        public void Move()
        {
            currentDirection = GetNextDefaultDirection();
            Trace.Add(Position);

            Point nextPoint = (Point)Position.Clone();

            if (currentDirection == MovementDirection.DOWN && Position.Y < arena.Height)
            {
                nextPoint.Y++;
            }
            else if (currentDirection == MovementDirection.LEFT && Position.X > 0)
            {
                nextPoint.X--;
            }
            else if (currentDirection == MovementDirection.RIGHT && Position.X < arena.Width)
            {
                nextPoint.X++;
            }
            else if (currentDirection == MovementDirection.UP && Position.Y > 0)
            {
                nextPoint.Y--;
            }

            Position = nextPoint;
            arena.Update(this);
        }
예제 #3
0
        /// <summary>
        /// Método responsável por criar o diretório no sharepoint e vincular ao registro do CRM.
        /// </summary>
        public void CriarDiretorio <T>(string nome, Guid id)
        {
            if (!string.IsNullOrEmpty(nome))
            {
                nome = nome.Replace("&", "e");
                nome = nome.Replace("/", "-");

                var    nomeEntidade = SDKore.Crm.Util.Utility.GetEntityName <T>();
                var    urlSite      = Domain.Servicos.Helper.RemoverBarraDoFinal(SDKore.Configuration.ConfigurationManager.GetSettingValue("UrlSiteSharePoint"));
                var    usuario      = SDKore.Configuration.ConfigurationManager.GetSettingValue("UsuarioSharePoint");
                var    senha        = SDKore.Configuration.ConfigurationManager.GetSettingValue("SenhaSharePoint");
                var    dominio      = SDKore.Configuration.ConfigurationManager.GetDomain(this.OrganizationName);
                string urlCompleta  = string.Format("{0}/{1}/{2}_{3}", urlSite, nomeEntidade, nome, id.ToString().Replace("-", ""));

                Trace.Add("Enviando requição para Sharepoint! UrlComplata {0}", urlCompleta);

                WebRequest req = WebRequest.Create(urlCompleta);
                req.Credentials = new NetworkCredential(SDKore.Helper.Cryptography.Decrypt(usuario), SDKore.Helper.Cryptography.Decrypt(senha), dominio);
                req.Method      = "MKCOL";
                WebResponse response = req.GetResponse();
                response.Close();

                Trace.Add("Associando diretório ao registro!");

                Repositorio.AssociarDiretorioAoRegistroCRM(urlCompleta, nomeEntidade, nome, id);
            }
        }
 public void AddTraceData(Message message)
 {
     if (message.Type == MessageType.TRACE)
     {
         System.Diagnostics.Debug.Print("Adding trace " + message.Value);
         var    td = new TraceData(message.Value);
         String traceOutput;
         if (Trace.Count > MESSAGE_LOG_MAX)
         {
             Trace.RemoveAt(0);
         }
         //assign here to notify properties
         TraceOutput = td.TraceMessage;
         Trace.Add(td);
     }
 }
예제 #5
0
        public Tarefa Persistir(Model.Tarefa objTarefa, out string retorno)
        {
            //Somente Update
            retorno = string.Empty;
            Tarefa TmpTarefa = null;

            Trace.Add("Tarefa.Persistir IsUpdate: {0}", objTarefa.ID.HasValue);

            if (objTarefa.ID.HasValue)
            {
                TmpTarefa = RepositoryService.Tarefa.ObterPor(objTarefa.ID.Value);

                if (TmpTarefa != null)
                {
                    objTarefa.ID = TmpTarefa.ID;
                    RepositoryService.Tarefa.Update(objTarefa);

                    Trace.Add("Atualizando tarefa ID: {0}", objTarefa.ID.Value);

                    //Altera Status - Se necessário
                    if (!TmpTarefa.State.Equals(objTarefa.State) && objTarefa.State != null)
                    {
                        Trace.Add("Atualizando Status para: {0}", objTarefa.State.Value);
                        this.MudarStatus(TmpTarefa.ID.Value, objTarefa.State.Value, null);
                    }

                    return(TmpTarefa);
                }
                else
                {
                    retorno = "Tarefa - " + objTarefa.ID.Value.ToString() + " não cadastrada no Crm, ação de insert não permitida para entidade 'Tarefa'.";
                    Trace.Add(retorno);

                    return(null);
                }
            }

            return(null);
        }
예제 #6
0
        private void ProcessQueue()
        {
            while (true & !Cancelled)
            {
                T   item;
                var _startQueueWait = DateTime.Now;

                Interlocked.Increment(ref WaitingOnQueue);
                lock (_queueLock)
                {
                    if (Queue.Count == 0)
                    {
                        // queue is empty
                        return;
                    }
                    item = Queue.Dequeue();
                }
                Interlocked.Decrement(ref WaitingOnQueue);
                Interlocked.Increment(ref Current);

                _queue.Add(_startQueueWait);


                Interlocked.Increment(ref ActiveWorkers);
                ProgressUpdate(Current, _total);
                var startDuration = DateTime.Now;

                var _startRun = DateTime.Now;

                RunItem(item);

                _run.Add(_startRun);

                Interlocked.Decrement(ref ActiveWorkers);
            }
        }
예제 #7
0
 private void InserirLog(string mensagem)
 {
     Trace.Add(mensagem);
     this.mensagemLog.Add(mensagem);
 }
예제 #8
0
        public void ImportarValores(MetadaUnidade metaUnidade, string pathTemp, Enum.OrcamentodaUnidade.Trimestres?trimestre = null)
        {
            int quantidadePorLote = 1000;
            var trace             = new Trace("Meta-Unidade-IMPORTAR" + metaUnidade.ID.Value);

            trace.Add(" --------------------------- Iniciando --------------------------- ");

            try
            {
                var listaErros   = new List <string>();
                var mensagemErro = new StringBuilder();


                // Atualizar Status
                metaUnidade.MensagemdeProcessamento = string.Format("{0} - Iniciando Importação da Unidade{1}{2}", DateTime.Now, Environment.NewLine + Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000);
                RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline)
                {
                    ID         = metaUnidade.ID,
                    StatusCode = (int)Enum.MetaUnidade.StatusMetaUnidade.ImportandoPlanilhaMeta,
                    MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento
                });

                #region Criando níveis da meta

                AtualizarValoresMetaUnidade(metaUnidade);

                // Trimestre
                listaErros = AtualizarValoresPotencialTrimestre(metaUnidade, quantidadePorLote);
                if (listaErros.Count > 0)
                {
                    mensagemErro.AppendLine("Atualização de meta unidade por trimestre!");
                    mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                }

                // Segmento
                listaErros = AtualizarValoresPotencialSegmento(metaUnidade, quantidadePorLote, trimestre);
                if (listaErros.Count > 0)
                {
                    mensagemErro.AppendLine("Atualização de meta unidade por segmento!");
                    mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                }

                // Familia
                listaErros = AtualizarValoresPotencialFamilia(metaUnidade, quantidadePorLote, trimestre);
                if (listaErros.Count > 0)
                {
                    mensagemErro.AppendLine("Atualização de meta unidade por família!");
                    mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                }

                // Subfamilia
                listaErros = AtualizarValoresPotencialSubfamilia(metaUnidade, quantidadePorLote, trimestre);
                if (listaErros.Count > 0)
                {
                    mensagemErro.AppendLine("Atualização de meta unidade por subfamília!");
                    mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                }



                // Produto
                if (trimestre.HasValue)
                {
                    listaErros = AtualizarValoresPotencialProduto(metaUnidade, quantidadePorLote, trimestre.Value);
                    if (listaErros.Count > 0)
                    {
                        mensagemErro.AppendLine("Atualização de meta unidade por produto!");
                        mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                    }

                    listaErros = AtualizarValoresPotencialProdutoMes(metaUnidade, quantidadePorLote, trimestre.Value);
                    if (listaErros.Count > 0)
                    {
                        mensagemErro.AppendLine("Atualização de meta unidade por produto mês!");
                        mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                    }
                }
                else
                {
                    listaErros = AtualizarValoresPotencialProduto(metaUnidade, quantidadePorLote);
                    if (listaErros.Count > 0)
                    {
                        mensagemErro.AppendLine("Atualização de meta unidade por produto!");
                        mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                    }

                    listaErros = AtualizarValoresPotencialProdutoMes(metaUnidade, quantidadePorLote);
                    if (listaErros.Count > 0)
                    {
                        mensagemErro.AppendLine("Atualização de meta unidade por produto mês!");
                        mensagemErro.AppendLine(string.Join(Environment.NewLine, listaErros));
                    }
                }

                #endregion



                if (mensagemErro.Length == 0)
                {
                    trace.Add("{0} - Alterando status de registro do CRM", DateTime.Now);

                    metaUnidade.MensagemdeProcessamento = string.Format("{0} - Finalizando Importação da Unidade{1}{2}", DateTime.Now, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000);
                    RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline)
                    {
                        ID         = metaUnidade.ID,
                        StatusCode = (int)Enum.MetaUnidade.StatusMetaUnidade.PlanilhaMetaImportadaSucesso,
                        MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento
                    });
                }
                else
                {
                    trace.Add("{0} - Alterando status de registro do CRM", DateTime.Now);

                    metaUnidade.MensagemdeProcessamento = string.Format("{0} - Erro Importação do Supervisor{1}{2}", DateTime.Now, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000);
                    RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline)
                    {
                        ID         = metaUnidade.ID,
                        StatusCode = (int)Enum.MetaUnidade.StatusMetaUnidade.ErroImportarPlanilhaMeta,
                        MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento
                    });

                    trace.Add("{0} - Criando arquivo de log", DateTime.Now);

                    string file = pathTemp + "Log Error Metas.txt";

                    new ArquivoService(RepositoryService).CriarArquivoLog(metaUnidade, mensagemErro.ToString(), file);
                }
            }
            catch (Exception ex)
            {
                string mensagem = Error.Handler(ex);
                trace.Add(ex);

                metaUnidade.MensagemdeProcessamento = string.Format("{0} - Erro Importação: {1}{2}{3}", DateTime.Now, mensagem, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000);
                RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline)
                {
                    ID         = metaUnidade.ID,
                    StatusCode = (int)Enum.MetaUnidade.StatusMetaUnidade.ErroImportarPlanilhaMeta,
                    MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento
                });
            }
            finally
            {
                trace.SaveClear();
            }
        }
예제 #9
0
 public void Add(SDCombinedStackFrame item)
 {
     Trace.Add(item);
 }
예제 #10
0
        private void DijkstraStep(string input, PolishNotationTokenType type, bool isAssignmentToThisIdentifier = false)
        {
            switch (type)
            {
            // 1.	Ідентифікатори та константи проходять від входу прямо до виходу
            case PolishNotationTokenType.Identifier:
            case PolishNotationTokenType.Literal:
                ReversePolishNotation.Add(new PolishNotation
                {
                    Token = input, Type = type, IsAssignmentToThisIdentifier = isAssignmentToThisIdentifier
                });
                break;

            // Операції звичайно потрапляють на вихід через магазин
            case PolishNotationTokenType.Operator:
                AddOperatorToStack(input);
                break;

            // 4.	Якщо вхідний ланцюжок порожній, всі операції зі стека по черзі передаються на вихід
            //      за ознакою кінця виразу (наприклад, ";").
            case PolishNotationTokenType.Delimiter:
            {
                while (Stack.Count != 0 &&
                       !Stack.Peek().Token.StartsWith("if") &&
                       !Stack.Peek().Token.StartsWith("while"))
                {
                    ReversePolishNotation.Add(Stack.Pop());
                }

//					ReversePolishNotation.Add(new PolishNotation {Token = input, Type = type});
            }
            break;

            case PolishNotationTokenType.If:
                Stack.Push(new PolishNotation {
                    Token = input, Type = type
                });
                break;

            // Символ then з пріоритетом 1 виштовхує зі стека всі знаки до першого
            // if виключно. При цьому генерується нова мітка mi й у вихідний рядок
            // заноситься mi УПХ. Потім мітка mi заноситься в таблицю міток і дописується у вершину стека,
            // таким чином, запис if у вершині стека перетворюється на запис if mi
            case PolishNotationTokenType.Then:
            {
                PolishNotation head = Stack.Peek();
                while (!head.Token.StartsWith("if"))
                {
                    ReversePolishNotation.Add(Stack.Pop());
                    head = Stack.Peek();
                }

                string label = GenerateLabel();
                head.Token = $"{head.Token} {label}";
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{label}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = "УПХ", Type = type
                    });
            }
            break;

            // Символ кінця умовного оператора (наприклад, ; або end) виштовхує зі
            // стека все до найближчого if. Це може бути if mi mi+1 (або if mi у разі
            // конструкції if <вираз> then <оператор>;). Запис видаляється зі стека,
            // а у вихідний рядок додається mi+1: (або mi: у випадку неповного оператора умовного переходу).
            case PolishNotationTokenType.Fi:
            {
                PolishNotation head = Stack.Peek();
                while (!head.Token.StartsWith("if"))
                {
                    ReversePolishNotation.Add(Stack.Pop());
                    head = Stack.Peek();
                }

                head = Stack.Pop();
                string label = head.Token.Split(" ").Last();
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{label}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = ":", Type = type
                    });
                _labelAddresses[label] = ReversePolishNotation.Count;
            }
            break;

            case PolishNotationTokenType.While:
            {
                string label = GenerateLabel();
                Stack.Push(new PolishNotation {
                        Token = $"{input} {label}", Type = type
                    });
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{label}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = $":", Type = type
                    });
                _labelAddresses[label] = ReversePolishNotation.Count;
            }
            break;

            case PolishNotationTokenType.TechnicalDo:
            {
                PolishNotation head = Stack.Peek();
                while (!head.Token.StartsWith("while"))
                {
                    ReversePolishNotation.Add(Stack.Pop());
                    head = Stack.Peek();
                }

                string label = GenerateLabel();
                head.Token = $"{head.Token} {label}";
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{label}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = "УПХ", Type = type
                    });
            }
            break;

            case PolishNotationTokenType.Enddo:
            {
                PolishNotation head = Stack.Peek();
                while (!head.Token.StartsWith("while"))
                {
                    ReversePolishNotation.Add(Stack.Pop());
                    head = Stack.Peek();
                }

                head = Stack.Pop();
                string[] labels = head.Token.Split(" ");
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{labels[1]}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = "БП", Type = type
                    });
                ReversePolishNotation.Add(new PolishNotation
                    {
                        Token = $"{labels.Last()}", Type = PolishNotationTokenType.Label
                    });
                ReversePolishNotation.Add(new PolishNotation {
                        Token = $":", Type = type
                    });
                _labelAddresses[labels.Last()] = ReversePolishNotation.Count;
            }
            break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            Trace.Add(new PolishTrace
            {
                Input = input,
//				Stack = new Stack<PolishNotation>(Stack),
                Stack = Stack.Clone(),
                ReversePolishNotation = new List <PolishNotation>(ReversePolishNotation)
            });
            MoveNext();
        }