package RPS::Import::Moontaxi;

use strict;

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

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

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

# map version num to the field order
my %field_map =
(
    1 =>
    {
        'date'			=> 0,
        'units' 		=> 1,
        'extprice'     	=> 5,
        'selection'		=> 6,
        'artist'		=> 7,
        'title'			=> 8,
        'label'			=> 9,
    },
);

#public methods

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

	my $retval = undef;
	my $sheets = $args{sheets};
	my $fileObj = $args{file};
	my $version = $fileObj->VersionNum;

	my $summary_sheet;
	my $lines;
	if($sheets)
	{
		$summary_sheet = $sheets->[0];
		$lines = $sheets->[1];
	}
	else
	{
        $self->errstr("missing sheets");
		return 0;
	}

	if ($lines && $summary_sheet && $version)
	{
		my $offsets;
		if($version && exists $field_map{$version})
		{
			$offsets = $field_map{$version};
		}
		else
		{
            $self->errstr("wrong version");
			return 0;
		}

        my $linenum = 1;
        foreach my $line(@$lines)
        {
            if ($linenum > 1)
            {
                my $date;
                my $dateBegin;
                my $dateEnd;

                $date = Common::Util::normalize_date($line->[$offsets->{'date'}]);
                if ($date)
                {
                    ($dateBegin, $dateEnd) = Common::Util::normalize_sales_month_dates($date, $date);
                }

                my $prodtype;
                my $album;
                my $track;
                if ($line->[$offsets->{'selection'}])
                {
                    $prodtype = RPS::File::Sale::TYPE_ALBUM;
                    $album    = $line->[$offsets->{'title'}];
                }
                else
                {
                    $prodtype = RPS::File::Sale::TYPE_TRACK;
                    $track    = $line->[$offsets->{'title'}];
                }

                my $format      = RPS::File::Sale::FORMAT_DOWNLOAD;
                my ($upc)       = $line->[$offsets->{'selection'}] =~ m/^indy_(\d+)$/;
                $upc            = Common::Util::normalize_upc($upc);
                my $artist		= $line->[$offsets->{'artist'}];
                my $label		= $line->[$offsets->{'label'}];
                my ($units)		= $line->[$offsets->{'units'}] =~ m/^(-?\d+)$/;
                my ($extprice)  = $line->[$offsets->{'extprice'}] =~ m/^(\d*\.?\d*)$/;
                my $price;
                if ($units && $extprice)
                {
                    $price = $extprice / $units;
                }

                if ($units && $price && $artist && ($album || $track))
                {
                    if (!($dateBegin && $dateEnd))
                    {
                        $self->errstr("couldn't get dates");
                        return undef;
                    }

                    my $sale = RPS::Import::SaleRec->new();

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

                    $self->_insertSale(sale => $sale);
                }
            }
            $linenum++;
        }
        $retval = $linenum;
	}

	return $retval;
}

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