Source of file TemplateMailable.php

Size: 1,199 Bytes - Last Modified: 2019-06-27T14:28:10+00:00

/home/vagrant/www/document-templates/src/MailTemplates/TemplateMailable.php

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
<?php

namespace BWF\DocumentTemplates\MailTemplates;

use App\User;
use BWF\DocumentTemplates\DocumentTemplates\DocumentTemplateFactory;
use BWF\DocumentTemplates\DocumentTemplates\DocumentTemplateModelInterface;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class TemplateMailable extends Mailable
{
    use Queueable, SerializesModels;

    /** @var MailTemplateInterface */
    public $mailTemplate;


    /**
     * Create a new message instance.
     *
     * @param DocumentTemplateModelInterface $mailTemplateModel
     * @param array $templateData
     * @throws \Exception
     */
    public function __construct(DocumentTemplateModelInterface $mailTemplateModel, $templateData = [])
    {
        $this->mailTemplate = DocumentTemplateFactory::build($mailTemplateModel);
        foreach ($templateData as $name => $data){
            $this->mailTemplate->addTemplateData($data, $name);
        }
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->html($this->mailTemplate->render())
            ->subject($this->mailTemplate->renderSubject());
    }
}