public async Task ProvideAsync(DatabaseContext context, SeasonSummary summary) { var fighterElo = await context.FighterEloRatings .Where(o => o.Fighter.UserId == summary.UserId) .Include(o => o.Fighter) .FirstOrDefaultAsync(); if (fighterElo == null) { return; } var rewardCount = (int)(fighterElo.CurrentElo * Factor); summary.Bonus = rewardCount; for (int rewardCounter = 0; rewardCounter < rewardCount; rewardCounter++) { context.Add(new Item() { ItemId = EmpoweredParticle.Id, Rarity = Enums.Equipment.ItemRarity.Basic, UserId = fighterElo.Fighter.UserId, }); } context.Remove(fighterElo); }
public async Task ProcessAsync(DatabaseContext context, SeasonProgress seasonProgress) { var season = await context.Seasons .OrderByDescending(o => o.EndDate) .FirstOrDefaultAsync(); if (season == null) { throw new ArgumentNullException("no active season found"); } await seasonRewardClaimer.ClaimAsync(context, seasonProgress.UserId); await context.SaveChangesAsync(); var summary = new SeasonSummary() { SeasonId = seasonProgress.SeasonId, UserId = seasonProgress.UserId, Position = seasonProgress.Position + 1, }; context.Add(summary); await seasonSalvageRewardProvider.ProvideAsync(context, summary); await seasonEloRewardProvider.ProvideAsync(context, summary); await seasonFighterResetter.ResetAsync(context, seasonProgress.UserId); var tokens = await context.Items.Where(o => EquipmentToken.Tokens.Contains(o.ItemId)).ToListAsync(); context.RemoveRange(tokens); context.RemoveRange(await context.FighterExperiences.ToListAsync()); }
public List <SeasonSummary> GetSeasonSummaries() { List <SeasonSummary> summaries = new List <SeasonSummary>(); var users = _mapper.Map <IEnumerable <User> >(_userRepository.GetAll().ToList()); foreach (var user in users) { var summary = new SeasonSummary(user); summaries.Add(summary); } for (int week = 1; week <= 18; week++) { var weekSummaries = GetWeekSummaries(week); foreach (var weekSummary in weekSummaries) { var seasonSummary = summaries.First(s => s.User.Id == weekSummary.User.Id); seasonSummary.Score += weekSummary.Score; seasonSummary.CorrectPicks += weekSummary.CorrectPicks; } } SetBaseSummaryPlaces(summaries); return(summaries); }
public void Setup() { _response = JsonConvert.DeserializeObject <SeasonSummary>(File.ReadAllText(Json)); var mock = new Mock <IHaloSession>(); mock.Setup(m => m.Get <SeasonSummary>(It.IsAny <string>())) .ReturnsAsync(_response); _mockSession = mock.Object; }
public async Task ProvideAsync(DatabaseContext context, SeasonSummary summary) { var equipment = await context.Equipment .Where(o => o.UserId == summary.UserId) .AsTracking() .ToListAsync(); var salvageItems = new List <Item>(); foreach (var equip in equipment) { salvageItems.AddRange(equipmentSalvager.Salvage(equip, summary.UserId).Where(o => !EquipmentToken.Tokens.Contains(o.ItemId))); } summary.SalvageValue = salvageItems.Count; var alreadyTracked = context.ChangeTracker.Entries <Equipment>().Where(o => equipment.Any(e => e.Id == o.Entity.Id)).ToList(); context.RemoveRange(equipment); context.AddRange(salvageItems); }