public IBkaData Get(long playerId) { IBkaData result = null; string bkaJson = null; using (var connection = new MySqlConnection(ConnectionString)) { connection.Open(); using (var command = new MySqlCommand()) { command.Connection = connection; command.CommandText = @"SELECT datavalue FROM data WHERE datatypename = 'bka' and datarealm = 'ns2' AND datarecordid = @PlayerId;"; command.Prepare(); command.Parameters.AddWithValue("@PlayerId", playerId); using (var reader = command.ExecuteReader()) { while (reader.Read()) { bkaJson = reader.GetString("datavalue"); } } } } if (!string.IsNullOrWhiteSpace(bkaJson)) { result = _bkaDataParser.Parse(bkaJson); } return(result); }
private void NotifyCameraAdders(IGame game, IBkaData bkaData, HttpRequestBase httpRequestBase) { var bka = bkaData.Bka; var mapName = game.MapName; var when = game.Created.ToShortDateString(); var minutes = Convert.ToInt32(game.DurationInSeconds / 60); var message = $@"{bka} has uploaded a new camera for ""{mapName} {when} [{minutes}m]"""; var gameRecordings = _gameRecordingsGetter.Get(game.ServerName, game.StartTimeSeconds); var gameRecordingPlayerIds = gameRecordings.Select(x => x.PlayerId).ToList(); if (gameRecordingPlayerIds.Count > 1) { if (ScheduledTaskRegistry.BotTask.B != null) { var playerSteamIds = gameRecordingPlayerIds.Select(_playerIdAdapter.Adapt).ToList(); var cameraCount = playerSteamIds.Count; var url = Url.Action("Watch", "Replay", new { serverName = game.ServerName, startTimeSeconds = game.StartTimeSeconds }, httpRequestBase.Url.Scheme); message = $@"{message} ({cameraCount} total cameras now)!"; var steamMessage = $@"{message} {url} -- If you don't want these Replay notifications, please give that feedback to Wyzcrak ( https://steamcommunity.com/id/wyzcrak )."; playerSteamIds.Where(x => !ReplayNotificationOptOutNs2Ids.Contains(x.AccountID)).ForEach(playerSteamId => { ScheduledTaskRegistry.BotTask.AddDailySteamMessage(new ScheduledTaskRegistry.DailySteamMessage(DateTime.Now, playerSteamId, steamMessage)); }); } } var serverModels = _serverGetter.Get(); foreach (var serverModel in serverModels) { _serverAdminCommandSender.Send(serverModel.WebAdminBaseUrl, UserName, PlayerId, $"sh_printallconsoles REPLAY {message} -- M > TGNS Portal > Replay", false); } }
public DeletableGameRecording(IGame game, long playerId, IBkaData bkaData) { Game = game; PlayerId = playerId; BkaData = bkaData; }