added functionality to export commit reports to a PDF

This commit is contained in:
Wyatt J. Miller 2022-08-23 11:29:12 -04:00
parent 7504a5a293
commit ddabd6080f

46
DAL/PdfDataService.cs Normal file
View File

@ -0,0 +1,46 @@
using PdfSharpCore;
using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;
using Pastel;
public class PdfDataService : IDataService
{
private string _fileName;
private string _pathName;
private string _dateTime;
public PdfDataService()
{
_dateTime = DateTime.Now.ToString("yyyyMMddhhmm");
_fileName = $"CommitReport-{_dateTime}.pdf";
_pathName = Directory.GetCurrentDirectory() + "/" + _fileName;
}
public void WriteAll(SortedList<string, int> dictResults)
{
// sort the dictionary passed in
var sortedResults = dictResults.OrderByDescending(d => d.Value).ToList();
// setting the created document
var document = new PdfDocument();
var page = document.AddPage();
// heading
var gfx = XGraphics.FromPdfPage(page);
var fontHeading = new XFont("Times New Roman", 36, XFontStyle.Underline);
gfx.DrawString("Commit Report", fontHeading, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.TopCenter);
// details
var fontDetails = new XFont("Times New Roman", 16, XFontStyle.Regular);
int positionValue = 50;
foreach (var i in sortedResults)
{
gfx.DrawString($"{i.Key}: {i.Value}", fontDetails, XBrushes.Black, new XRect(0, positionValue, page.Width, page.Width), XStringFormats.TopCenter);
positionValue += 30;
}
document.Save(_fileName);
}
}