<?php

namespace App\Mail;

use App\Order;
use App\Laravue\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class ProvisionalOrderCancelled extends Mailable implements ShouldQueue
{
	use Queueable, SerializesModels;
	
	public $user;
	public $order;
	public $reason;
	
	/**
	 * Create a new message instance.
	 *
	 * @param User $user
	 * @param Order $order
	 * @param string $reason
	 * @return void
	 */
	public function __construct(User $user, Order $order, string $reason)
	{
		$this->user = $user;
		$this->order = $order;
		$this->reason = $reason;
		$this->onConnection(config('queue.default'));
		$this->onQueue(config('queue.connections.redis.queue'));
	}
	
	/**
	 * Build the message.
	 *
	 * @return $this
	 */
	public function build()
	{
		$siteName = config('settings.site_name', 'Moro');
		
		return $this->from(config('mail.from.address'), config('mail.from.name'))
			->replyTo(config('mail.from.address'), config('mail.from.name'))
			->subject("【{$siteName}】仮予約がキャンセルされました")
			->view('emails.identity-verification.provisional-cancelled')
			->with([
				'user'     => $this->user,
				'order'    => $this->order,
				'reason'   => $this->reason,
				'siteName' => $siteName,
				'siteUrl'  => config('app.url'),
			]);
	}
}
