request->refund; if (!$refund->isPending()) { $response->message = $refund->isAccepted() ? 'Diese Erstattung wurde bereits bestätigt -- es gibt nichts mehr nachzureichen.' : 'Diese Erstattung wurde abgebrochen.'; return $response; } $this->notify(); $response->success = true; $response->message = 'Die Rückerstattungsmail wurde erneut versendet.'; return $response; } /** * Teili und Kontaktperson bekommen je eine eigene Mail -- dasselbe Muster wie bei der Freigabe * (siehe ReleaseRefundCommand). */ private function notify(): void { /** @var EventParticipant $participant */ $participant = $this->request->refund->participant()->first(); $recipients = [$participant->email_1]; // `filled()` und nicht `!== null`: Der Anmeldewizard überspringt den Schritt "Kontaktperson" bei // Volljährigen und legt das Feld als Leerstring an -- `Mail::to('')` liefe ins Leere. if (filled($participant->email_2)) { $recipients[] = $participant->email_2; } foreach ($recipients as $recipient) { Mail::to($recipient)->send(new RefundReleasedMail( participant: $participant, refund: $this->request->refund, )); } } }