Skip to content

Commit 41e7c35

Browse files
committed
HtmlWriter, PdfWriter
1 parent d82e5c3 commit 41e7c35

File tree

18 files changed

+160
-116
lines changed

18 files changed

+160
-116
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.IO;
2+
using System.Threading.Tasks;
3+
4+
namespace ClassifiedAds.CrossCuttingConcerns.Html;
5+
6+
public interface IHtmlWriter<T>
7+
where T : IHtmlRequest
8+
{
9+
Task WriteAsync(T data, Stream stream);
10+
11+
Task<string> GetStringAsync(T data);
12+
}
13+
14+
public interface IHtmlRequest
15+
{
16+
}

src/ModularMonolith/ClassifiedAds.CrossCuttingConcerns/HtmlGenerator/IHtmlGenerator.cs

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.IO;
2+
using System.Threading.Tasks;
3+
4+
namespace ClassifiedAds.CrossCuttingConcerns.Pdf;
5+
6+
public interface IPdfWriter<T>
7+
where T : IPdfRequest
8+
{
9+
Task WriteAsync(T data, Stream stream);
10+
11+
Task<byte[]> GetBytesAsync(T data);
12+
}
13+
14+
public interface IPdfRequest
15+
{
16+
}

src/ModularMonolith/ClassifiedAds.CrossCuttingConcerns/PdfConverter/IPdfConverter.cs

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
1-
using ClassifiedAds.CrossCuttingConcerns.HtmlGenerator;
2-
using ClassifiedAds.Infrastructure.HtmlGenerators;
3-
using RazorLight;
1+
using RazorLight;
42
using System;
53

64
namespace Microsoft.Extensions.DependencyInjection;
75

8-
public static class HtmlGeneratorCollectionExtensions
6+
public static class HtmlCollectionExtensions
97
{
10-
public static IServiceCollection AddHtmlGenerator(this IServiceCollection services)
8+
public static IServiceCollection AddHtmlRazorLightEngine(this IServiceCollection services)
119
{
1210
var engine = new RazorLightEngineBuilder()
1311
.UseFileSystemProject(Environment.CurrentDirectory)
1412
.UseMemoryCachingProvider()
1513
.Build();
1614

1715
services.AddSingleton<IRazorLightEngine>(engine);
18-
services.AddSingleton<IHtmlGenerator, HtmlGenerator>();
1916

2017
return services;
2118
}

src/ModularMonolith/ClassifiedAds.Infrastructure/HtmlGenerators/HtmlGenerator.cs

Lines changed: 0 additions & 20 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
1-
using ClassifiedAds.CrossCuttingConcerns.PdfConverter;
2-
using ClassifiedAds.Infrastructure.PdfConverters.DinkToPdf;
3-
using DinkToPdf;
1+
using DinkToPdf;
42
using DinkToPdf.Contracts;
53

64
namespace Microsoft.Extensions.DependencyInjection;
75

8-
public static class DinkToPdfConverterCollectionExtensions
6+
public static class DinkToPdfCollectionExtensions
97
{
108
public static IServiceCollection AddDinkToPdfConverter(this IServiceCollection services)
119
{
1210
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
13-
services.AddSingleton<IPdfConverter, DinkToPdfConverter>();
14-
1511
return services;
1612
}
1713
}
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1-
using ClassifiedAds.CrossCuttingConcerns.PdfConverter;
2-
using ClassifiedAds.Infrastructure.PdfConverters.PuppeteerSharp;
3-
using PuppeteerSharp;
1+
using PuppeteerSharp;
42

53
namespace Microsoft.Extensions.DependencyInjection;
64

7-
public static class PuppeteerSharpConverterCollectionExtensions
5+
public static class PuppeteerSharpCollectionExtensions
86
{
97
public static IServiceCollection AddPuppeteerSharpPdfConverter(this IServiceCollection services)
108
{
119
var browserFetcher = new BrowserFetcher();
1210
browserFetcher.DownloadAsync().GetAwaiter().GetResult();
13-
14-
services.AddSingleton<IPdfConverter, PuppeteerSharpConverter>();
15-
1611
return services;
1712
}
1813
}

src/ModularMonolith/ClassifiedAds.Infrastructure/PdfConverters/PuppeteerSharp/PuppeteerSharpConverter.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/ModularMonolith/ClassifiedAds.Modules.Product/Controllers/ProductsController.cs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
using ClassifiedAds.Application;
22
using ClassifiedAds.Contracts.AuditLog.DTOs;
33
using ClassifiedAds.CrossCuttingConcerns.Csv;
4-
using ClassifiedAds.CrossCuttingConcerns.HtmlGenerator;
5-
using ClassifiedAds.CrossCuttingConcerns.PdfConverter;
4+
using ClassifiedAds.CrossCuttingConcerns.Pdf;
65
using ClassifiedAds.Modules.Product.Authorization;
76
using ClassifiedAds.Modules.Product.Commands;
87
using ClassifiedAds.Modules.Product.Csv;
98
using ClassifiedAds.Modules.Product.Models;
9+
using ClassifiedAds.Modules.Product.Pdf;
1010
using ClassifiedAds.Modules.Product.Queries;
1111
using ClassifiedAds.Modules.Product.RateLimiterPolicies;
1212
using Microsoft.AspNetCore.Authorization;
@@ -33,22 +33,19 @@ public class ProductsController : ControllerBase
3333
{
3434
private readonly Dispatcher _dispatcher;
3535
private readonly ILogger _logger;
36-
private readonly IHtmlGenerator _htmlGenerator;
37-
private readonly IPdfConverter _pdfConverter;
36+
private readonly IPdfWriter<ExportProductsToPdf> _pdfWriter;
3837
private readonly ICsvWriter<ExportProductsToCsv> _productCsvWriter;
3938
private readonly ICsvReader<ImportProductsFromCsv> _productCsvReader;
4039

4140
public ProductsController(Dispatcher dispatcher,
4241
ILogger<ProductsController> logger,
43-
IHtmlGenerator htmlGenerator,
44-
IPdfConverter pdfConverter,
42+
IPdfWriter<ExportProductsToPdf> pdfWriter,
4543
ICsvWriter<ExportProductsToCsv> productCsvWriter,
4644
ICsvReader<ImportProductsFromCsv> productCsvReader)
4745
{
4846
_dispatcher = dispatcher;
4947
_logger = logger;
50-
_htmlGenerator = htmlGenerator;
51-
_pdfConverter = pdfConverter;
48+
_pdfWriter = pdfWriter;
5249
_productCsvWriter = productCsvWriter;
5350
_productCsvReader = productCsvReader;
5451
}
@@ -158,13 +155,8 @@ public async Task<ActionResult<IEnumerable<AuditLogEntryDTO>>> GetAuditLogs(Guid
158155
public async Task<IActionResult> ExportAsPdf()
159156
{
160157
var products = await _dispatcher.DispatchAsync(new GetProductsQuery());
161-
var model = products.ToModels();
162-
163-
var template = Path.Combine(Environment.CurrentDirectory, $"Templates/ProductList.cshtml");
164-
var html = await _htmlGenerator.GenerateAsync(template, model);
165-
var pdf = await _pdfConverter.ConvertAsync(html);
166-
167-
return File(pdf, MediaTypeNames.Application.Octet, "Products.pdf");
158+
var bytes = await _pdfWriter.GetBytesAsync(new ExportProductsToPdf { Products = products });
159+
return File(bytes, MediaTypeNames.Application.Octet, "Products.pdf");
168160
}
169161

170162
[HttpGet("exportascsv")]

0 commit comments

Comments
 (0)