public LoadPlayerDataResponse(LoadPlayerDataRequest playerData) { using (CSSStatsDataContext statsDB = new CSSStatsDataContext()) { using (CSSDataContext db = new CSSDataContext()) { var login = Login.FindLoginByUsernameOrCallsign(db, playerData.LoginUsername); if (login == null) { Succeeded = false; ErrorMessage = "Couldn't find player's login user id."; return; } ScoreQueue scoreQueue = statsDB.ScoreQueues.FirstOrDefault(p => p.LoginId == login.Id && p.GameGuid == playerData.GameGuid); if (scoreQueue == null) { statsDB.ScoreQueues.InsertOnSubmit(new ScoreQueue() { LoginId = login.Id, GameGuid = playerData.GameGuid, Score = playerData.Score, PilotBaseKills = playerData.PilotBaseKills, PilotBaseCaptures = playerData.PilotBaseCaptures, WarpsSpotted = playerData.WarpsSpotted, AsteroidsSpotted = playerData.AsteroidsSpotted, MinerKills = playerData.MinerKills, BuilderKills = playerData.BuilderKills, LayerKills = playerData.LayerKills, CarrierKills = playerData.CarrierKills, PlayerKills = playerData.PlayerKills, BaseKills = playerData.BaseKills, BaseCaptures = playerData.BaseCaptures, TechsRecovered = playerData.TechsRecovered, Flags = playerData.Flags, Artifacts = playerData.Artifacts, Rescues = playerData.Rescues, Kills = playerData.Kills, Assists = playerData.Assists, Deaths = playerData.Deaths, Ejections = playerData.Ejections, Win = playerData.Win, Lose = playerData.Lose, CommandWin = playerData.CommandWin, CommandLose = playerData.CommandLose, TimePlayed = playerData.TimePlayed, TimeCommanded = playerData.TimeCommanded, CommandCredit = playerData.CommandCredit, CombatRating = playerData.CombatRating }); } statsDB.SubmitChanges(); } } this.Succeeded = true; }
public static List<IMessage> GetGroupMessages(CSSDataContext db, string callsign) { var messages = new List<IMessage>(); var aliases = Alias.ListAliases(db, callsign); foreach (var alias in aliases) { messages.AddRange( alias.GroupMessage_Alias.Where(p => p.DateViewed == null).Select(p => (IMessage) p.GroupMessage).ToList() ); //messages.AddRange(alias.GroupMessages // .Where( // p => p.DateExpires <= DateTime.Now // && p.DateToSend >= DateTime.Now // && p.GroupMessage_Alias // .FirstOrDefault(r => r.Alias == alias && r.DateViewed == null) != null) // .Select(q => (IMessage)q).ToList()); foreach (var gma in alias.GroupMessage_Alias.Where(p => p.DateViewed == null && messages.Select(q => q.Id).Contains(p.GroupMessageId))) { //if (messages.FirstOrDefault(p => p.Id == gma.GroupMessageId) != null) gma.DateViewed = DateTime.Now; } db.SubmitChanges(); } return messages; }
protected void btnSaveNewGroup_Click(object sender, EventArgs e) { using(CSSDataContext db = new CSSDataContext()) { if (db.Groups.FirstOrDefault(p => p.Name == txtName.Text.Trim()) != null) { lblErrorText.Text = "The group or squad name you specified: " + txtName.Text + " already exists."; return; } if (db.Groups.FirstOrDefault(p => p.Tag == txtTag.Text.Trim()) != null) { lblErrorText.Text = "The tag name you specified: " + txtTag.Text + " already exists."; return; } db.Groups.InsertOnSubmit(new Group() { Name = txtName.Text.Trim(), DateCreated = DateTime.Now, IsSquad = chkIsSquad.Checked, Tag = txtTag.Text }); db.SubmitChanges(); this.DataBind(); } }
public static bool Handle(HttpContext context, int lobbyId, string filename) { using (var db = new CSSDataContext()) { if (filename.Contains("..")) throw new Exception("Could not load path."); var lobby = db.Lobbies.Single(p => p.IsEnabled && p.Id == lobbyId); var filepath = Path.Combine(lobby.BasePath, filename); //If file is not found, attempt to send file from the default path var info = new FileInfo(filepath); if (!info.Exists) { filepath = Path.Combine(ConfigurationManager.AppSettings["DefaultLobbyPath"], filename); info = new FileInfo(filepath); if (!info.Exists) throw new FileNotFoundException(); } //Transmit the file context.Response.Clear(); context.Response.ContentType = "application/octet-stream"; context.Response.AddHeader("Content-Length", info.Length.ToString()); context.Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", Path.GetFileName(filename))); context.Response.TransmitFile(filepath); } return true; }
protected void cvCaptcha_ServerValidate(object source, ServerValidateEventArgs args) { bool isValid = false; if (ViewState["captchaToken"] != null) { Guid captchaToken = (Guid)ViewState["captchaToken"]; using (CSSDataContext db = new CSSDataContext()) { var captcha = db.Captchas.FirstOrDefault(p => p.Id == captchaToken); //args.Value //CustomValidator cvCaptcha = (CustomValidator)source; //TextBox txtValidationCode = (TextBox) cvCaptcha.ControlToValidate; if (captcha != null && args.Value.Equals(captcha.Answer, StringComparison.InvariantCultureIgnoreCase) == true) { isValid = true; } } } if (isValid == false) ViewState["captchaToken"] = null; args.IsValid = isValid; }
public static void CreateUser(string user, string password, string email) { using (var db = new CSSDataContext()) { var identity = new Identity() { DateLastLogin = DateTime.Now, LastGlobalMessageDelivery = DateTime.Now }; var login = new Login() { Username = user, Password = Hash(password), Email = email, DateCreated = DateTime.Now, }; var alias = new Alias() { Callsign = user, DateCreated = DateTime.Now, IsDefault = true, IsActive = true }; login.Aliases.Add(alias); identity.Logins.Add(login); login.Lobby_Logins.Add(new Lobby_Login() { Lobby = db.Lobbies.First(p => p.Name == "Production") }); db.Identities.InsertOnSubmit(identity); db.SubmitChanges(); } }
public void TestCheckForUpdates() { int lobbyId = 0; using (var db = new CSSDataContext()) { //Create autoupdate files var file = new AutoUpdateFile() { Filename = "mdl", IsProtected = true }; db.AutoUpdateFiles.InsertOnSubmit(file); var lobby = db.Lobbies.FirstOrDefault(); lobbyId = lobby.Id; file.AutoUpdateFile_Lobbies.Add(new AutoUpdateFile_Lobby() { CurrentVersion = "1.0", DateCreated = DateTime.Now, DateModified = DateTime.Now, Lobby = lobby, ValidChecksum = "VALID" }); db.SubmitChanges(); } var clientService = new ClientService(); var files = clientService.CheckForUpdates(lobbyId); var fileResult = files.Files.FirstOrDefault(); Assert.AreEqual(1, files.Files.Count); Assert.IsTrue(fileResult.IsProtected); Assert.AreEqual("mdl", fileResult.Filename); Assert.AreEqual("VALID", fileResult.ValidChecksum.Trim()); Assert.AreEqual("1.0", fileResult.CurrentVersion); Assert.AreEqual(lobbyId, fileResult.LobbyId); }
protected void btnSubmit_Click(object sender, EventArgs e) { using(CSSDataContext db = new CSSDataContext()) { // If the page loaded, then don't worry about the date at this point, they'll get a free ride if // they camped on the page for a while. The date is just to keep the enemy from getting a hold // of an old email and coming back in with it. var logins = db.Logins.Where(p => p.PasswordResetGuid == new Guid(Request.Params["resetGuid"])); foreach(var login in logins) { CssMembershipProvider cssMembershipProvider = new CssMembershipProvider(); string tempPassword = cssMembershipProvider.ResetPassword(login.Username, null); cssMembershipProvider.ChangePassword(login.Username, tempPassword, txtPassword.Text); } db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, logins); foreach (var login in logins) { // Keep anyone from reusing an old password reset mail. login.PasswordResetGuid = Guid.Empty; } db.SubmitChanges(); } divResetPassword.Visible = false; divResetSuccess.Visible = true; }
public static bool Write(CSSDataContext db, LogType type, string message, bool submit) { try { db.Logs.InsertOnSubmit(new Log() { DateOccurred = DateTime.Now, Message = message, Type = (byte)type }); if (submit) db.SubmitChanges(); Console.WriteLine(String.Format("{0}: {1} {2}", DateTime.Now, type.ToString(), message)); return true; } catch(Exception error) { var errorMessage = new StringBuilder() .AppendLine("Failed to write data to log:") .Append("Type: ").AppendLine(type.ToString()) .Append("Message: ").AppendLine(message); Debug.WriteLine(errorMessage); Error.Write(db, new Exception(errorMessage.ToString(), error), submit); return false; } }
/// <summary> /// Calls BlackboxServer module to verify login and retrieve blackbox information. /// </summary> internal LoginResult Verify(bool useDebugBlackbox) { byte[] data; var alias = Alias; string ipAddress = "127.0.0.1"; if (HttpContext.Current != null) ipAddress = HttpContext.Current.Request.UserHostAddress; var result = Validation.CreateSession(ipAddress, Username, Password, LobbyId, useDebugBlackbox, ref alias, out data); int rank = 0; using (CSSDataContext db = new CSSDataContext()) { var rankDetail = DataAccess.Alias.GetRankForCallsign(db, alias); if (rankDetail != null) rank = (int)rankDetail.Rank; } return new LoginResult() { Status = result, BlackboxData = data, AcceptedAlias = alias, Rank = rank }; }
private void BindData() { using (CSSDataContext db = new CSSDataContext()) { gvPolls.DataSource = db.Polls.OrderByDescending(p => p.DateExpires); gvPolls.DataBind(); } }
public static void Clean() { using (var db = new CSSDataContext()) { db.Logs.DeleteAllOnSubmit(db.Logs.Where(p => p.DateOccurred < DateTime.Now.AddDays(-30))); db.SubmitChanges(); } }
public static void Clean() { using (var db = new CSSDataContext()) { db.LogIPs.DeleteAllOnSubmit(db.LogIPs.Where(p => p.LastAccessed < DateTime.Now.AddDays(-180))); db.SubmitChanges(); } }
internal static List<Ban> ListBans(string alias) { using (var db = new CSSDataContext()) { var login = Login.FindLoginByUsernameOrCallsign(db, alias); return login.Identity.Bans.ToList(); } }
public static Login FindLoginByUsernameOrCallsign(CSSDataContext db, string usernameOrCallsign) { var login = FindLoginByUsername(db, usernameOrCallsign); if (login == null) login = FindLoginByCallsign(db, usernameOrCallsign); return login; }
internal static ActiveKey GenerateBlackbox(CSSDataContext db, bool debugMode) { var key = Compiler.Build(debugMode); db.ActiveKeys.InsertOnSubmit(key); db.SubmitChanges(); return key; }
public static void MyClassInitialize(TestContext testContext) { using (var db = new CSSDataContext()) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } } }
public static List<Login_UnlinkedLogin> GetAllFromCache() { return CacheManager<List<Login_UnlinkedLogin>>.Get("DataAccessIdentity::AreIdentitiesPermanentlyUnlinked:Login_UnlinkedLogins", CacheSeconds.TenSeconds, delegate() { using (CSSDataContext db = new CSSDataContext()) { return db.Login_UnlinkedLogins.ToList(); } }); }
public static void RemoveExpiredCaptchas() { using (CSSDataContext db = new CSSDataContext()) { var timeout = DateTime.Now.AddSeconds(-CaptchaExpirationTimeInSeconds); var oldCaptchas = db.Captchas.Where(p => p.DateCreated < timeout); db.Captchas.DeleteAllOnSubmit(oldCaptchas); db.SubmitChanges(); } }
public static List<Login> GetAllFromCache() { return CacheManager<List<Login>>.Get("Login::GetAll()", CacheSeconds.TenSeconds, delegate() { using (CSSDataContext db = new CSSDataContext()) { return db.Logins.ToList(); } }); }
private void SaveTeams(Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext db, DataAccess.CSSStatsDataContext statsDB, Allegiance.CommunitySecuritySystem.Server.Data.GameDataset.GameRow gameRow, int gameIdentID) { foreach (Data.GameDataset.TeamRow teamRow in gameRow.GetTeamRows()) { var commanderAlias = DataAccess.Alias.GetAliasByCallsign(db, teamRow.Commander); int commanderLoginID = 0; if (commanderAlias != null) { commanderLoginID = commanderAlias.Login.Id; } DataAccess.GameTeam team = new Allegiance.CommunitySecuritySystem.DataAccess.GameTeam() { GameID = gameIdentID, GameTeamCommander = TrimString(teamRow.Commander, 49), GameTeamCommanderLoginID = commanderLoginID, GameTeamExpansion = teamRow.ResearchedExpansion, GameTeamFaction = teamRow.Faction, GameTeamID = teamRow.TeamID, GameTeamName = TrimString(teamRow.TeamName, 49), GameTeamNumber = teamRow.TeamNumber, GameTeamShipyard = teamRow.ResearchedShipyard, GameTeamStarbase = teamRow.ResearchedStarbase, GameTeamSupremacy = teamRow.ResearchedSupremacy, GameTeamTactical = teamRow.ResearchedTactical, GameTeamWinner = teamRow.Won }; statsDB.GameTeams.InsertOnSubmit(team); statsDB.SubmitChanges(); foreach (Data.GameDataset.TeamMemberRow teamMemberRow in teamRow.GetTeamMemberRows()) { var teamMemberAlias = DataAccess.Alias.GetAliasByCallsign(db, teamMemberRow.Callsign); int loginID = 0; if (teamMemberAlias != null) { loginID = teamMemberAlias.Login.Id; } DataAccess.GameTeamMember teamMember = new Allegiance.CommunitySecuritySystem.DataAccess.GameTeamMember() { GameTeamID = team.GameTeamIdentID, GameTeamMemberCallsign = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, teamMemberRow.Callsign), 49), GameTeamMemberDuration = teamMemberRow.Duration, GameTeamMemberLoginID = loginID }; statsDB.GameTeamMembers.InsertOnSubmit(teamMember); } statsDB.SubmitChanges(); } }
public static AutoUpdateResult RetrieveFileList(int lobbyId) { using (var db = new CSSDataContext()) { return new AutoUpdateResult() { AutoUpdateBaseAddress = ConfigurationManager.AppSettings["autoupdateBaseAddress"], Files = db.FindAutoUpdateFiles(lobbyId).ToList() }; } }
private static TransformMethod PickTransformMethod() { using (var db = new CSSDataContext()) { var random = new Random(); var methods = db.TransformMethods; var index = random.Next(0, methods.Count() - 1); return methods.Skip(index).Take(1).FirstOrDefault(); } }
public static DataAccess.IPConverge GetIPConverge(CSSDataContext db, string apiCode, int productId) { var ipConverge = db.IPConverges.FirstOrDefault(p => p.ApiCode == apiCode && p.ProductId == productId); if (ipConverge == null) throw new Exception("Invalid API Code."); //throw new XmlRpcFaultException(500, "Invalid API Code."); return ipConverge; }
public bool CheckLegacyAliasExists(string callsignWithTags) { // Prevent slamming on this call. System.Threading.Thread.Sleep(500); using (CSSDataContext db = new CSSDataContext()) { string callsign = Alias.GetCallsignFromStringWithTokensAndTags(db, callsignWithTags); return Alias.CheckLegacyAliasExists(callsign); } }
public static bool IsMachineInformationFromAVirtualMachine(CSSDataContext db, MachineInformation machineInformation, Login login) { var virtualMachineRecord = machineInformation.MachineValues.FirstOrDefault(p => db.VirtualMachineMarkers.Count(q => System.Data.Linq.SqlClient.SqlMethods.Like(p.Value, q.IdentifierMask) && (DeviceType) q.RecordTypeId == p.Type) > 0); if (virtualMachineRecord != null) { Log.Write(db, Enumerations.LogType.AuthenticationServer, "LoginID: " + login.Id + ", Name: " + login.Username + ", Virtual Machine Detected: name: " + virtualMachineRecord.Name + ", type: " + virtualMachineRecord.Type + ", value: " + virtualMachineRecord.Value + "."); return true; } return false; }
public static void CreateGroup(CSSDataContext db, string name, bool isSquad, string tag) { var g = new Group() { DateCreated = DateTime.Now, Name = name, IsSquad = isSquad, Tag = tag }; db.Groups.InsertOnSubmit(g); db.SubmitChanges(); }
public ListMessageResult ListMessages(AuthenticatedData data) { try { if (!data.Authenticate()) return null; using (var db = new CSSDataContext()) { var messages = new List<IMessage>(); messages.AddRange(GroupMessage.GetGroupMessages(db, data.Username)); messages.AddRange(PersonalMessage.GetPrivateMessages(db, data.Username)); messages.AddRange(GroupMessage.GetGlobalMessages(db, data.Username)); //Re-insert messages into list since windows services //don't seem to be able to handle objects wrapped in a baseclass. //var result = messages // .OrderByDescending(p => p.DateToSend) // .Select(p => new BaseMessage() //{ // Id = p.Id, // Sender = p.Sender, // Subject = p.Subject, // Message = p.Message, // DateCreated = p.DateToSend, //User doesn't actually have to know the date the message was created - only sent. // DateToSend = p.DateToSend, // DateExpires = p.DateExpires, //}).ToList(); //return result; ListMessageResult returnValue = new ListMessageResult(); returnValue.Messages = new List<ListMessageResult.ListMessage>(); messages.ForEach(p => returnValue.Messages.Add(new ListMessageResult.ListMessage() { DateCreated = p.DateCreated, DateExpires = p.DateExpires, DateToSend = p.DateToSend, Id = p.Id, Sender = p.Sender, Subject = p.Subject, Message = p.Message })); return returnValue; } } catch (Exception error) { Error.Write(error); throw; } }
public static DataAccess.IPConverge GetIPConverge() { using (var db = new CSSDataContext()) { var ipConverge = db.IPConverges.FirstOrDefault(); if (ipConverge == null) throw new Exception("IP.Converge Handshake has not been performed."); return ipConverge; } }
protected void btnRecalculatePoll_Click(object sender, EventArgs e) { using (CSSDataContext db = new CSSDataContext()) { var poll = db.Polls.FirstOrDefault(p => p.Id == PollID); poll.Recalculate(); db.SubmitChanges(); } BindData(); }
public static int GetAliasLimit(CSSDataContext db, Login login) { int aliasLimit = DefaultAliasLimit; if (login.HasRole(Common.Enumerations.RoleType.Administrator) == true || login.HasRole(Common.Enumerations.RoleType.SuperAdministrator) == true) aliasLimit = AdminAliasLimit; else if (login.HasRole(Common.Enumerations.RoleType.ZoneLeader) == true) aliasLimit = ZoneLeaderAliasLimit; else if (login.HasRole(Common.Enumerations.RoleType.Moderator) == true) aliasLimit = ModeratorAliasLimit; return aliasLimit; }
public void GetCallsignFromStringWithTokensAndTags() { string noTags = "BackTrak"; string withTag = "BackTrak@BS"; string withToken = "?BackTrak"; string withTagAndToken = "*BackTrak@BS"; using (DataAccess.CSSDataContext db = new Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext()) { Assert.AreEqual(noTags, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, noTags)); Assert.AreEqual(noTags, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, withTag)); Assert.AreEqual(noTags, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, withToken)); Assert.AreEqual(noTags, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, withTagAndToken)); } }
private void SaveChatLog(Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext db, DataAccess.CSSStatsDataContext statsDB, Allegiance.CommunitySecuritySystem.Server.Data.GameDataset.GameRow gameRow, int gameIdentID) { foreach (Data.GameDataset.ChatLogRow chatLogRow in gameRow.GetChatLogRows()) { DataAccess.GameChatLog chatLog = new Allegiance.CommunitySecuritySystem.DataAccess.GameChatLog() { GameChatSpeakerName = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, chatLogRow.SpeakerName), 49), GameChatTargetName = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, chatLogRow.TargetName), 49), GameChatText = TrimString(chatLogRow.Text, 2063), GameChatTime = chatLogRow.ChatTime, GameID = gameIdentID }; statsDB.GameChatLogs.InsertOnSubmit(chatLog); } }
private void UpdateLeaderboard(int gameIdentID) { using (DataAccess.CSSDataContext db = new Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext()) { using (DataAccess.CSSStatsDataContext statsDB = new Allegiance.CommunitySecuritySystem.DataAccess.CSSStatsDataContext()) { var game = statsDB.Games.FirstOrDefault(p => p.GameIdentID == gameIdentID); if (game == null) { throw new Exception("Couldn't get game for ID: " + gameIdentID); } if (IsGameEligibleForLogging(game) == false) { return; } bool isDrawGame = IsDrawGame(game); foreach (DataAccess.GameTeam team in game.GameTeams) { var commanderAlias = DataAccess.Alias.GetAliasByCallsign(db, team.GameTeamCommander); foreach (DataAccess.GameTeamMember teamMember in team.GameTeamMembers) { int shipKills = 0; int stationKills = 0; int stationCaptures = 0; int droneKills = 0; int ejects = 0; int defection = 0; int score = 0; var alias = DataAccess.Alias.GetAliasByCallsign(db, teamMember.GameTeamMemberCallsign); if (alias == null) { continue; } // Check current team member for defections. foreach (DataAccess.GameTeam otherTeam in game.GameTeams) { if (otherTeam.GameTeamID == team.GameTeamID) { continue; } foreach (DataAccess.GameTeamMember otherTeamMember in otherTeam.GameTeamMembers) { var otherLogin = DataAccess.Alias.GetAliasByCallsign(db, otherTeamMember.GameTeamMemberCallsign); if (otherLogin != null && otherLogin.LoginId == alias.LoginId) { defection = 1; break; } } if (defection != 0) { break; } } var primaryMemberEvents = game.GameEvents.Where ( p => p.GameEventPerformerID != 1 && ( p.GameEventPerformerLoginID == alias.Login.Id && ( p.EventID == (int)AllegianceEventIDs.StationDestroyed || p.EventID == (int)AllegianceEventIDs.StationCaptured || p.EventID == (int)AllegianceEventIDs.ShipKilled ) ) || ( p.GameEventTargetLoginID == alias.Login.Id && p.EventID == (int)AllegianceEventIDs.ShipKilled ) ); foreach (var primaryMemberEvent in primaryMemberEvents) { switch (primaryMemberEvent.EventID) { case (int)Common.Enumerations.AllegianceEventIDs.ShipKilled: if (primaryMemberEvent.GameEventPerformerName.StartsWith(".") == true) { droneKills++; score += DroneKillPoints; } else { if (primaryMemberEvent.GameEventPerformerLoginID == teamMember.GameTeamMemberLoginID) { ejects++; } else { shipKills++; score += ShipKillPoints; } } break; case (int)Common.Enumerations.AllegianceEventIDs.StationCaptured: { stationCaptures++; score += StationCapturePoints; } break; case (int)Common.Enumerations.AllegianceEventIDs.StationDestroyed: { stationKills++; score += StationKillPoints; } break; } } if (alias != null) { var leaderboard = statsDB.StatsLeaderboards.FirstOrDefault(p => p.LoginID == alias.Login.Id); if (leaderboard == null) { leaderboard = new Allegiance.CommunitySecuritySystem.DataAccess.StatsLeaderboard() { CommandDraws = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. CommandLosses = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. CommandMu = 25D, CommandRank = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. CommandSigma = 25D / 3D, CommandWins = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Defects = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Draws = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. DroneKills = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Ejects = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. HoursPlayed = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Kills = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. LoginUsername = alias.Login.Username, LoginID = alias.Login.Id, Losses = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Mu = 25D, Rank = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Sigma = 25D / 3D, StackRating = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. StationCaptures = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. StationKills = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. Wins = 0, // Value filled in by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. DateModified = DateTime.Now //CommandDraws = commanderAlias.LoginId == alias.LoginId && isDrawGame == true && defection == 0 ? 1 : 0, //CommandLosses = commanderAlias.LoginId == alias.LoginId && team.GameTeamWinner == false && isDrawGame == false && defection == 0 ? 1 : 0, //CommandMu = 25D, //CommandRank = 0, //CommandSigma = 25D / 3D, //CommandWins = commanderAlias.LoginId == alias.LoginId && team.GameTeamWinner == true && defection == 0 ? 1 : 0, //Defects = defection, //Draws = isDrawGame == true && defection == 0 ? 1 : 0, //DroneKills = droneKills, //Ejects = ejects, //HoursPlayed = teamMember.GameTeamMemberDuration / 60.0 / 60.0, //Kills = shipKills, //LoginUsername = alias.Login.Username, //LoginID = alias.Login.Id, //Losses = team.GameTeamWinner == false && isDrawGame == false && defection == 0 ? 1 : 0, //Mu = 25D, //Rank = 0, //Sigma = 25D / 3D, //StackRating = 0, //StationCaptures = stationCaptures, //StationKills = stationKills, //Wins = team.GameTeamWinner == true && defection == 0 ? 1 : 0, //DateModified = DateTime.Now }; statsDB.StatsLeaderboards.InsertOnSubmit(leaderboard); } else { // These values are all set by ASGSServiceUpdateASRankings stored proc during AllegSkill calculation. //leaderboard.CommandDraws += commanderAlias.LoginId == alias.LoginId && isDrawGame == true && defection == 0 ? 1 : 0; //leaderboard.CommandLosses += commanderAlias.LoginId == alias.LoginId && team.GameTeamWinner == false && isDrawGame == false && defection == 0 ? 1 : 0; //leaderboard.CommandWins += commanderAlias.LoginId == alias.LoginId && team.GameTeamWinner == true && defection == 0 ? 1 : 0; //leaderboard.Defects += defection; //leaderboard.Draws += isDrawGame == true && defection == 0 ? 1 : 0; //leaderboard.DroneKills += droneKills; //leaderboard.Ejects += ejects; //leaderboard.HoursPlayed += teamMember.GameTeamMemberDuration / 60.0 / 60.0; //leaderboard.Kills += shipKills; //leaderboard.Losses += team.GameTeamWinner == false && isDrawGame == false && defection == 0 ? 1 : 0; //leaderboard.StationCaptures += stationCaptures; //leaderboard.StationKills += stationKills; //leaderboard.Wins += team.GameTeamWinner == true && defection == 0 ? 1 : 0; //leaderboard.DateModified = DateTime.Now; } teamMember.Score = score; statsDB.SubmitChanges(); db.SubmitChanges(); } } } } } }
private void SaveGameEvents(Allegiance.CommunitySecuritySystem.DataAccess.CSSDataContext db, DataAccess.CSSStatsDataContext statsDB, Allegiance.CommunitySecuritySystem.Server.Data.GameDataset.GameRow gameRow, int gameIdentID) { foreach (Data.GameDataset.GameEventRow gameEventRow in gameRow.GetGameEventRows()) { int performerLoginID = 0; int targetLoginID = 0; try { var performerAlias = DataAccess.Alias.GetAliasByCallsign(db, gameEventRow.PerformerName); if (performerAlias != null) { performerLoginID = performerAlias.Login.Id; } var targetAlias = DataAccess.Alias.GetAliasByCallsign(db, gameEventRow.TargetName); if (targetAlias != null) { targetLoginID = targetAlias.Login.Id; } DataAccess.GameEvent gameEvent = new DataAccess.GameEvent() { GameEventTime = gameEventRow.EventTime, GameID = gameIdentID, GameEventIndirectID = gameEventRow.IndirectID, GameEventIndirectName = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.IndirectName), 254), GameEventPerformerID = gameEventRow.PerformerID, GameEventPerformerName = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.PerformerName), 254), GameEventPerformerLoginID = performerLoginID, GameEventTargetID = gameEventRow.TargetID, GameEventTargetName = TrimString(DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.TargetName), 254), GameEventTargetLoginID = targetLoginID, EventID = gameEventRow.EventID }; statsDB.GameEvents.InsertOnSubmit(gameEvent); statsDB.SubmitChanges(); } catch (Exception ex) { string errorDetails = String.Format(@"SaveGameEvents(): Insert error! gameIdentID = {0}, gameEventRow.EventID = {1}, gameEventRow.EventTime = {2}, gameEventRow.GameID = {3}, gameEventRow.IndirectID = {4}, gameEventRow.IndirectName = {5}, gameEventRow.PerformerID = {6}, gameEventRow.PerformerName = {7}, gameEventRow.TargetID = {8}, gameEventRow.TargetName = {9}, performerLoginID = {10}, targetLoginID = {11}, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.IndirectName) = {12}, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.PerformerName) = {13}, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.TargetName) = {14} =================================================== {15} ", gameIdentID, gameEventRow.EventID, gameEventRow.EventTime, gameEventRow.GameID, gameEventRow.IndirectID, gameEventRow.IndirectName, gameEventRow.PerformerID, gameEventRow.PerformerName, gameEventRow.TargetID, gameEventRow.TargetName, performerLoginID, targetLoginID, DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.IndirectName), DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.PerformerName), DataAccess.Alias.GetCallsignFromStringWithTokensAndTags(db, gameEventRow.TargetName), ex.ToString()); if (String.IsNullOrEmpty(Settings.Default.TagExceptionLogFileName) == false) { File.AppendAllText(Settings.Default.TagExceptionLogFileName, DateTime.Now.ToString() + ": " + errorDetails + "\n\n\n"); } } } }