package RPS::Import::Deezer;

use strict;

use Date::Calc qw(Days_in_Month Decode_Month);

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

use lib '/app/tools/data_classes/lib';
use Client::Service;

my %field_map = (
    1 => {
        'date_begin' => 0,
        'date_end'   => 1,
        'isrc'       => 2,
        'artist'     => 3,
        'track'      => 4,
        'album'      => 5,
        'upc'        => 6,
        'country'    => 7,
        'units'      => 8,
    },

);

use lib '/app/tools/rps/lib';
use RPS::Import::SaleRec;
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};
    my $fileObj  = $args{file};
    my $fileName = $fileObj->OrigFileName;
    my $version  = $fileObj->VersionNum;

    return undef unless ( $lines && $fileName && $version );

    my $offsets = $field_map{$version};

    my $currencyCode = 'EUR';
    my $format       = RPS::File::Sale::FORMAT_STREAM;
    my $productType  = RPS::File::Sale::TYPE_TRACK, my $mediaType = RPS::DB::Item::MediaType::kMediaTypeAudio,

      my %errors = ();
    my $linenum = 1;

    foreach my $line (@$lines) {

        # The date_begin is in a weird format, so we'll just use date_end for everything.
        my ( $dateBegin, $dateEnd ) = $self->_getDates( date_begin => $line->[ $offsets->{date_end} ], type => 'eur' );

        my $upc         = Common::Util::normalize_upc( $line->[ $offsets->{'upc'} ] );
        my $isrc        = Common::Util::normalize_isrc( $line->[ $offsets->{'isrc'} ] );
        my $artist      = $line->[ $offsets->{'artist'} ];
        my $album       = $line->[ $offsets->{'album'} ];
        my $track       = $line->[ $offsets->{'track'} ];
        my $countryCode = uc( $line->[ $offsets->{country} ] );
        my ($units)     = $line->[ $offsets->{'units'} ] =~ m/^(-?\d+)$/;

        if ( $productType && $units && ( $artist || $album || $track ) ) {

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

            $sale->productType($productType);
            $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->currencyCode($currencyCode);
            $sale->countryCode($countryCode);
            $sale->lineNum($linenum);

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

    return $linenum;
}

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