<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use App\Models\Abstracts;
use App\Models\Event;
use Illuminate\Support\Facades\Log;
use App\Lib\EmailSetupHelper;

class AbstractSubmittedMailToSubmitter extends Mailable
{
    use Queueable, SerializesModels;
    const KEY_TO_SUBMITTER = "abstract_submitted_to_submitter";
    protected $abstract;
    protected $event;
    protected $abstractSubmitterUserName;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        //Get the email configurations using key and event id
        $emailContents = $this->emailSetup->getEmailData($this->event->id,self::KEY_TO_SUBMITTER);

        $logo = config('app.url') . '/' . $this->event->theme['logo']['value'];
        $eventHeader = $this->event->event_name;
        $eventUrl = $this->event->eventUrl('submitter');
        $abstractUrl = $eventUrl . "abstract/{$this->abstract->id}/preview";
        $abstractViewLink = $this->emailSetup->formatLinks($emailContents->body,'abstract_view_link_title',$abstractUrl);

        $variables =[
            'profile_name' => $this->abstractSubmitterUserName,
            'abstract_id' => $this->abstract->id,
            'abstract_view_link' => $abstractViewLink,
            'event_name' => $this->event->event_name
        ];
        $subject = $this->emailSetup->formatEmailBody($emailContents->subject,$variables);
        $body = $this->emailSetup->formatEmailBody($emailContents->body,$variables);
        $body = html_entity_decode($this->emailSetup->removeLinkTitleFromBody($body,'abstract_view_link_title'));
        Log::info($eventUrl);
        Log::info($abstractUrl);

        // $body = "
        // <p>
        // Hi {$this->abstractSubmitterUserName},<br/><br>

        // Your abstract submission is now
        // complete.<br><br>
        // Your unique reference number for your
        // submission is: #{$this->abstract->id}
        // <br><br>

        // <strong>What next?</strong><br/>
        // 1. You can submit more abstracts and
        // manage them by <a href={$eventUrl}>{$eventUrl}</a>.<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.abstract_submitted_submitter')
            ->with([
                "body" => $body,
                "eventHeader" => $eventHeader,
                "logo" => $logo
            ]);
    }
}
