#!/usr/bin/perl -Tw
use strict;
use vars qw( $cgi $p );
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use Date::Format;
use FS::UID qw(cgisuidsetup);
use FS::Record qw(qsearch); # qsearchs);
use FS::CGI qw(header menubar table popurl);
use FS::nas;
use FS::port;
use FS::session;
$cgi = new CGI;
&cgisuidsetup($cgi);
$p=popurl(2);
print $cgi->header( '-expires' => 'now' ), header('NAS ports', menubar(
  'Main Menu' => $p,
));
my $now = time;
foreach my $nas ( sort { $a->nasnum <=> $b->nasnum } qsearch( 'nas', {} ) ) {
  print $nas->nasnum. ": ". $nas->nas. " ".
        $nas->nasfqdn. " (". $nas->nasip. ") ".
        "as of ". time2str("%c",$nas->last).
        " (". &pretty_interval($now - $nas->last). " ago)
".
        &table(). "
| Nas Port #
 | Global ".
        "Port #
 | IP address | User | Since | Duration | 
|---|
",
  ;
  foreach my $port ( sort {
    $a->nasport <=> $b->nasport || $a->portnum <=> $b->portnum
  } qsearch( 'port', { 'nasnum' => $nas->nasnum } ) ) {
    my $session = $port->session;
    my($user, $since, $pretty_since, $duration);
    if ( ! $session ) {
      $user = "(empty)";
      $since = 0;
      $pretty_since = "(never)";
      $duration = '';
    } elsif ( $session->logout ) {
      $user = "(empty)";
      $since = $session->logout;
    } else {
      my $svc_acct = $session->svc_acct;
      $user = "svcnum. "\">".
              $svc_acct->username. "";
      $since = $session->login;
    }
    $pretty_since = time2str("%c", $since) if $since;
    $duration = pretty_interval( $now - $since ). " ago"
      unless defined($duration);
    print "
| ". $port->nasport. " | ". $port->portnum. " | ".
          $port->ip. " | $user | $pretty_since".
          " | $duration | 
"
    ;
  }
  print "
";
}
sub pretty_interval {
  my $interval = shift;
  my %howlong = (
    '604800' => 'week',
    '86400'  => 'day',
    '3600'   => 'hour',
    '60'     => 'minute',
    '1'      => 'second',
  );
  my $pretty = "";
  foreach my $key ( sort { $b <=> $a } keys %howlong ) {
    my $value = int( $interval / $key );
    if ( $value  ) {
      if ( $value == 1 ) {
        $pretty .=
          ( $howlong{$key} eq 'hour' ? 'an ' : 'a ' ). $howlong{$key}. " "
      } else {
        $pretty .= $value. ' '. $howlong{$key}. 's ';
      }
    }
    $interval -= $value * $key;
  }
  $pretty =~ /^\s*(\S.*\S)\s*$/;
  $1;
} 
#print &table(), <
#  ## | NAS |