#!/usr/bin/perl -w
my $dn = `dirname $0`;chomp($dn);
my $pwd = `pwd`;chomp($pwd);
if ($dn !~ /^\//) { $dn = $pwd . "/" . $dn; }
push @INC,$dn;
my $cverepobase=`dirname $dn`;
chomp($cverepobase);


require CanDBReader;
use DateTime;

my %first=();
my %firstweeks=();
my %resolved=();
my %resolvedweeks=();

my %validbugs=();
foreach my $can (keys %CanDBReader::bugzillas) {
	foreach my $bug (split(/,/,$CanDBReader::bugzillas{$can})) {
		$validbugs{$bug} = 1;
	}
}


open(BUGZILLAS,"<$cverepobase/data/bugzillas")||die "$cverepobase/data/bugzillas: $!";
while (<BUGZILLAS>) {
	my ($nr, $date, $change);
	my ($year, $month, $day);
	chomp;
	($nr,$date,$change) = split(/,/);

	next unless (defined($validbugs{$nr}));

	($year,$month,$day) = ($date =~ /(\d\d\d\d)(\d\d)(\d\d)/);

	my $dt = DateTime->new( year => $year, month => $month, day => $day);
	($year,$week) = $dt->week;

	$week = ($month-1)/4;

	if (!defined($first{$nr}) && ($change =~ /NEW/)) { # input rate
		$first{$nr} = sprintf("%d.%02d",$year,$week);
	}
	if (($change =~ /RESOLVED/) && !defined($resolved{$nr})) { # handle any resolved ... remember the first one
		next unless (defined($first{$nr}));
		$resolved{$nr} = sprintf("%d.%02d",$year,$week);
	}
	if (($change =~ /REOPENED/) && defined($resolved{$nr})) { # handle reopened ... delete resolved state
		delete $resolved{$nr};
	}
}
close(BUGZILLAS);

foreach (keys %first) { $firstweeks{$first{$_}}++; }
foreach (keys %resolved) { $resolvedweeks{$resolved{$_}}++; }

my @first = ();
my @resolved = ();

my %results = ();
foreach (sort keys %firstweeks) {
	if (defined($firstweeks{$_})) {
		push @first,$firstweeks{$_} ;
	} else {
		push @first,0;
	}
	if (defined($resolvedweeks{$_})) {
		push @resolved,$resolvedweeks{$_};
	} else {
		push @resolved,0;
	}

	if ($#first >= 1) { shift @first; }
	if ($#resolved >= 1) { shift @resolved; }

	my $sumf = 0.0;
	my $sumr = 0.0;
	my $cnt = 0.0;
	foreach $x (@first) { $sumf += $x; $cnt++; }
	$sumf /= $cnt;
	$cnt = 0.0;
	foreach $x (@resolved) { $sumr += $x; $cnt++; }
	$sumr /= $cnt;

	#printf "%s,%d,%d\n",$_,$firstweeks{$_},$resolvedweeks{$_};
	#$results{$_}=sprintf("%d,%d,",$sumf,$sumr);
	#$results{$_}=sprintf("%-2d - %-2d",$firstweeks{$_},$resolvedweeks{$_});
	printf("%s,%f,%f\n",$_,$sumf,$sumr);
}
exit 0;

for ($i=1;$i<53;$i++) {
	printf "%d,",$i;
	foreach my $year (2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017) {
		if (defined($results{sprintf("%d.%02d",$year,$i)})) {
			print $results{sprintf("%d.%02d",$year,$i)};
		} else {
			print "0.0,0.0,";
		}
	}
	print "\n";
}
