Bei Einreichungen über die API geht die Veröffentlichungs- oder Ablehnungsmail nicht an das API-Konto, sondern an den Pressekontakt der Meldung oder ersatzweise an die Firmen-Adresse. Die Anrede stammte aber weiterhin vom Konto — der Empfänger wurde also mit dem Namen des Einreichers begrüßt, bei connektar mit dem der Agentur. Adresse und Name werden jetzt gemeinsam bestimmt. Ohne hinterlegten Namen bleibt er leer und das Template grüßt neutral, statt einen falschen zu raten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
61 lines
1.7 KiB
PHP
61 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Mail;
|
|
|
|
use App\Enums\EmailNotificationType;
|
|
use App\Mail\Concerns\Unsubscribable;
|
|
use App\Models\PressRelease;
|
|
use App\Models\User;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Mail\Mailable;
|
|
use Illuminate\Mail\Mailables\Content;
|
|
use Illuminate\Mail\Mailables\Envelope;
|
|
use Illuminate\Queue\SerializesModels;
|
|
|
|
class PressReleasePublished extends Mailable
|
|
{
|
|
use Queueable, SerializesModels, Unsubscribable;
|
|
|
|
public string $showUrl;
|
|
|
|
/**
|
|
* Öffentliche Detailseiten je Portal, auf dem die PM erschienen ist
|
|
* (bei Portal::Both beide Spokes).
|
|
*
|
|
* @var list<array{label: string, url: string}>
|
|
*/
|
|
public array $portalLinks;
|
|
|
|
/**
|
|
* Name für die Anrede — bei API-Einlieferungen der Pressekontakt bzw.
|
|
* die Firma, nie der Kontoname des API-Einlieferers.
|
|
*/
|
|
public string $recipientName;
|
|
|
|
public function __construct(
|
|
public readonly User $user,
|
|
public readonly PressRelease $pressRelease,
|
|
?string $recipientName = null,
|
|
) {
|
|
$this->recipientName = $recipientName ?? $user->name;
|
|
$this->showUrl = $user->canAccessAdmin()
|
|
? route('admin.press-releases.show', $pressRelease->id)
|
|
: route('me.press-releases.show', $pressRelease->id);
|
|
|
|
$this->portalLinks = $pressRelease->publicPortalLinks();
|
|
|
|
$this->configureUnsubscribe($user, EmailNotificationType::PressReleasePublished);
|
|
}
|
|
|
|
public function envelope(): Envelope
|
|
{
|
|
return new Envelope(
|
|
subject: 'Ihre Pressemitteilung wurde veröffentlicht: '.$this->pressRelease->title,
|
|
);
|
|
}
|
|
|
|
public function content(): Content
|
|
{
|
|
return new Content(view: 'emails.press-release.published');
|
|
}
|
|
}
|