| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- declare(strict_types=1);
- /**
- * Test script for the mail system. Run from CLI:
- * php bin/test-mail.php
- *
- * Generates PDFs and HTML output to verify formatting without sending emails.
- */
- require dirname(__DIR__) . '/src/autoload.php';
- use App\App\Bootstrap;
- use App\Form\FormSchema;
- use App\Mail\SubmissionFormatter;
- use App\Mail\PdfGenerator;
- use App\Mail\Mailer;
- Bootstrap::init(false);
- $submission = [
- 'email' => 'max.mustermann@example.org',
- 'application_key' => 'test_' . bin2hex(random_bytes(8)),
- 'status' => 'submitted',
- 'submitted_at' => date('c'),
- 'form_data' => [
- 'vorname' => 'Max',
- 'nachname' => 'Mustermann',
- 'geburtsdatum' => '1990-05-15',
- 'strasse' => 'Musterstraße 42',
- 'plz' => '85354',
- 'ort' => 'Freising',
- 'telefon' => '01701234567',
- 'job' => 'Softwareentwickler',
- 'pate' => 'Hans Meier',
- 'mitgliedsart' => 'Aktiv',
- 'qualifikation_vorhanden' => 'ja',
- 'führerschein_vorhanden' => 'b',
- 'führerschein_nachweis' => 'Staplerführerschein',
- 'bisherige_dienstzeiten' => "Feuerwehr/Hilfsorganisation,von,bis\nFF Moosburg,2015-03-01,2020-12-31\nTHW OV Freising,2021-01-15,2023-06-30",
- 'letzter_dienstgrad' => 'Oberfeuerwehrmann',
- 'basismodul' => '1',
- 'truppführer' => '1',
- 'gruppenführer' => '',
- 'atemschutzgeräteträger' => '1',
- 'gültige_g26' => '1',
- 'motorsägenführer' => '',
- 'feuerwehrsanitäter' => '1',
- 'weitere_lehrgaenge' => 'Erste Hilfe Ausbilder',
- 'abzeichen_lösch' => '3',
- 'abzeichen_thl' => '2',
- 'freier_kommentar' => 'Ich freue mich auf die Zusammenarbeit.',
- 'körperliche_eignung' => '1',
- 'schwimmer' => '1',
- 'einwilligung_datenschutz' => '1',
- 'einwilligung_bildrechte' => '1',
- ],
- 'uploads' => [
- 'portraitfoto' => [
- [
- 'original_filename' => 'bewerbungsfoto.jpg',
- 'stored_dir' => 'test/portraitfoto/abc12345',
- 'stored_filename' => 'bewerbungsfoto.jpg',
- 'relative_path' => 'test/portraitfoto/abc12345/bewerbungsfoto.jpg',
- 'mime' => 'image/jpeg',
- 'size' => 150000,
- ],
- ],
- 'qualifikationsnachweise' => [
- [
- 'original_filename' => 'nachweis_truppfuehrer.pdf',
- 'stored_dir' => 'test/qualifikationsnachweise/def67890',
- 'stored_filename' => 'nachweis_truppfuehrer.pdf',
- 'relative_path' => 'test/qualifikationsnachweise/def67890/nachweis_truppfuehrer.pdf',
- 'mime' => 'application/pdf',
- 'size' => 250000,
- ],
- ],
- ],
- ];
- echo "=== Testing SubmissionFormatter ===\n\n";
- $schema = new FormSchema();
- $formatter = new SubmissionFormatter($schema);
- $steps = $formatter->getFormattedSteps($submission['form_data']);
- foreach ($steps as $step) {
- echo "--- " . $step['title'] . " ---\n";
- foreach ($step['fields'] as $field) {
- echo " " . $field['label'] . ": " . $field['value'] . "\n";
- }
- echo "\n";
- }
- $uploads = $formatter->getUploadSummary($submission['uploads']);
- echo "--- Uploads ---\n";
- foreach ($uploads as $u) {
- echo " " . $u['label'] . ": " . $u['filename'] . "\n";
- }
- echo "\n=== Testing PdfGenerator (Form Data PDF) ===\n\n";
- $pdfGen = new PdfGenerator($formatter, $schema);
- $formPdf = $pdfGen->generateFormDataPdf($submission);
- if ($formPdf !== null) {
- echo "Form data PDF generated: " . $formPdf . " (" . filesize($formPdf) . " bytes)\n";
- $outputDir = dirname(__DIR__) . '/storage/logs';
- $copyPath = $outputDir . '/test_antragsdaten.pdf';
- copy($formPdf, $copyPath);
- echo "Copied to: " . $copyPath . "\n";
- unlink($formPdf);
- } else {
- echo "ERROR: Form data PDF generation failed.\n";
- }
- echo "\n=== Testing PdfGenerator (Attachments PDF) ===\n";
- echo "(Expected: null or partial - test files don't exist on disk)\n\n";
- $attPdf = $pdfGen->generateAttachmentsPdf($submission);
- if ($attPdf !== null) {
- echo "Attachments PDF generated: " . $attPdf . " (" . filesize($attPdf) . " bytes)\n";
- unlink($attPdf);
- } else {
- echo "No attachments PDF (expected: test upload files don't exist on disk).\n";
- }
- echo "\n=== Testing Mailer HTML Rendering ===\n\n";
- $mailer = new Mailer();
- $ref = new \ReflectionClass($mailer);
- $adminMethod = $ref->getMethod('renderAdminHtml');
- $adminMethod->setAccessible(true);
- $adminHtml = $adminMethod->invoke($mailer, $submission, true, true);
- $outputDir = dirname(__DIR__) . '/storage/logs';
- file_put_contents($outputDir . '/test_admin_email.html', $adminHtml);
- echo "Admin HTML saved to: " . $outputDir . "/test_admin_email.html\n";
- $applicantMethod = $ref->getMethod('renderApplicantHtml');
- $applicantMethod->setAccessible(true);
- $applicantHtml = $applicantMethod->invoke($mailer, $submission);
- file_put_contents($outputDir . '/test_applicant_email.html', $applicantHtml);
- echo "Applicant HTML saved to: " . $outputDir . "/test_applicant_email.html\n";
- echo "\nDone. Check the generated files in storage/logs/.\n";
|