private string GenerateCSVFromStats(StatsNonDb stats) { try { StringBuilder csvBuilder = new StringBuilder(); csvBuilder.AppendLine($"valueName,value"); csvBuilder.AppendLine($"Candidates,{stats.ValidVotesNum}"); foreach (var candidate in stats.Candidates) { csvBuilder.AppendLine($"\"{getUTF8String(candidate.Name)}\",{candidate.VotesNum}"); } csvBuilder.AppendLine($"Parties,{stats.ValidVotesNum}"); foreach (var party in stats.Parties) { csvBuilder.AppendLine($"\"{getUTF8String(party.Name)}\",{party.VotesNum}"); } csvBuilder.AppendLine($"Votes,{stats.UnvalidVotesNun + stats.ValidVotesNum}"); csvBuilder.AppendLine($"Good,{stats.ValidVotesNum}"); csvBuilder.AppendLine($"Bad,{stats.UnvalidVotesNun}"); csvBuilder.AppendLine($"\"Without law tries\",{stats.WithoutLawTries}"); return(csvBuilder.ToString()); } catch { return(null); } }
public void Save(StatsNonDb stats) { string csv = GenerateCSVFromStats(stats); if (csv == null) { ShowUnableToSaveFileMessage(); return; } SaveToFile(csv); }
public void Save(StatsNonDb stats) { var content = new StatsViewGenerator().GenerateNumericStatsToFileContent(stats); if (content == null) { ShowUnableToSaveFileMessage(); return; } content.HorizontalContentAlignment = HorizontalAlignment.Center; SaveToPdf(content); }
private UserControl GenerateNumericStatsContent(StatsNonDb stats) { var content = new UserControl() .AddBasicScrollViewer() .AddBasicStackPanelToControl() .GetContentFromStackPanel <StackPanel>() .AddNumericInfoVoteFromStats(stats.Candidates, "Candidates") .AddNumericInfoVoteFromStats(stats.Parties, "Parties") .AddNumericInfoBadVotesFromStats(stats) .GetUserControlParent(); return(content); }
public static T AddNumericInfoBadVotesFromStats <T>(this T element, StatsNonDb stats) where T : Panel { var votesTextBlock = new TextBlock(); votesTextBlock.Inlines.Add(new Run { Text = $"1. Bad votes: {stats.UnvalidVotesNun}", FontSize = 16 }); var stackPanel = new StackPanel() .Add <UIElementCollection>(CreateHeaderTextBlock("Bad votes", Colors.Red)) .Add <UIElementCollection>(votesTextBlock); element.Children.Add(stackPanel); return(element); }
public UserControl GenerateNumericStatsToFileContent(StatsNonDb stats) { try { var content = new UserControl() .AddBasicScrollViewer() .AddBasicStackPanelToControl() .GetContentFromStackPanel <StackPanel>() .AddNumericInfoVoteFromStats(stats.Candidates, "Candidates") .AddNumericInfoVoteFromStats(stats.Parties, "Parties") .AddTotalVotesInfoFromStats(stats) .GetUserControlParent(); return(content); } catch { return(null); } }
private UserControl GenerateGraphStatsContent(StatsNonDb stats) { var content = new UserControl() .AddBasicScrollViewer() .AddBasicStackPanelToControl() .GetContentFromStackPanel <StackPanel>() .CreateChartForItemsFromStats( new List <(string, double)>( stats.Candidates.Select(p => (p.Name, (double)p.VotesNum)) ), "Candidates") .CreateChartForItemsFromStats(new List <(string, double)>( stats.Parties.Select(p => (p.Name, (double)p.VotesNum)) ), "Parties") .CreateChartForItemsFromStats(new List <(string, double)>() { ("Unvalid votes", (double)stats.UnvalidVotesNun), }, "") .GetUserControlParent(); return(content); }
public void SaveFile(ISaveMethod method, StatsNonDb stats) => method.Save(stats);