示例#1
0
    public async Task <ProcessedPlayer> process()
    {
        _previousData = await _playerProvider.getPlayer(_footballer.id);

        if (_currentExplains == null)
        {
            _log.Warn(string.Format("No explains: {0}\n", _footballer.web_name));
            return(_previousData);
        }

        ProcessedPlayer currentPlayerData = new ProcessedPlayer(_footballer, _currentExplains, _previousData);

        determineFixtureStatus(currentPlayerData);
        var prevElements = _previousData != null && _previousData.rawData != null ?_previousData.rawData.explain : new List <FootballerScoreDetailElement>();
        List <FootballerScoreDetailElement> currExplains = _currentExplains;

        for (var i = 0; i < currExplains.Count; i++)
        {
            FootballerScoreDetailElement prevExplain = i < prevElements.Count ? prevElements[i] : null;
            FootballerScoreDetailElement diff        = getPlayerDiff(currExplains[i], prevExplain);
            addNewEvents(currentPlayerData.events, diff, _footballer, currExplains[i]);
        }

        return(currentPlayerData);
    }
    public static ProcessedPlayer ApiPlayer(ProcessedPlayer oldData)
    {
        var newPlayer = new ProcessedPlayer(oldData.rawData.footballer, oldData.rawData.explain, oldData);

        newPlayer.rawData = null;
        return(newPlayer);
    }
 public ProcessedPick(ProcessedPlayer player, Pick p)
 {
     footballer = player;
     pick       = p;
     if (player.rawData.explains != null)
     {
         score = new ScoreCalculator().calculateFootballerScore(player.rawData.explains) * pick.multiplier;
     }
 }
示例#4
0
    public async Task <ProcessedPlayer> getPlayer(int id)
    {
        if (_playerCache == null)
        {
            await readAllPlayers();
        }

        ProcessedPlayer player = null;

        return(_playerCache.players.TryGetValue(id, out player) ? player : null);
    }
    public ProcessedPlayerCollection copyApi()
    {
        var api = new ProcessedPlayerCollection();

        foreach (var elementId in players.Keys)
        {
            var element = players[elementId];
            if (element.events != null && element.events.Count > 0)
            {
                api.players.Add(elementId, ProcessedPlayer.ApiPlayer(element));
            }
        }
        return(api);
    }
示例#6
0
    private void determineFixtureStatus(ProcessedPlayer player)
    {
        player.isCurrentlyPlaying = false;
        player.isDonePlaying      = false;
        int realTeamId = _footballer.team;

        foreach (Fixture fixture in _currentLiveData.fixtures)
        {
            if (fixture.team_a == realTeamId || fixture.team_h == realTeamId)
            {
                if (isFixtureInProgress(fixture))
                {
                    player.isCurrentlyPlaying = true;
                }
                else if (isFixtureComplete(fixture))
                {
                    player.isDonePlaying = true;
                }
            }
        }
    }
 public ProcessedPlayer(Footballer footballer, List <FootballerScoreDetailElement> explains, ProcessedPlayer oldData)
 {
     rawData.footballer = footballer;
     rawData.explain    = explains;
     if (oldData != null)
     {
         isCurrentlyPlaying = oldData.isCurrentlyPlaying;
         isDonePlaying      = oldData.isDonePlaying;
         oldData.events.ForEach(e => events.Add(e));
     }
 }