package RPS::Import::HardWax::v2;

use strict;

use lib '/app/tools/common/lib';
use lib '/app/tools/rps/lib';

use base 'RPS::Import::Importer';

sub _fieldMap {
    {
        labelName   => 'L',
        serviceID   => 'C',
        countryCode => 'E',
        dateBegin   => 'A',
        dateEnd     => 'B',
        productType => 'D',
        artistName  => 'G',
        upc         => 'M',
        albumName   => 'J',
        isrc        => 'I',
        trackName   => 'F',
        units       => 'N',
        price       => 'O',
    }
}

sub _headerIdentifier { ( isrc => 'ISRC' ) }

sub formatType   { RPS::File::Sale::FORMAT_DOWNLOAD }
sub currencyCode { 'USD' }
sub mediaType    { RPS::DB::Item::MediaType::kMediaTypeAudio }

sub serviceID {
    my $self = shift;

    my $service = lc( $self->_getByFieldName('serviceID') || '' );
    my $serviceID = $self->getServiceID($service) || $RPS::Import::ServiceMap::SERVICE_ALIASES{$service};
    return $serviceID if $serviceID;

    $self->fail( "Unknown service: $service" );
}

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
);

sub saleDates {
    my $self = shift;

    my $db = $self->_getByFieldName('dateBegin') || '';
    my $de = $self->_getByFieldName('dateBegin') || '';

    #Sun Oct 15 00:00:00 2023
    $db = sprintf( "%04d-%02d-%02d", $3, $months{ lc $1 }, $2 ) if $db =~ /^\w{3} +(\w{3}) +(\d{1,2}).+?(\d{4})$/i;
    $de = sprintf( "%04d-%02d-%02d", $3, $months{ lc $1 }, $2 ) if $de =~ /^\w{3} +(\w{3}) +(\d{1,2}).+?(\d{4})$/i;

    return $self->_getDates( date_begin => $db, date_end   => $de ) if $db && $de;

    $self->fail( "Unable to determine date from '$db' & '$de'." );
}

sub _formatPrice {
    my ($self, $price) = @_;
    $price =~ s/,/./;
    return $price;
}

sub productType {
    my $self = shift;

    my $type = $self->_getByFieldName('productType') || "";

    return RPS::File::Sale::TYPE_TRACK if $type =~ /^track$/i;
    return RPS::File::Sale::TYPE_ALBUM if $type =~ /^album$/i;

    $self->fail("Could not parse product type from '$type'");
}

1;
