<?php

namespace App\Console\Commands\Debug;

use Illuminate\Console\Command;

use App\Models\Address;

class AddressCheck extends Command
{
	protected $signature = 'debug:address:check'
		.' {ftn : FTN}';

	protected $description = 'Check the addresses we use for a node';

	public function handle(): int
	{
		$o = Address::findFTN($this->argument('ftn'));

		if (! $o) {
			$this->error(sprintf('Address: %s doesnt exist?',$this->argument('ftn')));
			return Command::FAILURE;
		}

		$this->info(sprintf('Address: %s (%s)',$o->ftn,$o->role_name));
		$this->info(sprintf("Children: \n- %s",$o->children()->pluck('ftn4d')->join("\n- ")));
		$this->info(sprintf("Downlinks: \n- %s",$o->downlinks()->pluck('ftn4d')->join("\n- ")));
		$this->info(sprintf('Uplink: %s (Parent: %s)',$o->uplink()?->ftn,$o->parent()?->ftn));
		$this->info(sprintf('Our Address: %s',our_address($o)?->ftn));
		$this->info(sprintf('- Domain Addresses: %s',our_address($o->zone->domain)->pluck('ftn4d')->join(',')));

		return self::SUCCESS;
	}
}