<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use App\Lib\EmailSetupHelper;

class RegisterEventNotification extends Mailable
{
    use Queueable, SerializesModels;

    protected $event;
    protected $user;
    protected $logo;
    protected $emailSetup;

    const KEY_TO_EMAIL = "submitter_register";

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($event, $user, $logo)
    {
        $this->event = $event;
        $this->user = $user;
        $this->logo = $logo;
        $this->emailSetup = new EmailSetupHelper();
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        // submitter login link
        $submitter_login_link = config('app.url') . '/' . $this->event->slug_name . '/submitter/login';
        // email contents 
        $emailContents = $this->emailSetup->getEmailData($this->event->id, self::KEY_TO_EMAIL);
        // event header
        $eventHeader = $this->event->event_name;
        // logo
        $logo = $this->logo;
        // variables
        $variables = [
            'event_name' => $this->event->event_name,
            'username' => $this->user->name,
            'user_email' => $this->user->email,
            'submitter_login_link' => $submitter_login_link,

        ];
        // subject
        $subject = $this->emailSetup->formatEmailBody($emailContents->subject, $variables);
        // email body
        $body = $this->emailSetup->formatEmailBody($emailContents->body, $variables);

        // $body = "
        //     <p>
        //     Hi {$this->user->name},<br/><br>
        //     You have successfully registered your account to submit your abstracts for the {$this->event->event_name} conference.
        //     You can login to submit your abstract or amend your profile using the following details.
        //     </p>

        //     <p>
        //     Link: <a href='{$url}'><i class='fa fa-check'></i>{$url}</a> <br>
        //     Username: {$this->user->email}<br>

        //     <br>
        //     Thank you,<br>
        //     {$this->event->event_name} Team<br>

        //     </p>";

        return $this->from(config('app.admin_mail', 'Submitter'), $this->event->event_name)
            ->subject($subject)
            ->view('emails.submitter.event_register')
            ->with([
                "body" => $body,
                "eventHeader" => $eventHeader,
                "logo" => $logo
            ]);
    }
}
