<?php

namespace App\Mail;

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

use App\Models\Service;

class CancelRequest extends Mailable
{
	use Queueable, SerializesModels;

	public Service $service;
	public ?string $notes;

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

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

		switch (get_class($this->service->type)) {
			case Service\Broadband::class:
				$subject = sprintf('Cancel BROADBAND: %s (%s)',
					$this->service->type->service_number,
					$this->service->type->service_address);
				break;

			case Service\Phone::class:
				$subject = sprintf('Cancel PHONE: %s',$this->service->type->service_number);
				break;

			default:
				$subject = 'Cancel Service Request';
		}

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