<?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 ProvisionalOrderConfirmed extends Mailable implements ShouldQueue
{
	use Queueable, SerializesModels;
	
	public $user;
	public $order;
	public $paymentSuccess;
	
	/**
	 * Create a new message instance.
	 *
	 * @param Order $order
	 * @param User $user
	 * @param bool|null $paymentSuccess null = bank transfer, true/false = card payment result
	 * @return void
	 */
	public function __construct(Order $order, User $user, ?bool $paymentSuccess = null)
	{
		$this->order = $order;
		$this->user = $user;
		$this->paymentSuccess = $paymentSuccess;
		$this->onConnection('redis');
		$this->onQueue('trans');
	}
	
	/**
	 * Build the message.
	 *
	 * @return $this
	 */
	public function build()
	{
		$siteName = config('settings.site_name', 'KIREI');
		$orderCode = $this->order->code;
		
		// Xác định subject và view dựa trên trạng thái thanh toán
		// Subject theo yêu cầu khách hàng: ご注文が確定しました。「KIREI」(着物レンタル）
		$subject = "ご注文が確定しました。「{$siteName}」(着物レンタル）";

		if ($this->paymentSuccess === null) {
			// Bank transfer - không có tự động thanh toán
			$view = 'emails.identity-verification.order-confirmed-bank';
		} elseif ($this->paymentSuccess === true) {
			// Credit card - thanh toán thành công
			$view = 'emails.identity-verification.order-confirmed-card-success';
		} else {
			// Credit card - thanh toán thất bại
			$view = 'emails.identity-verification.order-confirmed-card-failed';
		}
		
		return $this->from(config('mail.from.address'), config('mail.from.name'))
			->replyTo(config('mail.from.address'), config('mail.from.name'))
			->subject($subject)
			->view($view)
			->with([
				'user'           => $this->user,
				'order'          => $this->order,
				'paymentSuccess' => $this->paymentSuccess,
				'siteName'       => $siteName,
				'siteUrl'        => config('app.url'),
			]);
	}
}
