public StatsReportViewModel(DetailedStats stats = null) { this.Stats = stats; ExportToExcelCommand = new RelayCommand(() => { SaveFileDialog sfd = new SaveFileDialog(); sfd.Title = "Export To Excel file"; var res = sfd.ShowDialog(); if (res == DialogResult.OK) { using (var writer = System.IO.File.CreateText(sfd.FileName)) { writer.WriteLine("ColumnName;Expected;Actual"); foreach (var item in Stats.Values) { foreach (var st in item.Value.Members) { writer.WriteLine("{0};{1};{2}", st.ColumnName, st.ExpectedValue, st.ActualValue); } } writer.Flush(); } } }); }
public async Task Bf4Stats(string name = null, Platform platform = Platform.PC, string platformSpecificName = null) { if (name == null) { name = Context.User.Username; } long?personaID = await _db.GetPersonaIDAsync(name); if (personaID == null) { personaID = await _client.GetPersonaID(name, platform, platformSpecificName); if (personaID != null) { await _db.SavePersonaIDAsync(name, personaID.Value); } else { await ReplyAsync("", embed : new EmbedBuilder() { Title = $"No player found", Color = _settings.GetErrorColor(), Description = "No player was found with that name.", ThumbnailUrl = "https://eaassets-a.akamaihd.net/bl-cdn/cdnprefix/production-283-20170323/public/base/bf4/header-logo-bf4.png" }.Build()); return; } } DetailedStats stats = await _client.GetDetailedStatsAsync(personaID.Value, platform); await ReplyAsync("", embed : new EmbedBuilder() { Title = $"Battlefield 4 stats for {name}", Color = _settings.GetColor(), ThumbnailUrl = "https://eaassets-a.akamaihd.net/bl-cdn/cdnprefix/production-283-20170323/public/base/bf4/header-logo-bf4.png" } .AddField(f => { f.IsInline = true; f.Name = "Rank"; f.Value = $"- **Rank**: {stats.GeneralStats.Rank}\n" + $"- **Score per minute**: {stats.GeneralStats.ScorePerMinute}\n" + $"- **Total score**: {stats.GeneralStats.Score}"; }) .AddField(f => { f.IsInline = true; f.Name = "Win / loss"; f.Value = $"- **W/L ratio**: {Math.Round((double)stats.GeneralStats.Wins / stats.GeneralStats.Losses, 2)}\n" + $"- **Wins**: {stats.GeneralStats.Wins}\n" + $"- **Losses**: {stats.GeneralStats.Losses}"; }) .AddField(f => { f.IsInline = true; f.Name = "K/D"; f.Value = $"- **K/D ratio**: {stats.GeneralStats.KDRatio}\n" + $"- **Kills**: {stats.GeneralStats.Kills}\n" + $"- **Deaths**: {stats.GeneralStats.Deaths}"; }) .AddField(f => { f.IsInline = true; f.Name = "Misc"; f.Value = $"- **Accuracy**: {Math.Round(stats.GeneralStats.Accuracy, 2)}%\n" + $"- **Dogtags Taken**: {stats.GeneralStats.DogtagsTaken}\n" + $"- **Time played**: {Math.Round(stats.GeneralStats.TimePlayed.TotalHours, 2)} hours"; }) .Build()); }