public static Tuple <DateTime?, DateTime?, int?> GetSessionDates(string playerName) { using (DBHelpers newSession = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + playerName, "LastBattle", "WOTSStore.db"))) { string sql; if (UserSettings.ViewSessionID == null) { sql = String.Format("select rsID, rsKey, datetime(rsUEDateFrom, 'unixepoch', 'localtime') as rsDateFrom, datetime(rsUEDateTo, 'unixepoch', 'localtime') as rsDateTo from RecentBattles_Session where datetime(rsUEDateTo, 'unixepoch', 'localtime') >= datetime({0}, 'unixepoch', 'localtime')", WOTHelper.ConvertToUnixTimestamp(WOTHelper.CurrentDateTime)); } else { sql = String.Format("select rsID, rsKey, datetime(rsUEDateFrom, 'unixepoch', 'localtime') as rsDateFrom, datetime(rsUEDateTo, 'unixepoch', 'localtime') as rsDateTo from RecentBattles_Session where rsKey = '{0}'", UserSettings.ViewSessionID); } DataTable dt = newSession.GetDataTable(sql); if (dt.Rows.Count > 0) { return(new Tuple <DateTime?, DateTime?, int?>(Convert.ToDateTime(dt.Rows[0]["rsDateFrom"]), Convert.ToDateTime(dt.Rows[0]["rsDateTo"]), Convert.ToInt16(dt.Rows[0]["rsID"]))); } else { return(new Tuple <DateTime?, DateTime?, int?>(null, null, null)); } } }
private void Read() { if (!(File.Exists(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) || _TakeOn) { if (File.Exists(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "LastBattles.wot"))) { try { string[] fileData = File.ReadAllLines(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "LastBattles.wot")); foreach (string item in fileData) { if (item.Contains('|')) { string[] rowData = item.Split('|'); int survived = 0; double battleCount = double.Parse(rowData[2]) / 100; if (rowData[10] == "True" || rowData[10] == "1") { survived = 1; } else { survived = 0; } if (rowData.Length >= 17) { Add(int.Parse(rowData[12]), new RecentBattle() { CountryID = int.Parse(rowData[0]), TankID = int.Parse(rowData[1]), Battles = (double.Parse(rowData[2]) / battleCount) / 100, Kills = (double.Parse(rowData[3]) / battleCount) / 100, DamageReceived = (double.Parse(rowData[4]) / battleCount) / 100, DamageDealt = (double.Parse(rowData[5]) / battleCount) / 100, XPReceived = (double.Parse(rowData[6]) / battleCount) / 100, Spotted = (double.Parse(rowData[7]) / battleCount) / 100, CapturePoints = (double.Parse(rowData[8]) / battleCount) / 100, DefencePoints = (double.Parse(rowData[9]) / battleCount) / 100, Survived = survived, Victory = int.Parse(rowData[11]), BattleTime = int.Parse(rowData[12]), Shot = (double.Parse(rowData[13]) / battleCount) / 100, Hits = (double.Parse(rowData[14]) / battleCount) / 100, OriginalBattleCount = rowData.Length == 18 ? (double.Parse(rowData[15])) / 100 : (battleCount), FragList = rowData.Length == 18 ? rowData[17] : "" } ); } else { Add(int.Parse(rowData[12]), new RecentBattle() { CountryID = int.Parse(rowData[0]), TankID = int.Parse(rowData[1]), Battles = (double.Parse(rowData[2]) / battleCount), Kills = (double.Parse(rowData[3]) / battleCount), DamageReceived = (double.Parse(rowData[4]) / battleCount), DamageDealt = (double.Parse(rowData[5]) / battleCount), XPReceived = (double.Parse(rowData[6]) / battleCount), Spotted = (double.Parse(rowData[7]) / battleCount), CapturePoints = (double.Parse(rowData[8]) / battleCount), DefencePoints = (double.Parse(rowData[9]) / battleCount), Survived = survived, Victory = int.Parse(rowData[11]), BattleTime = int.Parse(rowData[12]), Shot = (double.Parse(rowData[13]) / battleCount), Hits = (double.Parse(rowData[14]) / battleCount), OriginalBattleCount = rowData.Length == 18 ? (double.Parse(rowData[15])) : (battleCount), FragList = rowData.Length == 18 ? rowData[17] : "" } ); } } else { string[] rowData = item.Split(','); if (rowData.Length > 15) { //throw away record. } else { int survived = 0; double battleCount = double.Parse(rowData[2]); if (rowData[10] == "True" || rowData[10] == "1") { survived = 1; } else { survived = 0; } Add(int.Parse(rowData[12]), new RecentBattle() { CountryID = int.Parse(rowData[0]), TankID = int.Parse(rowData[1]), Battles = double.Parse(rowData[2]) / battleCount, Kills = double.Parse(rowData[3]) / battleCount, DamageReceived = double.Parse(rowData[4]) / battleCount, DamageDealt = double.Parse(rowData[5]) / battleCount, XPReceived = double.Parse(rowData[6]) / battleCount, Spotted = double.Parse(rowData[7]) / battleCount, CapturePoints = double.Parse(rowData[8]) / battleCount, DefencePoints = double.Parse(rowData[9]) / battleCount, Survived = survived, Victory = int.Parse(rowData[11]), BattleTime = int.Parse(rowData[12]), Shot = double.Parse(rowData[13]) / battleCount, Hits = double.Parse(rowData[14]) / battleCount, OriginalBattleCount = rowData.Length == 18 ? double.Parse(rowData[15]) : battleCount, FragList = rowData.Length == 18 ? rowData[17] : "" } ); } } } } catch { DeleteFile(); } //CreateDatabase.Create(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db")); Save(); } } else { //CreateDatabase.AlterDB(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db")); //DateTime datefrom = DateTime.Now.AddHours(UserSettings.TimeAdjustment); //new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0).AddHours(UserSettings.TimeAdjustment) DateTime datefrom = new DateTime(); DateTime currentDateTime = DateTime.Now; if (currentDateTime.Hour >= Math.Abs(UserSettings.TimeAdjustment)) { // e.g. Reset At settings is 03:00 AM and current time is 05:00 PM // we need to retrieve today's battles from current day 03:00 AM datefrom = currentDateTime; datefrom = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, Convert.ToInt32(Math.Abs(UserSettings.TimeAdjustment)), 0, 0); } else { // e.g. Reset At settings is 03:00 AM and current time is 01:00 AM // we need to retrieve today's battles from yesterday at 03:00 AM datefrom = currentDateTime.AddDays(-1); datefrom = new DateTime(datefrom.Year, datefrom.Month, datefrom.Day, Convert.ToInt32(Math.Abs(UserSettings.TimeAdjustment)), 0, 0); } using (IDBHelpers db = new DBHelpers(Path.Combine(WOTHelper.GetApplicationData(), "Hist_" + _playerName, "LastBattle", "WOTSStore.db"))) { string sql = ""; if (UserSettings.RecentBattlesCurrentSession == 0) { if (UserSettings.ViewSessionID == null) { sql = @"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage, rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints , rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles_Session T1 join RecentBattles T2 on rbSessionID = rsKey where datetime(rsUEDateTo,'unixepoch', 'localtime') > datetime('now', 'localtime')"; } else { sql = @"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage, rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles_Session T1 join RecentBattles T2 on rbSessionID = rsKey where rsKey = '" + UserSettings.ViewSessionID + "'"; } } else if (UserSettings.RecentBattlesCurrentSession == 1) // Today's battles { sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbMileage, rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles T2 where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom)); } else if (UserSettings.RecentBattlesCurrentSession == 2) // Last 3 days { datefrom = datefrom.AddDays(-2); sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbMileage, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles T2 where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom)); } else if (UserSettings.RecentBattlesCurrentSession == 3) // Last week { datefrom = datefrom.AddDays(-6); sql = String.Format(@"select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbShot, rbHits, rbMileage, rbOriginalBattleCount, rbFragList, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles T2 where datetime(rbBattleTime, 'unixepoch') >= datetime({0}, 'unixepoch')", WOTHelper.ConvertToUnixTimestamp(datefrom)); } else if (UserSettings.RecentBattlesCurrentSession == 4) { sql = "select rbSurvived, rbCountryID, rbTankID, rbBattles, rbKills, rbDamageReceived, rbDamageDealt, rbDamageAssistedRadio, rbDamageAssistedTracks, rbXPReceived, rbSpotted, rbCapturePoints, rbDefencePoints, rbVictory, rbBattleTime, rbShot, rbHits, rbOriginalBattleCount, rbFragList, rbMileage, rbGlobalAvgTier, rbGlobalWinPercentage, rbGlobalAvgDefPoints, rbRatingBR, rbRatingEff, rbRatingWN7, rbRatingWN8 from RecentBattles where 1=1 "; } if (UserSettings.BattleMode == "15") { sql += " and rbBattleMode = 15 "; } else if (UserSettings.BattleMode == "7") { sql += " and rbBattleMode = 7"; } // if (UserSettings.RecentBattlesCurrentSession == 4) sql += @" order by rbID desc "; if (UserSettings.RecentBattlesCurrentSession == 4) { sql += @" LIMIT " + UserSettings.LastPlayedCompareQuota; } else { sql += @" LIMIT " + ApplicationSettings.MaxNoGamesAllowedRB; } using (DataTable dt = db.GetDataTable(sql)) { foreach (DataRow item in dt.Rows) { int survived = 0; double battleCount = double.Parse(item["rbBattles"].ToString()) / 100; if (item["rbSurvived"].ToString() == "True" || item["rbSurvived"].ToString() == "1") { survived = 1; } else { survived = 0; } Add(int.Parse(item["rbBattleTime"].ToString()), new RecentBattle() { CountryID = int.Parse(item["rbCountryID"].ToString()), TankID = int.Parse(item["rbTankID"].ToString()), Battles = (double.Parse(item["rbBattles"].ToString()) / battleCount) / 100, Kills = (double.Parse(item["rbKills"].ToString()) / battleCount) / 100, DamageReceived = (double.Parse(item["rbDamageReceived"].ToString()) / battleCount) / 100, DamageDealt = (double.Parse(item["rbDamageDealt"].ToString()) / battleCount) / 100, DamageAssistedRadio = (double.Parse(item["rbDamageAssistedRadio"].ToString()) / battleCount) / 100, DamageAssistedTracks = (double.Parse(item["rbDamageAssistedTracks"].ToString()) / battleCount) / 100, XPReceived = (double.Parse(item["rbXPReceived"].ToString()) / battleCount) / 100, Spotted = (double.Parse(item["rbSpotted"].ToString()) / battleCount) / 100, CapturePoints = (double.Parse(item["rbCapturePoints"].ToString()) / battleCount) / 100, DefencePoints = (double.Parse(item["rbDefencePoints"].ToString()) / battleCount) / 100, Survived = survived, Victory = int.Parse(item["rbVictory"].ToString()), BattleTime = int.Parse(item["rbBattleTime"].ToString()), Mileage = (double.Parse(item["rbMileage"].ToString()) / battleCount) / 100, Shot = (double.Parse(item["rbShot"].ToString()) / battleCount) / 100, Hits = (double.Parse(item["rbHits"].ToString()) / battleCount) / 100, OriginalBattleCount = (double.Parse(item["rbOriginalBattleCount"].ToString())) / 100, FragList = item["rbFragList"].ToString(), GlobalAvgTier = (double.Parse(item["rbGlobalAvgTier"].ToString())) / 100, GlobalWinPercentage = (double.Parse(item["rbGlobalWinPercentage"].ToString())) / 100, GlobalAvgDefencePoints = (double.Parse(item["rbGlobalAvgDefPoints"].ToString())) / 100, RatingBR = (double.Parse(item["rbRatingBR"].ToString()) / battleCount) / 100, RatingEff = (double.Parse(item["rbRatingEff"].ToString()) / battleCount) / 100, RatingWN7 = (double.Parse(item["rbRatingWN7"].ToString()) / battleCount) / 100, RatingWN8 = (double.Parse(item["rbRatingWN8"].ToString()) / battleCount) / 100, DBEntry = true }); } } } } }