package RPS::Import::BanditFM;

use strict;

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

sub _headerIdentifier { ( countryCode => 'Country' ) }

sub _fieldMap {
    my $self = shift;
    
    my %fieldMap =
    (
        1 => {
            labelName        => 'F',
            countryCode      => 'M',
            productType      => 'C',
            formatType       => 'C',
            artistName       => 'D',
            upc              => 'H',
            albumName        => 'E',
            isrc             => 'H',
            trackName        => 'E',
            units            => 'I',
            currencyCode     => 'N',
            price            => 'L',
            mediaType        => 'C',
        },
    );         
        
    return $fieldMap{$self->_version()};
}

# saleDates - return the start/end date information for the file.
#
sub saleDates {
    my $self = shift;

    return ($self->{_startDate}, $self->{_endDate}) if( $self->{_startDate} );

    $self->fail( "Unknown filename" ) unless( $self->filename );

    # We'll look for the pattern "YYYYMMDD" to determine the sales period
    #
    unless( $self->filename =~ /_(\d{4})(\d{2})(\d{2})\./ ) {
        $self->fail( "Could not determine period from filename '" . $self->filename . "'" );
    }

    my $startDate = sprintf( "%04d-%02d-%02d", $1, $2, $3 );

    ($self->{_startDate}, $self->{_endDate}) = $self->_getDates( date_begin => $startDate );

    return ($self->{_startDate}, $self->{_endDate});
}

sub productType  {
    my $self = shift;
    my $type = $self->_getByFieldName('productType') || return;

    if( $type =~ /^audio track$/i )
    {
        return RPS::File::Sale::TYPE_TRACK;
    }
    elsif( $type =~ /^audio collection$/i )
    {
        return RPS::File::Sale::TYPE_ALBUM;
    }
    $self->fail("Unknown productType '$type'");
}

sub formatType  {
    my $self = shift;
    my $type = $self->_getByFieldName('formatType') || return;

    if( $type =~ /^audio track$/i || $type =~ /^audio collection$/i )
    {
        return RPS::File::Sale::FORMAT_DOWNLOAD;
    }
    $self->fail("Unknown formatType '$type'");
}

sub mediaType  {
    my $self = shift;
    my $type = $self->_getByFieldName('mediaType') || return;

    if( $type =~ /^audio track$/i || $type =~ /^audio collection$/i )
    {
        return RPS::DB::Item::MediaType::kMediaTypeAudio;
    }
    $self->fail("Unknown mediaType '$type'");
}

sub upc  {
    my $self = shift;
    my $upc = $self->_getByFieldName('upc') || return;
    my $type = $self->productType();

    if( $type eq RPS::File::Sale::TYPE_ALBUM )
    {
        return $upc;
    }
}

sub albumName  {
    my $self = shift;
    my $name = $self->_getByFieldName('albumName') || return;
    my $type = $self->productType();

    if( $type eq RPS::File::Sale::TYPE_ALBUM )
    {
        return $name;
    }
}

sub isrc  {
    my $self = shift;
    my $isrc = $self->_getByFieldName('isrc') || return;
    my $type = $self->productType();

    if( $type eq RPS::File::Sale::TYPE_TRACK )
    {
        return $isrc;
    }
}

sub trackName  {
    my $self = shift;
    my $trackName = $self->_getByFieldName('trackName') || return;
    my $type = $self->productType();

    if( $type eq RPS::File::Sale::TYPE_TRACK )
    {
        return $trackName;
    }
}



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