using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using DXApp.TemplateKitProject.Data; using Microsoft.EntityFrameworkCore; namespace DXApp.TemplateKitProject.Pages.Invoices; public class ViewPdfModel : PageModel { private readonly AppDbContext _db; private readonly ILogger _logger; public ViewPdfModel(AppDbContext db, ILogger logger) { _db = db; _logger = logger; } public async Task OnGetAsync(int id) { // Sicherheit: defensive checks, gleiche Logik wie CustomReportStorageWebExtension var invoice = await _db.ZugferdInvoices .AsNoTracking() .FirstOrDefaultAsync(i => i.Id == id); if (invoice is null) return NotFound(); if (string.IsNullOrEmpty(invoice.ResultFilePath)) return NotFound(); if (!System.IO.File.Exists(invoice.ResultFilePath)) return NotFound(); var bytes = await System.IO.File.ReadAllBytesAsync(invoice.ResultFilePath); _logger.LogInformation("ViewPdf: Invoice {Id} ausgeliefert ({Size} Bytes).", id, bytes.Length); return File(bytes, "application/pdf", $"{Path.GetFileName(invoice.ResultFilePath)}"); } }