File: D:/HostingSpaces/SBogers10/werkenbijanvil.komma.nl/app/Mail/VacancyMail.php
<?php
namespace App\Mail;
use App\Servicepoints\Models\Servicepoint;
use App\Vacancies\Models\Vacancy;
use Illuminate\Bus\Queueable;
use Illuminate\Http\UploadedFile;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class VacancyMail extends Mailable
{
use Queueable, SerializesModels;
protected $request;
/** @var UploadedFile[] $files */
protected ?array $files;
private Vacancy $vacancy;
/**
* Create a new message instance.
*
* @param $request
* @param $files
* @param Vacancy $vacancy
*/
public function __construct($request, $files, Vacancy $vacancy)
{
$this->request = $request;
$this->files = $files;
$this->vacancy = $vacancy;
// Textarea should be converted with nl2br
if(isset($this->request['formMessage'])) $this->request['formMessage'] = nl2br($this->request['formMessage']);
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$defaultServicePoint = Servicepoint::with('translation')->find(config('site.global_servicePoint_id'));
//Use the vacancies service point email address if possible...
$mail = $this->vacancy->servicepoint->translation->email ?? null;
//...else try to use the email address of the global service point..
if(empty($mail)) $mail = $defaultServicePoint->translation->email ?? null;
//...else try to use the mailTo address from the site config file OR if everything else failed use our support mail
if(empty($mail)) $mail = config('site.mailTo', 'info@komma.nl');
$mail = $this->view('emails.vacancy')
->subject(__('email.vacancy.subject'))
->to($mail)
->with([
'mailToName' => ($this->vacancy->servicepoint->translation->first_name ?? $defaultServicePoint->translation->first_name) ?? null,
'request' => $this->request
]);
if(is_array($this->files)) {
foreach ($this->files as $file) {
$mail->attachData($file->get(), $file->getClientOriginalName());
}
}
return $mail;
}
}