From 0054a86046165a35f61ba1f45f36b1c4a8276fc6 Mon Sep 17 00:00:00 2001 From: Danny Spangenberg Date: Sat, 11 Jul 2026 17:47:09 +0200 Subject: [PATCH] Erweiterung E-Mails --- .../Commands/SetInboundForDropboxMails.php | 63 +++++++++++++++++++ app/Http/Controllers/App/EmailController.php | 2 +- resources/js/Pages/App/Email/EmailIndex.tsx | 11 +++- 3 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 app/Console/Commands/SetInboundForDropboxMails.php diff --git a/app/Console/Commands/SetInboundForDropboxMails.php b/app/Console/Commands/SetInboundForDropboxMails.php new file mode 100644 index 00000000..8ed73bcc --- /dev/null +++ b/app/Console/Commands/SetInboundForDropboxMails.php @@ -0,0 +1,63 @@ +option('tenant'); + + if ($tenantId) { + $tenant = Tenant::find($tenantId); + if (! $tenant) { + $this->error("Tenant {$tenantId} not found"); + + return 1; + } + $this->processTenant($tenant); + } else { + $tenants = Tenant::all(); + $this->info('Processing '.count($tenants).' tenants...'); + + foreach ($tenants as $tenant) { + $this->processTenant($tenant); + } + } + + return 0; + } + + private function processTenant(Tenant $tenant): void + { + $tenant->run(function () { + $mails = DropboxMail::query()->with('dropbox')->get(); + + foreach ($mails as $mail) { + $mail->is_inbound = $mail->dropbox->real_email !== $mail->from; + $mail->save(); + } + }); + } +} diff --git a/app/Http/Controllers/App/EmailController.php b/app/Http/Controllers/App/EmailController.php index cdd58c75..ab1fcb63 100644 --- a/app/Http/Controllers/App/EmailController.php +++ b/app/Http/Controllers/App/EmailController.php @@ -51,7 +51,7 @@ public function index(Dropbox $dropbox, $mail = null): Response false)->with('mails')->orderBy('name')->orderBy('first_name')->get(); $projects = Project::query()->where('is_archived', false)->orderBy('name')->get(); - $mails = DropboxMail::query()->whereNull('archived_at')->withCount('attachments')->where('dropbox_id', $dropbox->id)->orderBy('date', 'desc')->paginate(50); + $mails = DropboxMail::query()->where('is_inbound', true)->whereNull('archived_at')->withCount('attachments')->where('dropbox_id', $dropbox->id)->orderBy('date', 'desc')->paginate(50); return Inertia::render('App/Email/EmailIndex', [ 'mails' => DropboxMailData::collect($mails), diff --git a/resources/js/Pages/App/Email/EmailIndex.tsx b/resources/js/Pages/App/Email/EmailIndex.tsx index 93e5928f..646cb655 100644 --- a/resources/js/Pages/App/Email/EmailIndex.tsx +++ b/resources/js/Pages/App/Email/EmailIndex.tsx @@ -123,7 +123,14 @@ const EmailIndex: React.FC = ({ contacts, dropbox, mail, mails, width="full" className="relative m-0 mx-0 h-full p-0 px-0" > -
+
+ Posteingang +
+ Gesendete Objekte +
+ Archiv +
+
{mails.data.map(item => ( @@ -137,7 +144,7 @@ const EmailIndex: React.FC = ({ contacts, dropbox, mail, mails,
-
+
{mail && }