예제 #1
0
    public async Task TestParseHeader(
        int bitsMatchId,
        int homeTeamId,
        DateTime date,
        string team,
        string opponent,
        int turn,
        string oilPatternName,
        string oilPatternUrl,
        string location)
    {
        // Arrange
        Web.Infrastructure.Bits.Contracts.HeadInfo content = await BitsGateway.GetHeadInfo(bitsMatchId);

        // Act
        ParseHeaderResult header = BitsParser.ParseHeader(content, homeTeamId);

        // Assert
        Assert.That(header.Date, Is.EqualTo(date));
        Assert.That(header.Team, Is.EqualTo(team));
        Assert.That(header.Opponent, Is.EqualTo(opponent));
        Assert.That(header.Turn, Is.EqualTo(turn));
        Assert.That(header.OilPattern.Name, Is.EqualTo(oilPatternName));
        Assert.That(header.OilPattern.Url, Is.EqualTo(oilPatternUrl));
        Assert.That(header.Location, Is.EqualTo(location));
    }
예제 #2
0
    public async Task CanParseAlternateAwayTeamNameWithIf()
    {
        // Arrange
        const int ClubId = 1660;

        // Act
        ParseResult?result = new BitsParser(playersTeamF).Parse(await BitsGateway.GetBitsMatchResult(3048477), ClubId);

        // Assert
        Assert.That(result !.TeamScore, Is.EqualTo(14));
    }
예제 #3
0
    public async Task CanFindName()
    {
        // Arrange
        const int ClubId = 1660;

        // Act
        ParseResult?result = new BitsParser(playersTeamA).Parse(await BitsGateway.GetBitsMatchResult(3050651), ClubId);

        // Assert
        Assert.That(result !.TeamScore, Is.EqualTo(7));
    }
예제 #4
0
        private async Task <IHttpActionResult> Handle(RegisterMatchMessage message)
        {
            WebsiteConfig websiteConfig = DocumentSession.Load <WebsiteConfig>(WebsiteConfig.GlobalId);

            Player[] players =
                DocumentSession.Query <Player, PlayerSearch>()
                .ToArray()
                .Where(x => x.PlayerItem?.LicNbr != null)
                .ToArray();
            Roster pendingMatch = DocumentSession.Load <Roster>(message.RosterId);

            try
            {
                var             parser          = new BitsParser(players);
                BitsMatchResult bitsMatchResult = await bitsClient.GetBitsMatchResult(pendingMatch.BitsMatchId);

                if (bitsMatchResult.HeadInfo.MatchFinished == false)
                {
                    Log.Info($"Match {pendingMatch.BitsMatchId} not yet finished");
                    return(Ok());
                }

                if (pendingMatch.IsFourPlayer)
                {
                    Parse4Result parse4Result = parser.Parse4(bitsMatchResult, websiteConfig.ClubId);
                    if (parse4Result != null)
                    {
                        List <string> allPlayerIds = GetPlayerIds(parse4Result);
                        pendingMatch.SetPlayers(allPlayerIds);
                        ExecuteCommand(new RegisterMatch4Command(pendingMatch, parse4Result));
                    }
                }
                else
                {
                    ParseResult parseResult = parser.Parse(bitsMatchResult, websiteConfig.ClubId);
                    if (parseResult != null)
                    {
                        List <string> allPlayerIds = GetPlayerIds(parseResult);
                        pendingMatch.SetPlayers(allPlayerIds);
                        ExecuteCommand(new RegisterMatchCommand(pendingMatch, parseResult));
                    }
                }
            }
            catch (Exception e)
            {
                ErrorSignal
                .FromCurrentContext()
                .Raise(new Exception($"Unable to auto register match {pendingMatch.Id} ({pendingMatch.BitsMatchId})", e));
                Log.Warn(e);
                return(Ok(e.ToString()));
            }

            return(Ok());
        }
예제 #5
0
    public async Task CanParseHomeTeam()
    {
        // Arrange
        const int ClubId = 1660;

        // Act
        Parse4Result?result = new BitsParser(homePlayers).Parse4(await BitsGateway.GetBitsMatchResult(3060835), ClubId);

        Assert.That(result !.TeamScore, Is.EqualTo(18));
        Assert.That(result.OpponentScore, Is.EqualTo(1));
        Assert.That(result.Turn, Is.EqualTo(11));
        ResultSeries4ReadModel.Serie[] series = result.Series;

        // Assert
        Assert.That(series.Length, Is.EqualTo(4));
        ResultSeries4ReadModel.Serie serie1 = series[0];
        Assert.That(serie1.Games, Has.Count.EqualTo(4));
        VerifyGame(serie1.Games[0], Tuple.Create(0, "player-1", 138));
        VerifyGame(serie1.Games[1], Tuple.Create(1, "player-2", 178));
        VerifyGame(serie1.Games[2], Tuple.Create(1, "player-3", 183));
        VerifyGame(serie1.Games[3], Tuple.Create(1, "player-4", 131));

        ResultSeries4ReadModel.Serie serie2 = series[1];
        Assert.That(serie2.Games, Has.Count.EqualTo(4));
        VerifyGame(serie2.Games[0], Tuple.Create(1, "player-3", 152));
        VerifyGame(serie2.Games[1], Tuple.Create(1, "player-4", 189));
        VerifyGame(serie2.Games[2], Tuple.Create(1, "player-1", 205));
        VerifyGame(serie2.Games[3], Tuple.Create(1, "player-2", 136));

        ResultSeries4ReadModel.Serie serie3 = series[2];
        Assert.That(serie3.Games, Has.Count.EqualTo(4));
        VerifyGame(serie3.Games[0], Tuple.Create(1, "player-4", 223));
        VerifyGame(serie3.Games[1], Tuple.Create(1, "player-3", 251));
        VerifyGame(serie3.Games[2], Tuple.Create(1, "player-2", 158));
        VerifyGame(serie3.Games[3], Tuple.Create(1, "player-1", 149));

        ResultSeries4ReadModel.Serie serie4 = series[3];
        Assert.That(serie4.Games, Has.Count.EqualTo(4));
        VerifyGame(serie4.Games[0], Tuple.Create(1, "player-2", 179));
        VerifyGame(serie4.Games[1], Tuple.Create(1, "player-1", 181));
        VerifyGame(serie4.Games[2], Tuple.Create(1, "player-4", 183));
        VerifyGame(serie4.Games[3], Tuple.Create(0, "player-3", 167));
    }
예제 #6
0
    public async Task CanParseAwayTeam()
    {
        // Arrange
        const int ClubId = 34534;

        // Act
        Parse4Result?result = new BitsParser(awayPlayers).Parse4(await BitsGateway.GetBitsMatchResult(3060835), ClubId);

        Assert.That(result !.TeamScore, Is.EqualTo(1));
        Assert.That(result.OpponentScore, Is.EqualTo(18));
        Assert.That(result.Turn, Is.EqualTo(11));
        ResultSeries4ReadModel.Serie[] series = result.Series;

        // Assert
        Assert.That(series.Length, Is.EqualTo(4));
        ResultSeries4ReadModel.Serie serie1 = series[0];
        Assert.That(serie1.Games.Count, Is.EqualTo(4));
        VerifyGame(serie1.Games[0], Tuple.Create(1, "player-5", 160));
        VerifyGame(serie1.Games[1], Tuple.Create(0, "player-6", 117));
        VerifyGame(serie1.Games[2], Tuple.Create(0, "player-7", 139));
        VerifyGame(serie1.Games[3], Tuple.Create(0, "player-8", 83));

        ResultSeries4ReadModel.Serie serie2 = series[1];
        Assert.That(serie2.Games.Count, Is.EqualTo(4));
        VerifyGame(serie2.Games[0], Tuple.Create(0, "player-8", 122));
        VerifyGame(serie2.Games[1], Tuple.Create(0, "player-7", 156));
        VerifyGame(serie2.Games[2], Tuple.Create(0, "player-6", 101));
        VerifyGame(serie2.Games[3], Tuple.Create(0, "player-5", 133));

        ResultSeries4ReadModel.Serie serie3 = series[2];
        Assert.That(serie3.Games.Count, Is.EqualTo(4));
        VerifyGame(serie3.Games[0], Tuple.Create(0, "player-6", 148));
        VerifyGame(serie3.Games[1], Tuple.Create(0, "player-5", 142));
        VerifyGame(serie3.Games[2], Tuple.Create(0, "player-9", 118));
        VerifyGame(serie3.Games[3], Tuple.Create(0, "player-7", 136));

        ResultSeries4ReadModel.Serie serie4 = series[3];
        Assert.That(serie4.Games.Count, Is.EqualTo(4));
        VerifyGame(serie4.Games[0], Tuple.Create(0, "player-7", 134));
        VerifyGame(serie4.Games[1], Tuple.Create(0, "player-9", 119));
        VerifyGame(serie4.Games[2], Tuple.Create(0, "player-5", 122));
        VerifyGame(serie4.Games[3], Tuple.Create(0, "player-6", 167));
    }
예제 #7
0
    public async Task CanParseAwayTeam()
    {
        // Arrange
        const int ClubId = 1660;

        // Act
        ParseResult?result = new BitsParser(playersTeamA).Parse(await BitsGateway.GetBitsMatchResult(3048747), ClubId);

        Assert.That(result !.TeamScore, Is.EqualTo(10));
        Assert.That(result.OpponentScore, Is.EqualTo(9));
        ResultSeriesReadModel.Serie[] series = result.Series;

        // Assert
        Assert.That(series.Length, Is.EqualTo(4));
        ResultSeriesReadModel.Serie serie1 = series[0];
        Assert.That(serie1.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie1.Tables[0], Tuple.Create(1, "player-3", 202, "player-10", 204));
        VerifyTable(serie1.Tables[1], Tuple.Create(0, "player-1", 196, "player-2", 234));
        VerifyTable(serie1.Tables[2], Tuple.Create(1, "player-7", 205, "player-8", 247));
        VerifyTable(serie1.Tables[3], Tuple.Create(1, "player-5", 227, "player-6", 212));

        ResultSeriesReadModel.Serie serie2 = series[1];
        Assert.That(serie2.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie2.Tables[0], Tuple.Create(0, "player-5", 182, "player-6", 213));
        VerifyTable(serie2.Tables[1], Tuple.Create(0, "player-7", 226, "player-8", 211));
        VerifyTable(serie2.Tables[2], Tuple.Create(1, "player-1", 218, "player-2", 269));
        VerifyTable(serie2.Tables[3], Tuple.Create(0, "player-3", 232, "player-10", 162));

        ResultSeriesReadModel.Serie serie3 = series[2];
        Assert.That(serie3.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie3.Tables[0], Tuple.Create(0, "player-1", 200, "player-2", 212));
        VerifyTable(serie3.Tables[1], Tuple.Create(0, "player-3", 202, "player-10", 201));
        VerifyTable(serie3.Tables[2], Tuple.Create(0, "player-5", 202, "player-6", 187));
        VerifyTable(serie3.Tables[3], Tuple.Create(1, "player-7", 232, "player-8", 201));

        ResultSeriesReadModel.Serie serie4 = series[3];
        Assert.That(serie4.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie4.Tables[0], Tuple.Create(1, "player-7", 217, "player-8", 203));
        VerifyTable(serie4.Tables[1], Tuple.Create(1, "player-5", 178, "player-6", 267));
        VerifyTable(serie4.Tables[2], Tuple.Create(0, "player-3", 180, "player-10", 229));
        VerifyTable(serie4.Tables[3], Tuple.Create(0, "player-1", 183, "player-2", 175));
    }
예제 #8
0
    public async Task CanParseHomeTeam()
    {
        // Arrange
        const int ClubId = 1660;

        // Act
        ParseResult?result = new BitsParser(playersTeamA).Parse(await BitsGateway.GetBitsMatchResult(3048746), ClubId);

        Assert.That(result !.TeamScore, Is.EqualTo(11));
        Assert.That(result.OpponentScore, Is.EqualTo(9));
        ResultSeriesReadModel.Serie[] series = result.Series;

        // Assert
        Assert.That(series.Length, Is.EqualTo(4));
        ResultSeriesReadModel.Serie serie1 = series[0];
        Assert.That(serie1.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie1.Tables[0], Tuple.Create(1, "player-1", 202, "player-2", 219));
        VerifyTable(serie1.Tables[1], Tuple.Create(0, "player-3", 203, "player-4", 169));
        VerifyTable(serie1.Tables[2], Tuple.Create(1, "player-5", 206, "player-6", 195));
        VerifyTable(serie1.Tables[3], Tuple.Create(0, "player-7", 234, "player-8", 165));

        ResultSeriesReadModel.Serie serie2 = series[1];
        Assert.That(serie2.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie2.Tables[0], Tuple.Create(1, "player-5", 205, "player-6", 212));
        VerifyTable(serie2.Tables[1], Tuple.Create(0, "player-7", 192, "player-8", 192));
        VerifyTable(serie2.Tables[2], Tuple.Create(1, "player-1", 212, "player-2", 237));
        VerifyTable(serie2.Tables[3], Tuple.Create(1, "player-3", 202, "player-4", 199));

        ResultSeriesReadModel.Serie serie3 = series[2];
        Assert.That(serie3.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie3.Tables[0], Tuple.Create(0, "player-7", 206, "player-8", 204));
        VerifyTable(serie3.Tables[1], Tuple.Create(1, "player-5", 215, "player-6", 211));
        VerifyTable(serie3.Tables[2], Tuple.Create(0, "player-3", 184, "player-4", 172));
        VerifyTable(serie3.Tables[3], Tuple.Create(0, "player-1", 175, "player-2", 188));

        ResultSeriesReadModel.Serie serie4 = series[3];
        Assert.That(serie4.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie4.Tables[0], Tuple.Create(0, "player-3", 213, "player-9", 173));
        VerifyTable(serie4.Tables[1], Tuple.Create(1, "player-1", 188, "player-2", 213));
        VerifyTable(serie4.Tables[2], Tuple.Create(1, "player-7", 194, "player-8", 255));
        VerifyTable(serie4.Tables[3], Tuple.Create(1, "player-5", 226, "player-6", 210));
    }
예제 #9
0
        public async Task <ActionResult> CreateBitsVerify(VerifyBitsViewModel vm)
        {
            if (DocumentSession.Query <Roster, RosterSearchTerms>()
                .SingleOrDefault(x => x.BitsMatchId == vm.BitsMatchId) != null)
            {
                ModelState.AddModelError("BitsMatchId", "Matchen redan upplagd");
            }

            if (ModelState.IsValid == false)
            {
                return(View("CreateBits"));
            }

            int           season        = DocumentSession.LatestSeasonOrDefault(DateTime.Now.Year);
            WebsiteConfig websiteConfig = DocumentSession.Load <WebsiteConfig>(WebsiteConfig.GlobalId);

            Infrastructure.Bits.Contracts.HeadInfo content = await bitsClient.GetHeadInfo(vm.BitsMatchId);

            ParseHeaderResult header = BitsParser.ParseHeader(content, websiteConfig.ClubId);

            ViewBag.TeamNamesAndLevels = websiteConfig.TeamNamesAndLevels;
            return(View(
                       "Create", new CreateRosterViewModel
            {
                Season = season,
                Turn = header.Turn,
                BitsMatchId = vm.BitsMatchId,
                Team = header.Team,
                IsFourPlayer = false,
                Opponent = header.Opponent,
                Date = header.Date.ToString(DateTimeFormat),
                Location = header.Location,
                OilPatternName = header.OilPattern.Name,
                OilPatternUrl = header.OilPattern.Url
            }));
        }
예제 #10
0
    public async Task CanParseThreeSeries()
    {
        // Arrange
        const int ClubId = 1660;

        Player[] players = new[]
        {
            new Player("Daniel Solvander", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-1"
            },
            new Player("Daniel Lidström", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-2"
            },
            new Player("Thomas Gurell", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-3"
            },
            new Player("Lennart Axelsson", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-4"
            },
            new Player("Håkan Gustavsson", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-5"
            },
            new Player("Kjell Johansson", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-6"
            },
            new Player("Bengt Solvander", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-7"
            },
            new Player("Stefan Traav", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-8"
            },
            new Player("Matz Classon", "*****@*****.**", Player.Status.Active, 0, null, new string[0])
            {
                Id = "player-9"
            }
        };

        // Act
        ParseResult?result = new BitsParser(players).Parse(await BitsGateway.GetBitsMatchResult(3067035), ClubId);

        Assert.That(result !.TeamScore, Is.EqualTo(10));
        Assert.That(result.OpponentScore, Is.EqualTo(5));
        Assert.That(result.Turn, Is.EqualTo(24));
        ResultSeriesReadModel.Serie[] series = result.Series;

        // Assert
        Assert.That(series.Length, Is.EqualTo(3));
        ResultSeriesReadModel.Serie serie1 = series[0];
        Assert.That(serie1.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie1.Tables[0], Tuple.Create(1, "player-1", 200, "player-2", 199));
        VerifyTable(serie1.Tables[1], Tuple.Create(1, "player-3", 160, "player-4", 257));
        VerifyTable(serie1.Tables[2], Tuple.Create(1, "player-5", 214, "player-6", 195));
        VerifyTable(serie1.Tables[3], Tuple.Create(1, "player-7", 175, "player-8", 241));

        ResultSeriesReadModel.Serie serie2 = series[1];
        Assert.That(serie1.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie2.Tables[0], Tuple.Create(1, "player-7", 165, "player-8", 217));
        VerifyTable(serie2.Tables[1], Tuple.Create(0, "player-5", 180, "player-6", 158));
        VerifyTable(serie2.Tables[2], Tuple.Create(0, "player-3", 176, "player-4", 197));
        VerifyTable(serie2.Tables[3], Tuple.Create(1, "player-1", 145, "player-2", 161));

        ResultSeriesReadModel.Serie serie3 = series[2];
        Assert.That(serie1.Tables.Count, Is.EqualTo(4));
        VerifyTable(serie3.Tables[0], Tuple.Create(0, "player-3", 180, "player-4", 222));
        VerifyTable(serie3.Tables[1], Tuple.Create(1, "player-1", 159, "player-2", 277));
        VerifyTable(serie3.Tables[2], Tuple.Create(1, "player-7", 166, "player-8", 234));
        VerifyTable(serie3.Tables[3], Tuple.Create(0, "player-5", 143, "player-6", 171));
    }
예제 #11
0
    public override async Task Handle(HandlerContext <Command> context)
    {
        Roster roster = CompositionRoot.DocumentSession.Load <Roster>(context.Payload.RosterId);

        if (roster.IsVerified && context.Payload.Force == false)
        {
            return;
        }

        WebsiteConfig websiteConfig = CompositionRoot.DocumentSession.Load <WebsiteConfig>(WebsiteConfig.GlobalId);
        HeadInfo      result        = await CompositionRoot.BitsClient.GetHeadInfo(roster.BitsMatchId);

        ParseHeaderResult header = BitsParser.ParseHeader(result, websiteConfig.ClubId);

        // chance to update roster values
        Roster.Update update = new(
            Roster.ChangeType.VerifyMatchMessage,
            "system")
        {
            OilPattern = header.OilPattern,
            Date       = header.Date,
            Opponent   = header.Opponent,
            Location   = header.Location
        };
        if (roster.MatchResultId != null)
        {
            // update match result values
            BitsMatchResult bitsMatchResult = await CompositionRoot.BitsClient.GetBitsMatchResult(roster.BitsMatchId);

            Player[] players = CompositionRoot.DocumentSession.Query <Player, PlayerSearch>()
                               .ToArray()
                               .Where(x => x.PlayerItem?.LicNbr != null)
                               .ToArray();
            BitsParser parser = new(players);
            if (roster.IsFourPlayer)
            {
                MatchResult4?matchResult = CompositionRoot.EventStoreSession.Load <MatchResult4>(roster.MatchResultId);
                Parse4Result?parseResult = parser.Parse4(bitsMatchResult, websiteConfig.ClubId);
                update.Players = parseResult !.GetPlayerIds();
                bool isVerified = matchResult !.Update(
                    t => context.PublishMessage(t),
                    roster,
                    parseResult.TeamScore,
                    parseResult.OpponentScore,
                    roster.BitsMatchId,
                    parseResult.CreateMatchSeries(),
                    players);
                update.IsVerified = isVerified;
            }
            else
            {
                MatchResult?matchResult =
                    CompositionRoot.EventStoreSession.Load <MatchResult>(roster.MatchResultId);
                ParseResult?parseResult = parser.Parse(bitsMatchResult, websiteConfig.ClubId);
                update.Players = parseResult !.GetPlayerIds();
                Dictionary <string, ResultForPlayerIndex.Result> resultsForPlayer =
                    CompositionRoot.DocumentSession.Query <ResultForPlayerIndex.Result, ResultForPlayerIndex>()
                    .Where(x => x.Season == roster.Season)
                    .ToArray()
                    .ToDictionary(x => x.PlayerId);
                MatchSerie[] matchSeries = parseResult.CreateMatchSeries();
                bool         isVerified  = matchResult !.Update(
                    t => context.PublishMessage(t),
                    roster,
                    parseResult.TeamScore,
                    parseResult.OpponentScore,
                    matchSeries,
                    parseResult.OpponentSeries,
                    players,
                    resultsForPlayer);
                update.IsVerified = isVerified;
            }
        }

        _ = roster.UpdateWith(context.CorrelationId, update);
    }
예제 #12
0
        private async Task <IHttpActionResult> Handle(VerifyMatchMessage message)
        {
            Roster roster = DocumentSession.Load <Roster>(message.RosterId);

            if (roster.IsVerified && message.Force == false)
            {
                return(Ok());
            }
            WebsiteConfig websiteConfig = DocumentSession.Load <WebsiteConfig>(WebsiteConfig.GlobalId);
            HeadInfo      result        = await bitsClient.GetHeadInfo(roster.BitsMatchId);

            ParseHeaderResult header = BitsParser.ParseHeader(result, websiteConfig.ClubId);

            // chance to update roster values
            var update = new Roster.Update(
                Roster.ChangeType.VerifyMatchMessage,
                "system")
            {
                OilPattern = header.OilPattern,
                Date       = header.Date,
                Opponent   = header.Opponent,
                Location   = header.Location
            };

            if (roster.MatchResultId != null)
            {
                // update match result values
                BitsMatchResult bitsMatchResult = await bitsClient.GetBitsMatchResult(roster.BitsMatchId);

                Player[] players = DocumentSession.Query <Player, PlayerSearch>()
                                   .ToArray()
                                   .Where(x => x.PlayerItem?.LicNbr != null)
                                   .ToArray();
                var parser = new BitsParser(players);
                if (roster.IsFourPlayer)
                {
                    MatchResult4 matchResult = EventStoreSession.Load <MatchResult4>(roster.MatchResultId);
                    Parse4Result parseResult = parser.Parse4(bitsMatchResult, websiteConfig.ClubId);
                    update.Players = GetPlayerIds(parseResult);
                    bool isVerified = matchResult.Update(
                        PublishMessage,
                        roster,
                        parseResult.TeamScore,
                        parseResult.OpponentScore,
                        roster.BitsMatchId,
                        parseResult.CreateMatchSeries(),
                        players);
                    update.IsVerified = isVerified;
                }
                else
                {
                    MatchResult matchResult = EventStoreSession.Load <MatchResult>(roster.MatchResultId);
                    ParseResult parseResult = parser.Parse(bitsMatchResult, websiteConfig.ClubId);
                    update.Players = GetPlayerIds(parseResult);
                    var resultsForPlayer = DocumentSession.Query <ResultForPlayerIndex.Result, ResultForPlayerIndex>()
                                           .Where(x => x.Season == roster.Season)
                                           .ToArray()
                                           .ToDictionary(x => x.PlayerId);
                    MatchSerie[] matchSeries = parseResult.CreateMatchSeries();
                    bool         isVerified  = matchResult.Update(
                        PublishMessage,
                        roster,
                        parseResult.TeamScore,
                        parseResult.OpponentScore,
                        matchSeries,
                        parseResult.OpponentSeries,
                        players,
                        resultsForPlayer);
                    update.IsVerified = isVerified;
                }
            }

            roster.UpdateWith(Trace.CorrelationManager.ActivityId, update);
            return(Ok());
        }