package RPS::Import::Musiwave::Digital;

use strict;

use lib '/app/tools/common/lib';
use Common::Date;

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

use Data::Dumper;

sub _headerIdentifier {{ artistName => 'Artist' }}

sub _getDateBegin {
    my $self = shift;

    my $filename = $self->filename() || return;
    $filename =~ /(\d{8})_\d{8}/ || $self->fail( "Could not determine date from filename: $filename" );

    return $1;
}

sub _getDateEnd {
    my $self = shift;

    my $filename = $self->filename() || return;
    $filename =~ /\d{8}_(\d{8})/ || $self->fail( "Could not determine date from filename: $filename" );

    return $1;
}

sub formatType { RPS::File::Sale::FORMAT_DOWNLOAD }

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

    if( $type =~ /single full-track/i || $type =~ /album full-track/i )
    {
        return RPS::DB::Item::MediaType::kMediaTypeAudio;
    }
    elsif( $type =~ /video full length/i )
    {
        return RPS::DB::Item::MediaType::kMediaTypeVideo;
    }
    $self->fail("Unable to determine media type from '$type'");
}

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

    if( $type =~ /single full-track/i || $type =~ /video full length/i )
    {
        return RPS::File::Sale::TYPE_TRACK;
    }
    elsif( $type =~ /album full-track/i )
    {
        return RPS::File::Sale::TYPE_ALBUM;
    }
    $self->fail("Unable to determine product type from '$type'");
}

sub albumName {
    my $self = shift;
    my $productTitle = $self->_getByFieldName('productTitle');
    my $parentTitle = $self->_getByFieldName('parentTitle');

    return $self->productType eq RPS::File::Sale::TYPE_TRACK ? $parentTitle : $productTitle;
}

sub trackName {
    my $self = shift;
    my $productTitle = $self->_getByFieldName('productTitle');

    return $self->productType eq RPS::File::Sale::TYPE_TRACK ? $productTitle : undef;
}

sub serviceID {
    my $self = shift;
    my $service = $self->_getByFieldName( 'serviceID' );

    my $serviceID = $self->getServiceID( $service ) if( $service );

    $self->fail( "Unknown service '$service'" ) unless( $serviceID );

    return $serviceID;
}

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