participant->toResource()->toArray(new Request()); $subject = sprintf( $participant['needs_payment'] ? 'Teilnahme- & Zahlungsinformationen %1$s %2$s' : 'Anmeldebestätigung %1$s %2$s', 'für die Veranstaltung', $this->participant->event()->first()->name ); return new Envelope( subject: $subject, ); } /** * Get the message content definition. */ public function content(): Content { $event = $this->participant->event()->first()->toResource()->toArray(new Request()); $participant = $this->participant->toResource()->toArray(new Request()); $girocodeProvider = new \App\Providers\GiroCodeProvider( $event['accountOwner'], $event['accountIban'], (float) $participant['amount_left_value'], $participant['payment_purpose'] ); $girocodeBinary = (string)$girocodeProvider->create(); $participationIcal = $this->getParticipationIcal(); $deadlineIcal = $this->getDeadlineIcal(); return new Content( view: 'emails.events.signup_complete', with: [ 'participationType' => $participant['participationType'], 'name' => $participant['nicename'], 'eventTitle' => $event['name'], 'eventEmail' => $event['email'], 'arrival' => $participant['arrival'], 'departure' => $participant['departure'], 'amount' => $participant['amount_left_string'], 'paymentFinalDate' => $event['registrationFinalEnd']['formatted'], 'paymentRequired' => $participant['needs_payment'], 'accountOwner' => $event['accountOwner'], 'accountIban' => $event['accountIban'], 'paymentPurpose' => $participant['payment_purpose'], 'girocodeBinary' => $girocodeBinary, 'efzStatus' => $participant['efz_status'], 'participationIcalFilename' => $participationIcal->filename, 'deadlineIcalFilename' => $deadlineIcal->filename, ], ); } public function attachments(): array { $attachments = [ Attachment::fromData( fn () => $this->getParticipationIcal()->icalContent, $this->getParticipationIcal()->filename )->withMime('text/calendar'), ]; $participant = $this->participant->toResource()->toArray(new Request()); if ($participant['needs_payment']) { /*$attachments[] = [ Attachment::fromData( fn () => $this->getDeadlineIcal()->icalContent, $this->getDeadlineIcal()->filename )->withMime('text/calendar'), ];*/ } return $attachments; } private function getDeadlineIcal(): GenerateIcalForDeadlineResponse { if ($this->deadlineIcal === null) { $this->deadlineIcal = (new GenerateIcalForDeadlineCommand( new GenerateIcalForDeadlineRequest($this->participant->event()->first()) ))->execute(); } return $this->deadlineIcal; } private function getParticipationIcal(): GenerateIcalResponse { if ($this->participationIcal === null) { $this->participationIcal = (new GenerateIcalCommand( new GenerateIcalRequest($this->participant) ))->execute(); } return $this->participationIcal; } }