Exemplo n.º 1
0
        public void PerformRatingPointsDataPopulationWithoutPeakDaypart_ShouldReturnListOfRatingPoints()
        {
            //Arrange
            var testRatingPoint = new RatingPoint
            {
                SalesAreas          = _salesAreas.Select(s => s.Name),
                OffPeakValue        = 10,
                MidnightToDawnValue = 5
            };

            var testPasses = new List <Pass>
            {
                _fixture.Create <Pass>()
            };

            testPasses[0].RatingPoints = new List <RatingPoint> {
                testRatingPoint
            };

            var expected = new List <AgRatingPoint>();

            foreach (var salesArea in _salesAreas)
            {
                expected.Add(
                    new AgRatingPoint
                {
                    PassId                      = testPasses[0].Id,
                    SalesAreaNumber             = salesArea.CustomId,
                    DaypartsCount               = 3,
                    RatingPointsForDaypartsList = new AgRatingPointsForDaypartsList
                    {
                        new AgRatingPointForDaypart
                        {
                            StartTime = "0",
                            EndTime   = "115959",
                            Value     = 10
                        },
                        new AgRatingPointForDaypart
                        {
                            StartTime = "160000",
                            EndTime   = "235959",
                            Value     = 10
                        },
                        new AgRatingPointForDaypart
                        {
                            StartTime = "240000",
                            EndTime   = "995959",
                            Value     = 5
                        }
                    }
                });
            }

            //Act
            var result = testPasses.ToAgRatingPoints(_salesAreas, _tenantSettings);

            //Assert
            _ = CheckIfEqual(expected, result?.AgRatingPoints).Should().BeTrue(null);
        }
Exemplo n.º 2
0
        private void ProcessRatings()
        {
            var unprocessed = this.Games.Where(g => !g.Rated).ToList();
            var i           = 0;

            foreach (var game in unprocessed)
            {
                Console.Write("\rProcess ratings: {0} out of {1}", ++i, unprocessed.Count);

                foreach (var hero in game.Heros)
                {
                    var player = this.PlayerRatings.GetPlayer(hero.Name);
                    if (player == null)
                    {
                        player = new Player()
                        {
                            Name = hero.Name, RatingPoints = new List <RatingPoint>()
                        };
                        this.PlayerRatings.Players.Add(player);
                    }
                    var rp = new RatingPoint()
                    {
                        Date = game.CreationTime, Elo = hero.Elo
                    };
                    if (!player.RatingPoints.Contains(rp))
                    {
                        player.RatingPoints.Insert(0, rp);
                        player.RatingPoints.Sort();
                    }
                }
                game.Rated = true;
                game.Save(game.FileLocation);
            }
            if (i > 0)
            {
                Console.WriteLine();

                foreach (var player in this.PlayerRatings.Players)
                {
                    player.RatingPoints.Sort();
                }
                this.PlayerRatings.Players.Sort();
                this.PlayerRatings.Save();

                using (var writer = new StreamWriter(Path.Combine(Game.GamesDir.FullName, "ratings.txt")))
                {
                    var pos = 1;
                    foreach (var player in this.PlayerRatings.Players)
                    {
                        writer.WriteLine("{0,3}  {1}", pos++, player.DebuggerDisplay);
                    }
                }
            }
        }