public async Task UpdateGuardianMatchEfficiency(IEnumerable <GuardianMatchResult> guardianMatchResults) { var efficiencyUpdates = new List <GuardianEfficiency>(); foreach (var result in guardianMatchResults) { var currentEfficiencies = GetGuardianEfficiencies(result.GuardianId); var newEfficiency = (currentEfficiencies.Sum() + result.Efficiency) / (currentEfficiencies.Count() + 1); var newGuardianEff = new GuardianEfficiency() { Id = $"eff_{Guid.NewGuid():N}", GuardianId = result.GuardianId, MatchId = result.MatchId, NewEfficiency = newEfficiency, PreviousEfficiency = currentEfficiencies.Any() ? currentEfficiencies.Average() : 0 }; efficiencyUpdates.Add(newGuardianEff); } await _databaseContext.AddRangeAsync(efficiencyUpdates); await _databaseContext.SaveChangesAsync(); }
public async Task <string> CreateGuardian(Guardian guardian) { var guardianId = await _guardianRepository.CreateGuardian(guardian); var guardianElo = new GuardianElo() { GuardianId = guardianId, Id = $"{ModelIDPrefixes.GuardianElo}_{Guid.NewGuid():N}", PreviousElo = 0, NewElo = 1200, }; var guardianEff = new GuardianEfficiency() { GuardianId = guardianId, Id = $"{ModelIDPrefixes.GuardianEfficiency}_{Guid.NewGuid():N}", PreviousEfficiency = 0.0, NewEfficiency = 0.0, }; await _guardianEloRepository.UpdateGuardianElo(guardianElo); await _guardianEfficiencyRepository.UpdateGuardianEfficiency(guardianEff); return(guardianId); }
public async Task CreateGuardian_MakesCorrectCalls() { // Arrange var guardianEfficiency = new GuardianEfficiency(); var guardianElo = new GuardianElo(); await _efficiencyRepository.UpdateGuardianEfficiency(Arg.Do <GuardianEfficiency>(eff => guardianEfficiency = eff)); await _eloRepository.UpdateGuardianElo(Arg.Do <GuardianElo>(elo => guardianElo = elo)); // Act await _guardianService.CreateGuardian(_testGuardian); // Assert await _guardianRepository.Received(1).CreateGuardian(_testGuardian); guardianEfficiency.GuardianId.Should().Be(_testGuardian.Id); guardianEfficiency.Id.Should().NotBeNullOrEmpty(); guardianEfficiency.NewEfficiency.Should().Be(0.0); guardianEfficiency.PreviousEfficiency.Should().Be(0.0); guardianElo.GuardianId.Should().Be(_testGuardian.Id); guardianElo.Id.Should().NotBeNullOrEmpty(); guardianElo.NewElo.Should().Be(1200); guardianElo.PreviousElo.Should().Be(0); }
public async Task UpdateGuardianEfficiency(GuardianEfficiency guardianEfficiency) { _databaseContext.Add(guardianEfficiency); await _databaseContext.SaveChangesAsync(); }