Example #1
0
        private static async Task OppdaterEloRatinger(BekkSjakkRepository repo, PartiDao parti)
        {
            var hvitTask  = repo.HentBekkerPåId(parti.SpillerHvitId);
            var svartTask = repo.HentBekkerPåId(parti.SpillerSvartId);
            await Task.WhenAll(hvitTask, svartTask);

            var hvitBekker  = hvitTask.Result;
            var svartBekker = svartTask.Result;

            if (!hvitBekker.HarVerdi || !svartBekker.HarVerdi)
            {
                throw new Exception("Klarte ikkje å oppdatere ratingar");
            }
            var nyeElo = Elo.FinnNyeEloRatinger(hvitBekker.Verdi, svartBekker.Verdi, parti.Resultat);

            hvitBekker.Verdi.Elo  = nyeElo.Item1;
            svartBekker.Verdi.Elo = nyeElo.Item2;
            var oppdaterTask1 = repo.OppdaterBekker(hvitBekker.Verdi);
            var oppdaterTask2 = repo.OppdaterBekker(svartBekker.Verdi);
            await Task.WhenAll(oppdaterTask1, oppdaterTask2);
        }