Example #1
0
        private string ModelToHTML(IResultsViewModel model)
        {
            string crimesHTML = "None";

            if (model.CriminalHistory != null && model.CriminalHistory.Count() > 0)
            {
                var builder = new StringBuilder();
                foreach (var crime in model.CriminalHistory)
                {
                    builder.Append(HTMLTemplates.CrimeHtml);
                    var prop = crime.GetType().GetProperties();
                    foreach (var property in prop)
                    {
                        builder.Replace($"*{property.Name}*", property.GetValue(crime).ToString());
                    }
                }
                crimesHTML = builder.ToString();
            }
            var pageBuilder = new StringBuilder();

            pageBuilder.Append(HTMLTemplates.PageHtml);
            var modelProp = model.GetType().GetProperties();

            foreach (var property in modelProp.Where(p => p.Name != "CriminalHistory"))
            {
                pageBuilder.Replace($"*{property.Name}*", property.GetValue(model).ToString());
            }

            pageBuilder.Replace("*Crimes*", crimesHTML);
            var page = pageBuilder.ToString();

            return(page);
        }
Example #2
0
        public ResultsView(IResultsViewModel viewModel)
        {
            ViewModel = viewModel;

            InitializeComponent();
            BarChart.DataContext = viewModel;
        }
Example #3
0
        public FileInfo CreatePdf(IResultsViewModel model)
        {
            if (model == null || (string.IsNullOrEmpty(model.FullName) && string.IsNullOrEmpty(model.Photo) && model.Height <= 0))
            {
                return(null);
            }

            string file = Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, $@"App_Data\{model.FullName ?? "unkown"}.pdf");
            string page = ModelToHTML(model);

            if (!string.IsNullOrEmpty(page))
            {
                var htmlToPdf = new HtmlToPdf(new PdfPrintOptions()
                {
                    PaperSize = PdfPrintOptions.PdfPaperSize.A4
                });
                PdfResource pdf = htmlToPdf.RenderHtmlAsPdf(page);
                if (File.Exists(file))
                {
                    for (int i = 1; ; ++i)
                    {
                        var s = file.Insert(file.Length - 4, $" ({i.ToString()})");
                        if (File.Exists(s))
                        {
                            continue;
                        }
                        else
                        {
                            file = s;
                            break;
                        }
                    }
                }
                pdf.SaveAs(file);
            }
            var fileinfo = new FileInfo(file);

            return(fileinfo.Exists ? fileinfo : null);
        }