Files
WitShop/database/seeders/EmailTemplateSeeder.php
marcoandClaude Sonnet 4.6 5dad8b9324
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 7s
Add email templates, page layouts, and shop themes (template system)
- E-Mail-Templates: DB-gespeicherte HTML-Templates mit {{placeholder}}-System,
  Admin-UI zum Bearbeiten von Betreff und Body, alle 4 Mailables aktualisiert
- Seiten-Layouts: 4 Layouts für CMS-Seiten (Standard, Sidebar, Volle Breite, Landing),
  Layout-Auswahl im Admin-Formular
- Shop-Themes: 5 Farbthemen via CSS-Variablen, Picker in Einstellungen
- Deployment: EmailTemplateSeeder wird automatisch beim Deploy ausgeführt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 22:04:54 +02:00

134 lines
5.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Database\Seeders;
use App\Models\EmailTemplate;
use Illuminate\Database\Seeder;
class EmailTemplateSeeder extends Seeder
{
public function run(): void
{
$templates = [
[
'key' => 'order_confirmation',
'label' => 'Bestellbestätigung',
'subject' => 'Bestellbestätigung {{order_number}} – {{shop_name}}',
'variables' => ['customer_name','order_number','order_total','payment_info','order_items_table','shop_name','shop_email','shop_address','shop_owner','bank_name','bank_iban','bank_bic','invoice_payment_days'],
'body' => <<<'HTML'
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8"><style>
body { font-family: Arial, sans-serif; color: #333; max-width: 600px; margin: 0 auto; }
h1 { color: #1d4ed8; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 8px; border-bottom: 1px solid #eee; text-align: left; }
th { background: #f8fafc; }
.total { font-weight: bold; font-size: 1.1em; }
.box { background: #f8fafc; padding: 16px; border-radius: 8px; margin: 16px 0; }
</style></head>
<body>
<h1>Vielen Dank für Ihre Bestellung!</h1>
<p>Guten Tag {{customer_name}},</p>
<p>wir haben Ihre Bestellung <strong>{{order_number}}</strong> erhalten und bestätigen sie hiermit.</p>
{{payment_info}}
<h2>Bestellübersicht</h2>
{{order_items_table}}
<hr>
<p style="font-size:0.85em;color:#666;">
{{shop_name}} | {{shop_address}}<br>
Bei Fragen: <a href="mailto:{{shop_email}}">{{shop_email}}</a>
</p>
</body>
</html>
HTML,
],
[
'key' => 'order_shipped',
'label' => 'Versandbestätigung',
'subject' => 'Ihre Bestellung {{order_number}} ist unterwegs',
'variables' => ['order_number','tracking_code','shop_name','shop_email'],
'body' => <<<'HTML'
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8"><style>
body { font-family: Arial, sans-serif; color: #333; max-width: 600px; margin: 0 auto; }
h1 { color: #1d4ed8; }
.box { background: #f0fdf4; padding: 16px; border-radius: 8px; border: 1px solid #86efac; }
</style></head>
<body>
<h1>Ihre Bestellung ist unterwegs!</h1>
<p>Ihre Bestellung <strong>{{order_number}}</strong> wurde versendet.</p>
{{tracking_info}}
<p>Bei Fragen zu Ihrer Lieferung können Sie uns jederzeit kontaktieren.</p>
<hr>
<p style="font-size:0.85em;color:#666;">{{shop_name}} | {{shop_email}}</p>
</body>
</html>
HTML,
],
[
'key' => 'payment_received',
'label' => 'Zahlungsbestätigung',
'subject' => 'Zahlung eingegangen – Bestellung {{order_number}}',
'variables' => ['customer_name','order_number','order_total','shop_name','shop_email'],
'body' => <<<'HTML'
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8"><style>
body { font-family: Arial, sans-serif; color: #333; max-width: 600px; margin: 0 auto; }
h1 { color: #16a34a; }
</style></head>
<body>
<h1>Zahlung eingegangen</h1>
<p>Guten Tag {{customer_name}},</p>
<p>Ihre Zahlung für Bestellung <strong>{{order_number}}</strong> ({{order_total}} €) ist eingegangen.</p>
<p>Im Anhang finden Sie Ihre Rechnung als PDF.</p>
<p>Wir werden Ihre Bestellung schnellstmöglich bearbeiten und versenden.</p>
<hr>
<p style="font-size:0.85em;color:#666;">{{shop_name}} | {{shop_email}}</p>
</body>
</html>
HTML,
],
[
'key' => 'widerruf_confirmation',
'label' => 'Widerrufsbestätigung',
'subject' => 'Bestätigung Ihres Widerrufs',
'variables' => ['customer_name','widerruf_name','widerruf_email','widerruf_order_number','widerruf_product','widerruf_date','widerruf_reason','shop_name'],
'body' => <<<'HTML'
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8"><style>
body { font-family: Arial, sans-serif; color: #333; max-width: 600px; margin: 0 auto; }
</style></head>
<body>
<h2>Bestätigung Ihres Widerrufs</h2>
<p>Guten Tag {{customer_name}},</p>
<p>Ihr Widerruf ist bei uns eingegangen. Wir werden ihn schnellstmöglich bearbeiten.</p>
<table style="border-collapse:collapse;width:100%">
<tr><td style="padding:6px;font-weight:bold">Name</td><td style="padding:6px">{{widerruf_name}}</td></tr>
<tr><td style="padding:6px;font-weight:bold">E-Mail</td><td style="padding:6px">{{widerruf_email}}</td></tr>
<tr><td style="padding:6px;font-weight:bold">Bestellnummer</td><td style="padding:6px">{{widerruf_order_number}}</td></tr>
<tr><td style="padding:6px;font-weight:bold">Produkt</td><td style="padding:6px">{{widerruf_product}}</td></tr>
<tr><td style="padding:6px;font-weight:bold">Datum</td><td style="padding:6px">{{widerruf_date}}</td></tr>
<tr><td style="padding:6px;font-weight:bold">Begründung</td><td style="padding:6px">{{widerruf_reason}}</td></tr>
</table>
<p style="font-size:0.85em;color:#666;">{{shop_name}}</p>
</body>
</html>
HTML,
],
];
foreach ($templates as $tpl) {
EmailTemplate::updateOrCreate(['key' => $tpl['key']], $tpl);
}
}
}