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