<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use App\Models\Address;

class MailList extends Command
{
	/**
	 * The name and signature of the console command.
	 *
	 * @var string
	 */
	protected $signature = 'mail:list {ftn : FTN address}';

	/**
	 * The console command description.
	 *
	 * @var string
	 */
	protected $description = 'List mail waiting for a node';

	/**
	 * Execute the console command.
	 *
	 * @return int
	 * @throws \Exception
	 */
	public function handle(): int
	{
		$ao = Address::findFTN($this->argument('ftn'),TRUE);

		if (! $ao) {
			$this->error(sprintf('%s not found?',$this->argument('ftn')));

			return self::FAILURE;
		}

		$this->info('Netmail');
		$this->table([
			'id' => 'ID',
			'msgid' => 'MSGID',
			'from' => 'FROM',
			'to' => 'TO',
			'subject' => 'SUBJECT',
		],$ao->netmailWaiting()->get()->map(function($item) {
			return [
				'id'=>$item->id,
				'msgid'=>$item->msgid,
				'from'=>sprintf('%s (%s)',$item->from,$item->fftn->ftn3d),
				'to'=>sprintf('%s (%s)',$item->to,$item->tftn->ftn3d),
				'subject'=>$item->subject,
			];
		}));

		$this->info('Echomail');
		$this->table([
			'id' => 'ID',
			'msgid' => 'MSGID',
			'from' => 'FROM',
			'to' => 'TO',
			'subject' => 'SUBJECT',
			'area' => 'AREA',
		],$ao->echomailWaiting()->get()->map(function($item) {
			return [
				'id'=>$item->id,
				'msgid'=>$item->msgid,
				'from'=>$item->from,
				'to'=>$item->to,
				'subject'=>$item->subject,
				'area'=>$item->echoarea->name,
			];
		}));

		return self::SUCCESS;
	}
}