private void SetChartData() { if (PluginDatabase.Database.UserHltbData != null && PluginDatabase.Database.UserHltbData.TitlesList != null) { LocalDateYMConverter localDateYMConverter = new LocalDateYMConverter(); // Default data string[] ChartDataLabels = new string[22]; ChartValues <CustomerForSingle> ChartDataSeries = new ChartValues <CustomerForSingle>(); for (int i = 21; i >= 0; i--) { ChartDataLabels[(21 - i)] = (string)localDateYMConverter.Convert(DateTime.Now.AddMonths(-i), null, null, null); ChartDataSeries.Add(new CustomerForSingle { Name = (string)localDateYMConverter.Convert(DateTime.Now.AddMonths(-i), null, null, null), Values = 0 }); } // Set data foreach (TitleList titleList in PluginDatabase.Database.UserHltbData.TitlesList) { if (titleList.Completion != null) { string tempDateTime = (string)localDateYMConverter.Convert((DateTime)titleList.Completion, null, null, null); int index = Array.IndexOf(ChartDataLabels, tempDateTime); if (index > 0) { ChartDataSeries[index].Values += 1; } } } // Create chart SeriesCollection ChartSeriesCollection = new SeriesCollection(); ChartSeriesCollection.Add(new LineSeries { Title = string.Empty, Values = ChartDataSeries }); PART_ChartUserData.Series = ChartSeriesCollection; PART_ChartUserDataLabelsX.Labels = ChartDataLabels; } }
/// <summary> /// Get number achievements unlock by month for a game or not. /// </summary> /// <param name="GameID"></param> /// <returns></returns> public AchievementsGraphicsDataCount GetCountByMonth(Guid?GameID = null, int limit = 11) { string[] GraphicsAchievementsLabels = new string[limit + 1]; ChartValues <CustomerForSingle> SourceAchievementsSeries = new ChartValues <CustomerForSingle>(); LocalDateYMConverter localDateYMConverter = new LocalDateYMConverter(); // All achievements if (GameID == null) { for (int i = limit; i >= 0; i--) { GraphicsAchievementsLabels[(limit - i)] = (string)localDateYMConverter.Convert(DateTime.Now.AddMonths(-i), null, null, null); SourceAchievementsSeries.Add(new CustomerForSingle { Name = (string)localDateYMConverter.Convert(DateTime.Now.AddMonths(-i), null, null, null), Values = 0 }); } try { foreach (var item in Database.Items) { if (!item.Value.HaveAchivements || item.Value.IsDeleted) { continue; } List <Achievements> temp = item.Value.Items; foreach (Achievements itemAchievements in temp) { if (itemAchievements.DateUnlocked != null && itemAchievements.DateUnlocked != default(DateTime)) { string tempDate = (string)localDateYMConverter.Convert(((DateTime)itemAchievements.DateUnlocked).ToLocalTime(), null, null, null); int index = Array.IndexOf(GraphicsAchievementsLabels, tempDate); if (index >= 0 && index < (limit + 1)) { SourceAchievementsSeries[index].Values += 1; } } } } } catch (Exception ex) { Common.LogError(ex, "SuccessStory", "Error in load GetCountByMonth()"); } } // Achievement for a game else { try { List <Achievements> Achievements = GetOnlyCache((Guid)GameID).Items; if (Achievements != null && Achievements.Count > 0) { Achievements.Sort((x, y) => ((DateTime)y.DateUnlocked).CompareTo((DateTime)x.DateUnlocked)); DateTime TempDateTime = DateTime.Now; // Find last achievement date unlock if (((DateTime)Achievements[0].DateUnlocked).ToLocalTime().ToString("yyyy-MM") != "0001-01" && ((DateTime)Achievements[0].DateUnlocked).ToLocalTime().ToString("yyyy-MM") != "1982-12") { TempDateTime = ((DateTime)Achievements[0].DateUnlocked).ToLocalTime(); } for (int i = limit; i >= 0; i--) { //GraphicsAchievementsLabels[(limit - i)] = TempDateTime.AddMonths(-i).ToString("yyyy-MM"); GraphicsAchievementsLabels[(limit - i)] = (string)localDateYMConverter.Convert(TempDateTime.AddMonths(-i), null, null, null); SourceAchievementsSeries.Add(new CustomerForSingle { Name = TempDateTime.AddMonths(-i).ToString("yyyy-MM"), Values = 0 }); } for (int i = 0; i < Achievements.Count; i++) { //string tempDate = ((DateTime)Achievements[i].DateUnlocked).ToLocalTime().ToString("yyyy-MM"); string tempDate = (string)localDateYMConverter.Convert(((DateTime)Achievements[i].DateUnlocked).ToLocalTime(), null, null, null); int index = Array.IndexOf(GraphicsAchievementsLabels, tempDate); if (index >= 0 && index < (limit + 1)) { SourceAchievementsSeries[index].Values += 1; } } } } catch (Exception ex) { Common.LogError(ex, "SuccessStory", $"Error in load GetCountByMonth({GameID.ToString()})"); } } return(new AchievementsGraphicsDataCount { Labels = GraphicsAchievementsLabels, Series = SourceAchievementsSeries }); }