package RPS::Import::Moviso;

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_DATE => 0;

# use constant FIELD_LABEL		=> 0;
use constant FIELD_TITLE      => 1;
use constant FIELD_ARTIST     => 2;
use constant FIELD_UNITS      => 3;
use constant FIELD_TOTALPRICE => 4;
use constant FIELD_PERCENT    => 6;
use constant FIELD_PRICE      => 7;

# use constant FIELD_UPC			=> 3;
# use constant FIELD_ISRC			=> 4;
# use constant FIELD_CLIENTID		=> 5;
# use constant FIELD_VENDORID		=> 6;
# use constant FIELD_NUMTRACKS	=> 10;

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 $retval = undef;
    my $lines  = $args{lines};

    if ($lines) {
        my $dateBegin;
        my $dateEnd;

        my %months = (
            Jan => 1,
            Feb => 2,
            Mar => 3,
            Apr => 4,
            May => 5,
            Jun => 6,
            Jul => 7,
            Aug => 8,
            Sep => 9,
            Oct => 10,
            Nov => 11,
            Dec => 12
        );

        my $linenum = 1;
        foreach my $line (@$lines) {
            if ( $linenum == 7 ) {
                my ( $month, $year ) = $line->[FIELD_DATE] =~ /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\s*(20\d\d)/i;
                if ( $month && $year ) {
                    $month     = $months{$month};
                    $dateBegin = sprintf( "%04d-%02d-01", $year, $month - 2 );
                    $dateEnd   = sprintf( "%04d-%02d-%02d", $year, $month, Days_in_Month( $year, $month ) );
                }
            } elsif ( $dateBegin && $dateEnd ) {
                my $prodtype = RPS::File::Sale::TYPE_TRACK;
                my $format   = RPS::File::Sale::FORMAT_RINGTONE;

                # my $vendorID	= $line->[FIELD_VENDORID];
                # my $clientID	= $line->[FIELD_CLIENTID];
                # my $upc			= Common::Util::normalize_upc($line->[FIELD_UPC]);
                # my $isrc		= Common::Util::normalize_isrc($line->[FIELD_ISRC]);
                # my $label		= $line->[FIELD_LABEL];
                my $artist = $line->[FIELD_ARTIST];
                my $title  = $line->[FIELD_TITLE];
                my $track  = $title;

                my ($units) = $line->[FIELD_UNITS] =~ m/^(-?\d+)$/;
                my ($price) = $line->[FIELD_PRICE] =~ m/^(\d*\.\d*)$/;

                if ( $units && $price && $artist && $title ) {
                    my $sale = RPS::Import::SaleRec->new();

                    $sale->productType($prodtype);
                    $sale->formatType($format);
                    $sale->dateBegin($dateBegin);
                    $sale->dateEnd($dateEnd);

                    # $sale->serviceProductID($vendorID);
                    # $sale->clientProductID($clientID);
                    # $sale->upc($upc);
                    # $sale->isrc($isrc);
                    $sale->artistName($artist);

                    # $sale->albumName($album);
                    $sale->trackName($track);

                    # $sale->labelName($label);
                    $sale->units($units);
                    $sale->price($price);
                    $sale->lineNum($linenum);

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

    return $retval;
}

#
# Private methods
#

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