package RPS::Import::MusicNowOld;
## for when they were FullAudio

use strict;


use Date::Calc qw(Days_in_Month);

use lib '/app/tools/common/lib';
use Common::Util;
use Common::Consts;

use lib '/app/tools/data_classes/lib';

#private constants
use constant FIELD_VENDORID		=> 0;
use constant FIELD_TRACKID		=> 1;
use constant FIELD_ISRC 		=> 2;
use constant FIELD_SONGCODE		=> 3;
use constant FIELD_TRACK		=> 4;
use constant FIELD_ARTIST		=> 5;
use constant FIELD_ALBUM		=> 6;
use constant FIELD_UPC  		=> 7;
use constant FIELD_LABEL		=> 8;
use constant FIELD_DISCNUM		=> 9;
use constant FIELD_TRACKPOS     => 10;
use constant FIELD_UNITS        => 11;
use constant FIELD_DAYSPLAY     => 12;
use constant FIELD_MONTH        => 13;
use constant FIELD_PRICE        => 14;

use lib '/app/tools/rps/lib';
use RPS::File::Sale;
use RPS::Import::Importer;
use base 'RPS::Import::Importer';

#public methods

sub _importLines
{
	my $self = shift;
	my %args = @_;

	my $lines = $args{lines};
	my $fileObj = $args{file};
    #my $fileName = $args{OrigFileName}; # for cmd-line testing
    my $fileName = $fileObj->OrigFileName;

	unless ($lines && $fileName) {
        $self->errstr("lines and filename absent");
        return 0;
    }

	my ($year) = $fileName =~ m/\_Q\d(\d\d).txt$/;

	my $linenum = 1;
	foreach my $line(@$lines)
	{
		my $prodtype = RPS::File::Sale::TYPE_TRACK;

		my $upc		= Common::Util::normalize_upc($line->[FIELD_UPC]);
		my $isrc	= Common::Util::normalize_isrc($line->[FIELD_ISRC]);
		my $artist	= $line->[FIELD_ARTIST];
		my $album	= $line->[FIELD_ALBUM];

		my $track = $line->[FIELD_TRACK];

        ## a bit of a guess ATM
		## $format = RPS::File::Sale::FORMAT_DOWNLOAD;
		my $format = RPS::File::Sale::FORMAT_STREAM;

		my $units	= $line->[FIELD_UNITS];
		my $price	= $line->[FIELD_PRICE];
        if ($units > 0) {
            $price = $price / $units;
        } else {
            print STDERR "zero units for an entry!\n";
        }

        my $month = $line->[FIELD_MONTH];
        my ($dateBegin, $dateEnd) = _getDates($year, $month);

		if ($dateBegin && $dateEnd && $prodtype && $format && $units && $price >= 0 && $album && $track)
		{
			my $sale = RPS::Import::SaleRec->new();

			$sale->productType($prodtype);
			$sale->formatType($format);
			$sale->dateBegin($dateBegin);
			$sale->dateEnd($dateEnd);
			$sale->upc($upc);
			$sale->isrc($isrc);
			$sale->artistName($artist);
			$sale->albumName($album);
			$sale->trackName($track);
			$sale->units($units);
			$sale->price($price);
			$sale->lineNum($linenum);

			#$args{dumper}($sale);  ## for cmd-line testing
			$self->_insertSale(sale => $sale);
		}
		$linenum++;
	}
	return $linenum;
}

#
# Private methods
#


sub _getDates
{
	my $year = shift;
	my $month = shift;

    $year += 2000 if ($year < 2000);
    $month =~ s/^0//g;

	my $dateBegin = sprintf("%04d-%02d-01", $year, $month);
	my $dateEnd   = sprintf("%04d-%02d-%02d", $year, $month, Days_in_Month($year, $month));

	return ($dateBegin, $dateEnd);
}

###
1;# Play nicely.
###
