#!/usr/bin/perl

# Comparador de fecha para los archivos de llamada
sub byDate {
	($year1,$mon1,$day1,$hr1,$min1) = $a =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/;
	($year2,$mon2,$day2,$hr2,$min2) = $b =~ /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/;
	
	# Descarto por año
	if ($year1 > $year2) { return 1; }
	elsif ($year1 < $year2) { return -1; }

	# Descarto por mes
	if ($mon1 > $mon2) { return 1; }
	elsif ($mon1 < $mon2) { return -1; }

	# Calculo minutos de lo restante
	$totalmin1 = ($day1 * 24 * 60) + ($hr1 * 60) + $min1;
	$totalmin2 = ($day2 * 24 * 60) + ($hr2 * 60) + $min2;
	if ($totalmin1 > $totalmin2) { return 1; }
	elsif ($totalmin1 < $totalmin2) { return -1; }
	else { return 0; }
}

# Devuelve un listado de archivos de llamada y ordenado por fecha ASC
sub getCallFiles {
	# Obtengo listado de archivos de llamadas y lo ordeno por fecha
	opendir($DIR,$_[0]) or die 'Could not open dir';
	# Valido solo fisicamente, lo logico ya valido afimonio..
	@files = grep {/[0-9]{12}\.[0-9]{4}/ && 
			-f "$ARGV[0]/$_" } readdir($DIR);
	@sortedfiles = sort byDate @files;
	closedir($DIR);
	return @sortedfiles;
}
# --------- MAIN CODE -------- #

# En la version final, recibo por param el directorio del .conf, por ahora
# recibo un dir donde tengo archivos de llamadas
if ((!$ARGV[0]) || (! -d $ARGV[0])) { 
	print("No se ha ingresado un directorio fuente de llamadas\n");
	exit 1;
}

@archivos = getCallFiles($ARGV[0]);
foreach $callfile (@archivos) {
	print("Archivo de llamada: $callfile\n");
}
