ldc-gen-game-web/app/Mail/Won/PrizeWonMail.php
2025-08-29 15:03:32 +02:00

78 lines
2.3 KiB
PHP

<?php
namespace App\Mail\Won;
use App\Models\Prize;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\View;
class PrizeWonMail extends Mailable implements ShouldQueue
{
use Queueable;
use SerializesModels;
/**
* Create a new message instance.
*
* @param \Illuminate\Mail\Mailables\Address $recipient The winner.
* @param string $game_name The game name.
* @param \App\Models\Prize $prize The won prize.
* @param string $print_url Url to print the discount.
* @param string $company The game name.
*
* @return void
*/
public function __construct(
protected Address $recipient,
protected string $game_name,
protected Prize $prize,
protected string $print_url,
protected string $company
) {
// Keep empty.
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope(): \Illuminate\Mail\Mailables\Envelope
{
return new Envelope(
to: [$this->recipient],
subject: trans('Votre gain du jeu :game_name', [
'game_name' => $this->game_name
]),
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content(): \Illuminate\Mail\Mailables\Content
{
/** @var \App\Models\Tenant $tenantModel */
$tenantModel = $this->prize->tenant;
/** @var string $themeName; */
$themeName = $tenantModel->theme;
View::addNamespace('theme', resource_path("theme/$themeName/views"));
return new Content(
markdown: 'theme::mails.won-prize',
with: [
'first_name' => $this->recipient->name ?? $this->recipient->address,
'game_name' => $this->game_name,
'prize_label' => $this->prize->label,
'company' => $this->company,
],
);
}
}