diff --git a/app/Actions/SendMail/SendNewsletter.php b/app/Actions/SendMail/SendNewsletter.php
index ab8084d..e3aceeb 100644
--- a/app/Actions/SendMail/SendNewsletter.php
+++ b/app/Actions/SendMail/SendNewsletter.php
@@ -3,10 +3,12 @@
namespace App\Actions\SendMail;
use App\Jobs\SendNewsletterJob;
+use App\Mail\Newsletter;
use App\Models\MailAdressen;
use App\Models\MailGruppen;
use App\Models\MailVorlage;
use Filament\Notifications\Notification;
+use Illuminate\Support\Facades\Mail;
// use App\Mail\Newsletter;
// use Illuminate\Support\Facades\Mail;
@@ -41,7 +43,7 @@ class SendNewsletter
"absender_mail" => ""
*/
- $adressen = MailAdressen::where('mail_gruppen_id', $record->mail_gruppen_id)->where('deaktiviert', 0)->get();
+ $adressen = MailAdressen::where('mail_gruppen_id', $record->mail_gruppen_id)->where('is_active', 1)->get();
/***
"mail_gruppen_id" => 1
@@ -71,17 +73,23 @@ class SendNewsletter
$data['absender_name'] = $gruppe->absender_name;
$data['absender_email'] = $gruppe->absender_mail;
- if ($adresse->anrede == 'Höflich') {
- if ($adresse->gender) {
- $anrede = 'Sehr geehrte Frau '.$adresse->last_name;
- } else {
- $anrede = 'Sehr geehrter Herr '.$adresse->last_name;
- }
+ if ($adresse->gender) {
+ $data['anrede'] = 'Sehr geehrte Architektin '.$adresse->last_name.', Lieber '.$adresse->first_name;
} else {
- $anrede = 'Hallo '.$adresse->first_name;
+ $data['anrede'] = 'Sehr geehrter Architekt '.$adresse->last_name.', Lieber '.$adresse->first_name;
}
- $data['inhalt'] = str_replace('###anrede###', $anrede, $template->inhalt);
+ // if ($adresse->anrede == 'Höflich') {
+ // if ($adresse->gender) {
+ // $anrede = 'Sehr geehrte Architektin '.$adresse->last_name.', Lieber '.$adresse->first_name;
+ // } else {
+ // $anrede = 'Sehr geehrter Architekt '.$adresse->last_name.', Lieber '.$adresse->first_name;
+ // }
+ // } else {
+ // $anrede = 'Hallo '.$adresse->first_name;
+ // }
+
+ $data['inhalt'] = $template->inhalt;
SendNewsletterJob::dispatch($data);
diff --git a/app/Filament/Resources/MailAdressens/Schemas/MailAdressenForm.php b/app/Filament/Resources/MailAdressens/Schemas/MailAdressenForm.php
index fa3bf40..31e222c 100644
--- a/app/Filament/Resources/MailAdressens/Schemas/MailAdressenForm.php
+++ b/app/Filament/Resources/MailAdressens/Schemas/MailAdressenForm.php
@@ -31,7 +31,7 @@ class MailAdressenForm
->required()
->label('Mail Gruppe')
->relationship(name: 'mail_gruppen', titleAttribute: 'name'),
- Toggle::make('deaktiviert'),
+ Toggle::make('is_active'),
]),
Section::make('Persönliche Anrede')
->columns(2)
diff --git a/app/Filament/Resources/MailAdressens/Tables/MailAdressensTable.php b/app/Filament/Resources/MailAdressens/Tables/MailAdressensTable.php
index 98c48c4..e7d36b9 100644
--- a/app/Filament/Resources/MailAdressens/Tables/MailAdressensTable.php
+++ b/app/Filament/Resources/MailAdressens/Tables/MailAdressensTable.php
@@ -4,6 +4,7 @@ namespace App\Filament\Resources\MailAdressens\Tables;
use App\Models\MailAdressen;
use App\Models\MailGruppen;
+use Filament\Actions\Action;
use Filament\Actions\BulkAction;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteAction;
@@ -19,6 +20,7 @@ use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
+use Illuminate\Support\Carbon;
class MailAdressensTable
{
@@ -27,7 +29,8 @@ class MailAdressensTable
return $table
->defaultSort('vereidigung', direction: 'desc')
->columns([
- ToggleColumn::make('deaktiviert')
+ ToggleColumn::make('is_active')
+ ->label('Aktive')
->alignCenter(),
TextColumn::make('anrede')
->badge()
@@ -53,7 +56,7 @@ class MailAdressensTable
->filters([
Filter::make('mail_gruppen_id')
->columnSpanFull()
- ->columns(4)
+ ->columns(5)
->schema([
Select::make('mail_gruppen_id')
->hiddenLabel()
@@ -63,7 +66,17 @@ class MailAdressensTable
->options(function (): array {
return MailGruppen::pluck('name', 'id')->toArray();
}),
- Toggle::make('deaktiviert')->label('Deaktivierte'),
+ Toggle::make('is_active')->label('Aktive'),
+ Select::make('gender')
+ ->selectablePlaceholder(false)
+ ->hiddenLabel()
+ ->preload()
+ ->default(0)
+ ->options([
+ '0' => 'Alle',
+ 'women' => 'Frauen',
+ 'men' => 'Männer',
+ ]),
DatePicker::make('vereidigung_von')->native(false)->hiddenLabel()->placeholder('Vereidigung von'),
DatePicker::make('vereidigung_bis')->native(false)->hiddenLabel()->placeholder('Vereidigung bis'),
])
@@ -73,8 +86,18 @@ class MailAdressensTable
$data['mail_gruppen_id'],
fn (Builder $query, $mail_gruppen_id): Builder => $query->where('mail_gruppen_id', $mail_gruppen_id),
)->when(
- $data['deaktiviert'],
- fn (Builder $query, $deaktiviert): Builder => $query->where('deaktiviert', $deaktiviert),
+ $data['is_active'],
+ fn (Builder $query, $is_active): Builder => $query->where('is_active', $is_active),
+ )->when(
+ $data['gender'],
+ function (Builder $query, $gender) {
+ switch ($gender) {
+ case 'women':
+ return $query->where('gender', 1);
+ case 'men':
+ return $query->where('gender', 0);
+ }
+ }
)->when(
$data['vereidigung_von'],
fn (Builder $query, $date): Builder => $query->whereDate('vereidigung', '>=', $date),
@@ -94,8 +117,36 @@ class MailAdressensTable
DeleteAction::make()->iconButton(),
])
->toolbarActions([
+ Action::make('nach2022')
+ ->color('gray')
+ ->label('Nach 2022')
+ ->tooltip('Aktiviert alle Teilnehmer NACH dem 1. Jan. 2022')
+ ->action(function (): void {
+ MailAdressen::where('vereidigung', '>', Carbon::create(2022, 1, 1, 0, 0, 0))
+ ->update(
+ ['is_active' => 1]
+ );
+ MailAdressen::where('vereidigung', '<', Carbon::create(2022, 1, 1, 0, 0, 0))
+ ->update(
+ ['is_active' => 0]
+ );
+ }),
+ Action::make('vor2022')
+ ->color('gray')
+ ->label('Vor 2022')
+ ->tooltip('Aktiviert alle Teilnehmer VOR dem 1. Jan. 2022')
+ ->action(function (): void {
+ MailAdressen::where('vereidigung', '>', Carbon::create(2022, 1, 1, 0, 0, 0))
+ ->update(
+ ['is_active' => 0]
+ );
+ MailAdressen::where('vereidigung', '<', Carbon::create(2022, 1, 1, 0, 0, 0))
+ ->update(
+ ['is_active' => 1]
+ );
+ }),
BulkActionGroup::make([
- BulkAction::make('deaktiviert_off')
+ BulkAction::make('active')
->label('Auswahl Aktivieren')
->tooltip('Auswahl aktivieren')
->icon('heroicon-o-play')
@@ -104,11 +155,11 @@ class MailAdressensTable
/** @var object $record */
MailAdressen::where('id', '=', $record->id)
->update(
- ['deaktiviert' => 0]
+ ['is_active' => 0]
);
}
}),
- BulkAction::make('deaktiviert_on')
+ BulkAction::make('deaktive')
->color('primary')
->label('Auswahl Deaktivieren')
->tooltip('Auswahl deaktivieren')
@@ -118,7 +169,7 @@ class MailAdressensTable
/** @var object $record */
MailAdressen::where('id', '=', $record->id)
->update(
- ['deaktiviert' => 1]
+ ['is_active' => 1]
);
}
}),
diff --git a/app/Models/MailAdressen.php b/app/Models/MailAdressen.php
index fd5a30c..302ebbf 100644
--- a/app/Models/MailAdressen.php
+++ b/app/Models/MailAdressen.php
@@ -18,7 +18,7 @@ class MailAdressen extends Model
'zip',
'city',
'vereidigung',
- 'deaktiviert',
+ 'is_active',
];
public function mail_gruppen()
diff --git a/database/migrations/2026_05_04_070425_create_mail_adressens_table.php b/database/migrations/2026_05_04_070425_create_mail_adressens_table.php
index bd83fae..47b1720 100644
--- a/database/migrations/2026_05_04_070425_create_mail_adressens_table.php
+++ b/database/migrations/2026_05_04_070425_create_mail_adressens_table.php
@@ -24,7 +24,7 @@ return new class extends Migration
$table->string('zip')->nullable();
$table->string('city')->nullable();
$table->timestamp('vereidigung')->nullable();
- $table->boolean('deaktiviert')->default(false);
+ $table->boolean('is_active')->default(false);
$table->timestamps();
});
}
diff --git a/public/images/newsletter/Zeichnung.png b/public/images/newsletter/Zeichnung.png
new file mode 100644
index 0000000..1eae160
Binary files /dev/null and b/public/images/newsletter/Zeichnung.png differ
diff --git a/public/images/newsletter/hanno.jpg b/public/images/newsletter/hanno.jpg
new file mode 100644
index 0000000..21a6d69
Binary files /dev/null and b/public/images/newsletter/hanno.jpg differ
diff --git a/public/images/newsletter/ztlogo-schrift.png b/public/images/newsletter/ztlogo-schrift.png
new file mode 100644
index 0000000..6886ade
Binary files /dev/null and b/public/images/newsletter/ztlogo-schrift.png differ
diff --git a/public/images/newsletter/ztlogo.gif b/public/images/newsletter/ztlogo.gif
new file mode 100644
index 0000000..c8e561f
Binary files /dev/null and b/public/images/newsletter/ztlogo.gif differ
diff --git a/public/test.html b/public/test.html
new file mode 100644
index 0000000..39d574f
--- /dev/null
+++ b/public/test.html
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+ Simple Transactional Email
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/test2.html b/public/test2.html
new file mode 100644
index 0000000..c1b7977
--- /dev/null
+++ b/public/test2.html
@@ -0,0 +1,390 @@
+
+
+
+
+
+ ZT Kammerwahl 2026
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/views/mail/newsletter.blade.php b/resources/views/mail/newsletter.blade.php
index cb6de4c..466d524 100644
--- a/resources/views/mail/newsletter.blade.php
+++ b/resources/views/mail/newsletter.blade.php
@@ -1,53 +1,381 @@
-
+embedData(file_get_contents($hanno), 'Architekt DI Hanno Vogl-Fernheim', 'image/png');
+?>
+
-
- {{ $data['subjekt'] }}
-
-
-
- {!! $data['inhalt'] !!}
-
-
+
diff --git a/resources/views/mail/test.html b/resources/views/mail/test.html
deleted file mode 100644
index 8197d8a..0000000
--- a/resources/views/mail/test.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
- {{ $data['subjekt'] }}
-
-
-
-
-
-
-
Sehr geehrter Herr Duck
-
- Minutengeschichten sind kurze Storys für eilige Leser und Eltern mit wenig Zeit. Die Texte sind
- innerhalb
- einer Minute gelesen. So viel Zeit hat man auf jeden Fall, bevor es dann ins Bett geht.
- Hier findest du hunderte Gute Nacht Geschichten, die ich für dich zum Vorlesen oder selber schmökern
- geschrieben habe. Egal, ob du etwas mit Prinzessinnen, Kindern, Tieren, Cowboys, Weltraumabenteuern oder
- anderen spannenden Geschichten sucht, hier wirst du bestimmt etwas Passendes finden.
-
-
- Mit besten Grüßen
- Hanno Vogl Fernheim
-
-
-
-
-
\ No newline at end of file