Beispiel #1
0
        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());
        }
Beispiel #3
0
        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);
        }