the MailMessage builders to use view(). This keeps the existing copy/labels but aligns the look with resources/views/ emails/partials/layout.blade.php. I also switched the customer add‑on receipt notification to reuse the existing branded view and added missing translations for the upload pipeline alert.
62 lines
2.3 KiB
PHP
62 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Notifications\Ops;
|
|
|
|
use App\Models\PackagePurchase;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Notifications\Messages\MailMessage;
|
|
use Illuminate\Notifications\Notification;
|
|
|
|
class RefundProcessed extends Notification implements ShouldQueue
|
|
{
|
|
use Queueable;
|
|
|
|
public function __construct(
|
|
private readonly PackagePurchase $purchase,
|
|
private readonly bool $success,
|
|
private readonly ?string $reason = null,
|
|
private readonly ?string $error = null,
|
|
) {}
|
|
|
|
public function via(object $notifiable): array
|
|
{
|
|
return ['mail'];
|
|
}
|
|
|
|
public function toMail(object $notifiable): MailMessage
|
|
{
|
|
$tenant = $this->purchase->tenant;
|
|
$package = $this->purchase->package;
|
|
$amount = number_format((float) $this->purchase->price, 2);
|
|
$subject = __('emails.ops.refund.subject', ['package' => $package?->name ?? __('emails.package_limits.package_fallback')]);
|
|
$greeting = __('emails.ops.refund.greeting');
|
|
$lines = [
|
|
__('emails.ops.refund.tenant', ['tenant' => $tenant?->name ?? __('emails.tenant_feedback.unknown_tenant')]),
|
|
__('emails.ops.refund.package', ['package' => $package?->name ?? __('emails.package_limits.package_fallback')]),
|
|
__('emails.ops.refund.amount', ['amount' => $amount, 'currency' => '€']),
|
|
__('emails.ops.refund.provider', ['provider' => $this->purchase->provider, 'id' => $this->purchase->provider_id ?? '—']),
|
|
$this->success ? __('emails.ops.refund.status_success') : __('emails.ops.refund.status_failed'),
|
|
];
|
|
|
|
if ($this->reason) {
|
|
$lines[] = __('emails.ops.refund.reason', ['reason' => $this->reason]);
|
|
}
|
|
|
|
if ($this->error) {
|
|
$lines[] = __('emails.ops.refund.error', ['error' => $this->error]);
|
|
}
|
|
|
|
return (new MailMessage)
|
|
->subject($subject)
|
|
->view('emails.notifications.basic', [
|
|
'title' => $subject,
|
|
'preheader' => $greeting,
|
|
'heroTitle' => $greeting,
|
|
'heroSubtitle' => $subject,
|
|
'lines' => $lines,
|
|
'footer' => __('emails.ops.refund.footer'),
|
|
]);
|
|
}
|
|
}
|