#!/opt/perl/bin/perl
use strict;
use warnings;
use GPS::StrUtil;
use GPS::Coords;
use GPS::DataTable;
use GPS::NetMaker;
use GPS::Defaults;
use GPS::DATES;
use Getopt::Long;
use File::Basename;
my $progname = basename $0;
my $ac = 'igs';
my $out_file = '';
my $old = '';
my $proj = '';
my $help = '';
my $args = @ARGV;
my $usage = qq(
 
 $progname -proj proj_name [ -ac [igs|jpl] ]
 
);

GetOptions( 'ac:s'   => \$ac,
            'proj:s' => \$proj,
            'out:s'  => \$out_file,
            'help'   => \$help,
           ) or die "Error in options\n";
if ( ! $args || $help ) { 
   die $usage;
}
if ( ! $proj ) {
  die "No project name !\n$usage";
}
my $today = get_date('today','cal,num');
my %par =  get_defaults( );
my $fields_out = 'name,lon,lat,region,type,status';
my $snfields_out = 'name,lon,lat,sub_net,type';
my $cfmt       = '%4s  %-9.4f  %-9.4f  %-9s  %-9s %-9s';
my $file = "$par{STA_INFO_DIR}/sta_loc"; #'pbo_coords_public.txt';
my $pbo = GPS::Coords->new( file       => $file,
                            fields_out => $fields_out );

my $csites = $pbo->select( type   => 'IGS' );
my @Regions = $pbo->get_col( col => 'region', unique => 1 );
my $sn = GPS::NetMaker->new(  max_net => 36 , 
                         max_snet => 33 , 
                         sub_net_fields => $snfields_out,
                         sub_net_cfmt   => $cfmt
                         );
my ($sites,$prefix);

#exclude RGR networks
foreach my $r ( grep { !/(PANGA|NEPAL)/ } @Regions ) {
  $prefix = trim($r);
  $sites  = $pbo->select( region => "$prefix ", status => 'Built' );
  $sites  = $pbo->del_col( data => $pbo->get_data(data=>$sites), 
                           field => 'region' );
  #$pbo->print( data => $sites );
  #print "Making sub-nets for region: $r\n";
  $sn->make_nets( prefix       => $prefix,
                  sites        => $sites,
                  common_sites => $csites
               );
}

$out_file = "$par{GPS_HOME_DIR}/etc/proj_lists/${proj}_net_sites";
$old = "$par{GPS_HOME_DIR}/etc/proj_lists/old/${proj}_net_sites.$today";


`cat $out_file 1> $old 2> /dev/null`; 

open ( my $fh , '>', $out_file ) or die "Couldn't open $out_file $!\n";
my $sname;
foreach my $s ( $sn->get_names() ) {
  my @sta = $sn->sub_net($s);
  my @sites=();
  foreach my $sta ( @sta ) {
       if ( $s =~ /RGR/ && $sta =~ /rg\d\d/i ) {
         push @sites, 'rg17';
       }
       else {
         push @sites, $sta;
       }
  }
  my %seen =();
  @sites =  grep { ! $seen{$_}++ } @sites; #$sn->sub_net($s);
  my $line = uc( $s) . lc (" @sites\n");
  print $line;
  print $fh $line;
}

