package RPS::Import::GoogleMusic::v8;

use strict;

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

sub _fieldMap {
    my $self = shift;
    my $version = $self->_version;

    my %field_map = (
        8 => {
            dateBegin    => 'A2',
            dateEnd      => 'B2',
            currencyCode => 'C2',

            upc          => 'E',
            isrc         => 'F',
            artistName   => 'B',
            trackName    => 'C',
            albumName    => 'D',
            labelName    => 'J',
            countryCode  => 'A',
            price        => 'P',
        },
        11 => {
            dateBegin    => 'C2',
            dateEnd      => 'D2',

            upc          => 'E',
            isrc         => 'F',
            artistName   => 'B',
            trackName    => 'C',
            albumName    => 'D',
            labelName    => 'J',
            countryCode  => 'A',
            price        => 'O',
        },
    );
    return $field_map{$version};
}

sub _unverifiedFieldMap {
    {
        webPlays     => 'K',
        devicePlays  => 'L',
        downloads    => 'M',
    }
}

sub units {
    my $self = shift;
    my $webPlays    = $self->_getByFieldName('webPlays');
    my $devicePlays = $self->_getByFieldName('devicePlays');
    my $downloads   = $self->_getByFieldName('downloads');
    return $webPlays + $devicePlays + $downloads;
}

sub _headerIdentifier { ( upc => 'UPC' ) }
sub productType       { RPS::File::Sale::TYPE_TRACK }
sub formatType        { RPS::File::Sale::FORMAT_STREAM }
sub mediaType         { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub currencyCode {
    my $self = shift;
    if( exists $self->_fieldMap->{'currencyCode'} )
    {
        return $self->SUPER::currencyCode;
    }
    else
    {
        return $self->{_currencyCode}; # from header; see _processHeader
    }
}

sub _processHeader {
    my $self = shift;
    if( $self->_version == 11 )
    {
        return if( !$self->{_headerFound} );

        my $p = $self->_getByFieldName('price');
        if( $p =~ /^Amount_Payable_(\w{3})/ )
        {
            $self->{_currencyCode} = $1;
        }
    }
}

###
1;#
###
