Preview: SessionCreatedMail.php
Size: 5.42 KB
/var/www/multi-event-cfp.bitkit.dk/httpdocs/app/Mail/SessionCreatedMail.php
<?php
namespace App\Mail;
use App\Models\Log;
use App\Models\Session;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use App\Lib\EmailSetupHelper;
class SessionCreatedMail extends Mailable
{
use Queueable, SerializesModels;
protected $session;
protected $user;
protected $type;
protected $slot;
protected $emailContent;
protected $emailSetup;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Session $session, $user, $type,$slot,$emailContent)
{
$this->session = $session;
$this->user = $user;
$this->type = $type;
$this->slot = $slot;
$this->emailContent = $emailContent;
$this->emailSetup = new EmailSetupHelper();
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$logo = config('app.url') . '/' . $this->session->event->theme['logo']['value'];
$eventHeader = $this->session->event->event_name;
$eventUrl = $this->session->event->eventUrl('admin');
$sessionUrl = $eventUrl . "session/preview";
$body = $this->type == 'added to session' ? $this->getSessionMailContents() : $this->getSlotMailContents();
$subject = $body['subject'];
return $this->from(config('app.admin_mail', 'Admin'), $eventHeader)
->subject($subject)
->view('emails.admin.session_update')
->with([
"body" => html_entity_decode($body['body']),
"eventHeader" => $eventHeader,
"logo" => $logo
]);
}
public function getSessionMailContents()
{
$sessionStartDate = !empty($this->session->start_date) ? $this->session->start_date->format('Y-m-d') : '';
$sessionEndDate = !empty($this->session->end_date) ? $this->session->end_date->format('Y-m-d') : '';
$sessionStartTime = !empty($this->session->start_date) ? $this->session->start_date->format('H:i:s') : '';
$sessionEndTime = !empty($this->session->end_date) ? $this->session->end_date->format('H:i:s') : '';
$variables =[
'username' => $this->user['name'],
'session_title' => $this->session->title,
'session_type' => $this->session->type,
'session_room' => $this->session->room,
'session_start_date' => $sessionStartDate,
'session_end_date' => $sessionEndDate,
'session_start_time' => $sessionStartTime,
'session_end_time' => $sessionEndTime,
'event_name' => $this->session->event->event_name
];
$subject = $this->emailSetup->formatEmailBody($this->emailContent->subject,$variables);
$body = $this->emailSetup->formatEmailBody($this->emailContent->body,$variables);
return [
'body' => $body,
'subject' => $subject
];
// $body = "
// <p>
// Hi {$this->user['name']},<br/><br/>
// You have been added to session, details are below
// <ul>
// <li>Session title : {$this->session->title}</li>
// <li>Type : {$this->session->type}</li>
// <li>Room : {$this->session->room}</li>
// <li>Start date : {$sessionStartDate}</li>
// <li>Start time : {$sessionStartTime}</li>
// <li>End date : {$sessionEndDate}</li>
// <li>End time : {$sessionEndTime}</li>
// </ul>
// Check the session details.<br><br>
// <br>
// Thank you,<br>
// {$eventHeader} Team<br>
// </p>";
}
public function getSlotMailContents()
{
$slotTitle = !empty($this->slot) ? $this->slot['title'] : '';
$slotStartDate = !empty($this->slot) ? date('Y-m-d',strtotime($this->slot['start_date'])) : '';
$slotStartTime = !empty($this->slot) ? date('H:i:s',strtotime($this->slot['start_date'])) : '';
$slotDuration = !empty($this->slot) ? $this->slot['duration'] : '';
$slotType= !empty($this->slot) ? $this->slot['type'] : '';
$variables =[
'username' => $this->user['name'],
'session_title' => $this->session->title,
'slot_title' => $slotTitle,
'slot_type' => $slotType,
'slot_start_date' => $slotStartDate,
'slot_start_time' => $slotStartTime,
'duration' => $slotDuration,
'event_name' => $this->session->event->event_name
];
$subject = $this->emailSetup->formatEmailBody($this->emailContent->subject,$variables);
$body = $this->emailSetup->formatEmailBody($this->emailContent->body,$variables);
return [
'body' => $body,
'subject' => $subject
];
// $body = "
// <p>
// Hi {$this->user['name']},<br/><br/>
// You have been added to slot, details are below
// <ul>
// <li>Slot title : {$slotTitle}</li>
// <li>Type : {$slotType}</li>
// <li>Session title: {$this->session->title}</li>
// <li>Start date : {$slotStartDate}</li>
// <li>Start time : {$slotStartTime} </li>
// <li>Duration : {$slotDuration}</li>
// </ul>
// Check the details.<br><br>
// <br>
// Thank you,<br>
// {$eventHeader} Team<br>
// </p>
// ";
}
}
Directory Contents
Dirs: 0 × Files: 34