<?php

namespace App\Mail;

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

class IdentityVerificationRejected extends Mailable implements ShouldQueue
{
	use Queueable, SerializesModels;
	
	public $user;
	public $reason;
	public $canResubmit;
	
	/**
	 * Create a new message instance.
	 *
	 * @param User $user
	 * @param string $reason
	 * @param bool $canResubmit
	 * @return void
	 */
	public function __construct(User $user, string $reason, bool $canResubmit = true)
	{
		$this->user = $user;
		$this->reason = $reason;
		$this->canResubmit = $canResubmit;
		$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', 'KIREI');

		// Subject theo feedback:
		// - Lần 1 (canResubmit=true): 【KIREI】本人確認書類の再提出をお願いします
		// - Lần 2 (canResubmit=false): 【KIREI】本人確認を完了できませんでした
		if ($this->canResubmit) {
			$subject = "【{$siteName}】本人確認書類の再提出をお願いします";
		} else {
			$subject = "【{$siteName}】本人確認を完了できませんでした";
		}

		return $this->from(config('mail.from.address'), config('mail.from.name'))
			->replyTo(config('mail.from.address'), config('mail.from.name'))
			->subject($subject)
			->view('emails.identity-verification.rejected')
			->with([
				'user'                 => $this->user,
				'reason'               => $this->reason,
				'canResubmit'          => $this->canResubmit,
				'siteName'             => $siteName,
				'siteUrl'              => config('app.url'),
				'resubmitDeadlineDays' => 2,
			]);
	}
}
