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