<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;

use App\Mail\TestEmail as MailTest;
use App\Models\{Site,User};

class TestEmail extends Command
{
	/**
	 * The name and signature of the console command.
	 *
	 * @var string
	 */
	protected $signature = 'test:email {site : Site ID} {id : User ID} {email? : Alternative Email}';

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'Send a test email';

	/**
	 * Create a new command instance.
	 *
	 * @return void
	 */
	public function __construct()
	{
		parent::__construct();
	}

	/**
	 * Execute the console command.
	 *
	 * @return mixed
	 */
	public function handle()
	{
		Config::set('site',Site::findOrFail($this->argument('site')));

		$uo = User::find($this->argument('id'));

		Mail::to($this->argument('email') ?? $uo->email)
			->send(new MailTest($uo));
	}
}