public async void RecalcularClassificacaoAsync(Classificacao[] clas = null)
        {
            if (clas == null)
            {
                clas = (await ClassificacaoInicialStore.GetItemsAsync())
                       .Select(a => a.Clone())
                       .OrderBy(a => a.Posicao)
                       .ToArray();
            }

            var placares = (await PlacarDataStore.GetItemsAsync(true)).ToArray();

            var busi     = new ClassificacaoBusiness();
            var classifs = busi.RecalcularClassificacao(clas, placares);

            var novaLista = classifs.Where(a => a.Excluir == false)
                            .OrderBy(a => a.Posicao)
                            .ToArray();

            await DataStore.SaveAll(classifs);

            await ExecuteLoadClassificacaoCommand(novaLista);
        }
        public async void RecalcularClassificacaoAsync(Classificacao[] clas = null)
        {
            var classifs = new List <Classificacao>();

            if (clas == null)
            {
                clas = (await ClassificacaoInicialStore.GetItemsAsync())
                       .Select(a => a.Clone())
                       .OrderBy(a => a.Posicao)
                       .ToArray();
            }

            classifs.AddRange(clas);

            var ultimaPosicao  = clas[clas.Length - 1].Posicao;
            var placares       = (await PlacarDataStore.GetItemsAsync(true)).ToArray();
            var dataMaisAntiga = clas.Select(a => a.Data).OrderBy(a => a).First();

            placares = placares.Where(a => a.Data >= dataMaisAntiga)
                       .OrderBy(a => a.DataPublicacao)
                       .ToArray();

            foreach (var placar in placares)
            {
                if (placar.JogadorAGols == null || placar.JogadorBGols == null)
                {
                    continue;
                }

                var clasJogadorA = GetClassificaoJogador(classifs, placar.JogadorA, ref ultimaPosicao);
                var clasJogadorB = GetClassificaoJogador(classifs, placar.JogadorB, ref ultimaPosicao);

                var golsA = placar.JogadorAGols ?? 0;
                var golsB = placar.JogadorBGols ?? 0;

                clasJogadorA.Alterado = true;
                clasJogadorB.Alterado = true;

                if (golsA == golsB)
                {
                    AtualizarEstatistica(clasJogadorA, 0, 1, 0, golsA, golsB);
                    AtualizarEstatistica(clasJogadorB, 0, 1, 0, golsB, golsA);
                    continue;
                }
                else if (golsA > golsB)
                {
                    AtualizarEstatistica(clasJogadorA, 1, 0, 0, golsA, golsB);
                    AtualizarEstatistica(clasJogadorB, 0, 0, 1, golsB, golsA);
                }
                else
                {
                    AtualizarEstatistica(clasJogadorA, 0, 0, 1, golsA, golsB);
                    AtualizarEstatistica(clasJogadorB, 1, 0, 0, golsB, golsA);
                }

                clasJogadorA.Posicao         = placar.PosicaoA;
                clasJogadorA.PosicaoAnterior = placar.PosicaoAntA;
                clasJogadorB.Posicao         = placar.PosicaoB;
                clasJogadorB.PosicaoAnterior = placar.PosicaoAntB;

                if (placar.JogadorAGols > placar.JogadorBGols)
                {
                    AtualizarPosicao(classifs, ultimaPosicao, clasJogadorA, clasJogadorB, placar.Regra);
                    continue;
                }
                else
                {
                    AtualizarPosicao(classifs, ultimaPosicao, clasJogadorB, clasJogadorA, placar.Regra);
                }
            }

            await SalvarAlteracoesAsync(classifs);
            await ExecuteLoadClassificacaoCommand(classifs.OrderBy(a => a.Posicao)
                                                  .ToArray());
        }