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);
        }
Exemple #8
0
 public void SaveFile(ISaveMethod method, StatsNonDb stats)
 => method.Save(stats);