#!/usr/bin/perl
use lib qw (. .. ./lib);
use Asterisk::LCR::Importer::CanonicalCSV;
use Asterisk::LCR::Locale;
use Config::Mini;
use warnings;
use strict;

@ARGV || die "Usage: $0 <config_file>";
Config::Mini::parse_file (@ARGV);

$| = 1;

our $LOCALE    = Asterisk::LCR::Locale->new (Config::Mini::get ("dialer", "locale"));
our $STORE     = Config::Mini::instantiate ("storage")  || die "no storage configured"; 
our @PROVIDERS = map { Asterisk::LCR::Importer::CanonicalCSV->new ( %{$_} ) }
                 Config::Mini::select ('^import:');

our %prefixes = ();

foreach my $prov ( @PROVIDERS )
{
    foreach my $prfx ( $prov->prefixes() )
    {
        $prefixes{$prfx} = 1;
    }
}


print "Building LCR object tree";
foreach my $prfx ( keys %prefixes )
{
    my @rates = ();
    
    foreach my $prov ( @PROVIDERS )
    {
        my $rate = $prov->search_rate ($prfx) || next;
        push @rates, $rate;
    }
    $STORE->register ($prfx, @rates);
    print ".";
}
$STORE->save();
print " done.\n";


1;


__END__
