<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Config;

use App\Models\Service;

class OrderRequestApprove extends Mailable
{
    use Queueable, SerializesModels;

	public Service $so;
	public string $notes;

	/**
	 * Create a new message instance.
	 *
	 * @param Service $o
	 * @param string  $notes
	 */
    public function __construct(Service $o,string $notes='')
    {
		$this->so = $o;
		$this->notes = $notes;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
		Config::set('site',$this->so->site);

		// @todo This is not consistent with Cancel/Change Request
		switch ($this->so->product->category) {
			case 'broadband': $subject = sprintf('%s: %s',$this->so->product->category,$this->so->type->service_address);
				break;

			case 'phone': $subject = sprintf('%s: %s',$this->so->product->category,$this->so->type->service_number);
				break;

			default:
				$subject = 'New Order Request';
		}

		return $this
			->markdown('mail.admin.order.approve')
			->subject($subject)
			->with(['site'=>$this->so->site]);
    }
}