예제 #1
0
        private static void SearchFork()
        {
            var parsers = new List<Tuple<string, IParser>>
            {
                new Tuple<string, IParser>("Marathon", new MarathonParser(new List<GameParser>{ new FootballParser() },
                                                                          new MarketsProviderManager(new List<IMarketsProvider> { new LocalMarketsProvider() }))),
                new Tuple<string, IParser>("Zenit", new ZenitBetParser(new WebPageProvider(new ZenitDomainProvider()), new List<IGameParser> { new FootballGameParser() })),
            };

            var activeParsers = SelectParserMenu(parsers);
            var grouper = new GameGrouper();
            var parserManager = new ParserManager(new StubParserProvider(activeParsers), grouper);
            var forkSearcherManager = new ForkSearcherManager(new ForkSearcher(new TextRulesProvider(File.ReadAllText(Settings.Default.PathToRules))));

            var core = new Core(parserManager, forkSearcherManager);
            core.OnReceivedMainForks += ViewForks;
            core.Run(new List<SportType> { "Футбол" });
            //    .Where(x => x.ProfitRate > 1)
            //    .OrderBy(x => x.ProfitRate)
            //    .Reverse()
            //    .ToList();
            //if (forks.Count == 0)
            //{
            //    Console.WriteLine("The forks not found");
            //}
            //else
            //{
            //    for (var i = 0; i < forks.Count; i++)
            //    {
            //        var fork = forks[i];
            //        const int BetToFirstOne = 100;
            //        var betTosecondOne = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                             / fork.CoefsOfSecondBets.ElementAt(0).Value.Get();
            //        decimal sum;
            //        Console.WriteLine($"{i + 1}. {fork.SportType} - Profit = {fork.ProfitRate}");
            //        if (fork.CoefsOfFirstBets.Count < 2 && (fork.CoefsOfSecondBets.Count < 2))
            //        {
            //            Console.WriteLine(
            //                $"Ставка в 1-ой конторе = {BetToFirstOne}; " + $"Во 2-ой конторе = {betTosecondOne: #0.###}");
            //            sum = (betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate;
            //        }
            //        else if ((fork.CoefsOfFirstBets.Count > 1) && (fork.CoefsOfSecondBets.Count < 2))
            //        {
            //            var betTofirstTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                                / fork.CoefsOfFirstBets.ElementAt(1).Value.Get();
            //            Console.WriteLine(
            //                $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}, "
            //                + $"на 2-ое событие = {betTofirstTwo: #0.###};   "
            //                + $"Во 2-ой конторе = {betTosecondOne: #0.###}");
            //            sum = (betTofirstTwo + BetToFirstOne + betTosecondOne) / 100 * fork.ProfitRate;
            //        }
            //        else
            //        {
            //            var betTosecondTwo = BetToFirstOne * fork.CoefsOfFirstBets.ElementAt(0).Value.Get()
            //                                 / fork.CoefsOfSecondBets.ElementAt(1).Value.Get();
            //            Console.WriteLine(
            //                $"Cтавка в 1-ой конторе на 1-ое событие = {BetToFirstOne}"
            //                + $"Во 2-ой конторе на 1-ое событие = {betTosecondOne: #0.###}, "
            //                + $"на 2-ое событие = {betTosecondTwo: #0.###}");
            //            sum = (betTosecondTwo + betTosecondOne + BetToFirstOne) / 100 * fork.ProfitRate;
            //        }
            //        Console.WriteLine($"Cумма прибыли: {sum: #0.##}р.");
            //        Console.WriteLine($"{fork.FirstGame.Info}");
            //        Console.WriteLine($"Имя конторы - {fork.FirstBetsName}:");
            //        foreach (var type in fork.CoefsOfFirstBets.Keys)
            //        {
            //            Console.WriteLine(
            //                $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfFirstBets[type]}");
            //        }

                //        Console.WriteLine($"Имя конторы - {fork.SecondBetsName}:");
                //        foreach (var type in fork.CoefsOfSecondBets.Keys)
                //        {
                //            Console.WriteLine(
                //                $"{string.Empty.PadRight(5)}Тип ставки: {type.ToString().PadRight(20)}| Коэффициент {fork.CoefsOfSecondBets[type]}");
                //        }

                //        Console.WriteLine();
                //    }
                //}
        }
        public void GroupGamesByTypeSportTest()
        {
            var inputDictionary = new Dictionary<BetsName, Dictionary<SportType, List<Game>>>();
            var inputInnerDictionary1 = new Dictionary<SportType, List<Game>>();
            var listInputGameFootballMarathon = new List<string>
            {
                "Ливерпуль",
                "Барселона",
                "Бавария",
                "МЮ"
            };

            inputInnerDictionary1.Add("Футбол", CreateListGames(listInputGameFootballMarathon));
            var listInputGameHockeyMarathon = new List<string>
            {
                "Детроит",
                "Цска",
                "Акбарс",
                "Атлант"
            };

            inputInnerDictionary1.Add("Хоккей", CreateListGames(listInputGameHockeyMarathon));
            inputDictionary.Add("Марафон", inputInnerDictionary1);

            var inputInnerDictionary2 = new Dictionary<SportType, List<Game>>();
            var listInputGameFootballZenit = new List<string>
            {
                "Спартак",
                "Локомотив",
                "Динамо",
                "Ростов"
            };

            inputInnerDictionary2.Add("Футбол", CreateListGames(listInputGameFootballZenit));
            var listInputGameHockeyZenit = new List<string>
            {
                "Вашингтон",
                "Ренаут",
                "Металург",
                "Салават"
            };

            inputInnerDictionary2.Add("Хоккей", CreateListGames(listInputGameHockeyZenit));
            inputDictionary.Add("Зенит", inputInnerDictionary2);

            var outputDictionary = new Dictionary<SportType, Dictionary<BetsName, List<Game>>>();
            var outputInnerDictionary1 = new Dictionary<BetsName, List<Game>>
            {
                {
                    "Марафон",
                    CreateListGames(listInputGameFootballMarathon)
                },
                {
                    "Зенит",
                    CreateListGames(listInputGameFootballZenit)
                }
            };

            outputDictionary.Add("Футбол", outputInnerDictionary1);

            var outputInnerDictionary2 = new Dictionary<BetsName, List<Game>>
            {
                {
                    "Марафон",
                    CreateListGames(listInputGameHockeyMarathon)
                },
                {
                    "Зенит",
                    CreateListGames(listInputGameHockeyZenit)
                }
            };

            outputDictionary.Add("Хоккей", outputInnerDictionary2);
            var tagList = new List<SportType> {new SportType("Футбол"), new SportType("Хоккей")};
            var grouper = new GameGrouper();
            var a = grouper.GroupGamesByTypeSport(inputDictionary, tagList);
            CollectionAssert.AreEqual(a, outputDictionary, "Uncorrect grouping");
        }