<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

use App\Classes\FTNPacket;

class FtnPkt extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'ftn:pkt {file : Fidonet Packet File PKT} {--dump : Dump packet} {--detail : Dump Detail}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Import Packet into Database';

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

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
		$pkt = new FTNPacket($this->argument('file'));

		$this->info(sprintf('Packet: %s has %s messages. Addr: %s->%s (Date: %s)',
			$pkt->filename,
			$pkt->messages->count(),
			$pkt->pktsrc,
			$pkt->pktdst,
			$pkt->date
		));

		foreach ($pkt->messages as $o)
		{
			$this->warn(sprintf('-- From: %s(%s)->%s(%s), Type: %s, Size: %d',
				$o->from,
				$o->fqfa,
				$o->to,
				$o->fqda,
				$o->type,
				strlen($o->message)
			));

			if ($o->unknown->count())
				$this->error(sprintf('?? %s Unknown headers',$o->unknown->count()));
		}

		if ($this->option('detail'))
			dd($o);

		if ($this->option('dump'))
			echo $pkt->dump();
    }
}