package RPS::Import::Moodagent::v1;

use strict;
use warnings;

use lib '/app/tools/rps/lib';
use RPS::Import::ServiceMap;

use parent 'RPS::Import::ImporterMixed';

sub physical { 0 }

sub _fieldMapExtended {
    {
        digital => {
            option1 => {
                countryCode  => 'L',
                dateBegin    => 'A',
                dateEnd      => 'B',
                artistName   => 'H',
                upc          => 'C',
                albumName    => 'E',
                isrc         => 'G',
                trackName    => 'I',
                units        => 'M',
                currencyCode => 'P',
                price        => 'O',
            }
        }
    };
}

sub _unverifiedFieldMapExtended { {} }

sub _headerIdentifierExtended {
    {
        digital => {
            option1 => { upc => 'UPC' },
        },
    };
}


sub serviceID   { Client::Service::DSP_MOODAGENT }
sub productType { RPS::File::Sale::TYPE_TRACK }
sub formatType  { RPS::File::Sale::FORMAT_STREAM }
sub mediaType   { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub dateBegin {
    my $self = shift;

    my $date = $self->_getByFieldName('dateBegin') || '';
    # YYYYMMDD
    if ( $date =~ /^(\d{4})(\d{1,2})(\d{1,2})$/ ) {
        return sprintf "%04d-%02d-%02d", $1, $2, $3;
    }

    $self->fail("Unable to determine dateBegin from: '$date'");
}

sub dateEnd {
    my $self = shift;

    my $date = $self->_getByFieldName('dateEnd') || '';
    # YYYYMMDD
    if ( $date =~ /^(\d{4})(\d{1,2})(\d{1,2})$/ ) {
        return sprintf "%04d-%02d-%02d", $1, $2, $3;
    }

    $self->fail("Unable to determine dateEnd from: '$date'");
}

# digital
sub price     { abs( shift->_getByFieldName('price') || 0 ) }
sub unitPrice { abs shift->SUPER::unitPrice }
sub units {
    my $units = $_[0]->_getByFieldName('units') || 0;
    my $price = $_[0]->_getByFieldName('price') || 0;
    return $price < 0 ? abs($units) * -1 : $units;
}


1;
