#! /usr/bin/perl

open(DUMP, "acua dumpstats @ARGV[0] |") || die "couldn't open input pipe";
$startTime_ = <DUMP> || die "statistics file not found";
$_ = <DUMP>;
@nMinutes = split;
$_ = <DUMP>;
@linesBusy = split;
$_ = <DUMP>;
@sessionLength = split;
close(DUMP);

for ($i = 0; $i < 1440; $i++) {
    $nMinutes += $nMinutes[$i];
    $nMinutesHalfHour[$i / 30] += $nMinutes[$i];
    $linesBusyTot += $linesBusy[$i];
    $linesBusyHalfHour[$i / 30] += $linesBusy[$i];

    if ($sessionLength[$i] != 0) {
	$nSessions += $sessionLength[$i];
	$sessionLengthTot += $sessionLength[$i] * $i;
    }
}

printf "          Time logged:  %s\n", &printTime($nMinutes);
printf "\n";
printf "      Sessions logged:  %lu\n", $nSessions;
printf "  Mean session length:  ";
if ($nSessions) {
    printf "%s\n", &printTime($sessionLengthTot / $nSessions);
} else {
    printf "0.00 minutes\n";
}
printf "\n";
printf "Mean line utilization:  %.2f\n", $linesBusyTot / $nMinutes;
printf "\n";
printf "Mean line utilization by half-hour:\n";
printf "==============================================\n";
for ($i = 0; $i < 48; $i++) {
    if ($nMinutesHalfHour[$i] == 0) {
        $nMinutesHalfHour[$i] = 1;
    }
} 
for ($i = 0; $i < 24; $i++) {
    $s1 = sprintf "[%d:00-%d:30]: ", $i, $i;
    $s11 = sprintf "%.2f",
           $linesBusyHalfHour[$i * 2] / $nMinutesHalfHour[$i * 2];
    $s2 = sprintf "[%d:30-%d:00]: ", $i, $i + 1;
    $s21 = sprintf "%.2f",
           $linesBusyHalfHour[$i * 2 + 1] / $nMinutesHalfHour[$i * 2 + 1];
    printf "%15s%-8s%15s%-8s\n", $s1, $s11, $s2, $s21;
}

sub printTime {
  my $n = $_[0];
  if ($n - 24 * 60 >= 0) {
      sprintf "%.2f days", $n / (24 * 60);
  } elsif ($n - 60 >= 0) {
      sprintf "%.2f hours", $n / 60;
  } else {
      sprintf "%.2f minutes", $n;
  }
}
