<?php

namespace App\Console\Commands\Network;

use App\Console\Commands\BaseCommand;
use App\Helpers\Utility\UtilPrefix;

use App\Models\Asns;
use App\Models\Organisation;

// @@@ TEST

class AsnImport extends BaseCommand
{

    protected $signature = 'asn:import';

    protected $description = 'Import any prefixes that are not associated with known and approved ASNs';

    public function handle()
    {
        $gsl_organisation_id = Organisation::where('name', '=', config('creatia.automation.main_organisation_name'))->orderBy('id', 'asc')->first()->id;

        $known_asns = Asns::all()->keyBy('asn');
        $announced_asns = array_unique(array_values([
            ...UtilPrefix::get_detailed()->pluck('asn_originator')->toArray(),
            ...UtilPrefix::get_detailed_v6()->pluck('asn_originator')->toArray()
        ]));

        foreach($announced_asns as $announced_asn) {
            if(!isset($known_asns[$announced_asn])) {
                Asns::make($announced_asn, null, null, $gsl_organisation_id, true);
            }
        }

        return 0;
    }
}
