public Task Add(PlayerMeritTable playerMeritTable, GameXPlayer playerGame, Team team, CompetitionEvent competitionEvent, MeritCalculationEngine config) { var line = playerMeritTable.GetOrCreateLine(team, playerGame.Player); var gameCalculationEngine = this._gameCalculationEngineFactory.Create(playerGame.Game.GameCalculationEngineID); line.Add(playerGame); var droppedChalks = gameCalculationEngine.CalculateDroppedChalks(playerGame); line.AddDroppedChalks(playerGame, droppedChalks); var opponentScoresInWonGames = ListHelper.ConvertToList(line.DataString1); var playerScoresInLostGames = ListHelper.ConvertToList(line.DataString2); ListHelper.AddResultToLists(playerGame, opponentScoresInWonGames, playerScoresInLostGames); this.CalculateAdditionalData(line, playerGame, competitionEvent, config, gameCalculationEngine, opponentScoresInWonGames, playerScoresInLostGames); return(Task.CompletedTask); }