package BookPub::Import::Importer::Librios::v1;

use strict;

use lib '/app/tools/bookpub/lib';
use Date::Calc qw(Days_in_Month);

use parent 'BookPub::Import::Importer';

sub _fieldMap {
    {
        rTitle                 => 'B',
        rIsbn13                => 'A',
        rUnits                 => 'C',
        rListPrice             => 'D',
        rRevenue               => 'H',
    };
}

sub _unverifiedFieldMap {
    {
        _discount        => 'E',
        _blmsbryDiscount => 'G'
    }
}

sub _headerIdentifier { rIsbn13 => 'eISBN' }

sub _useIsSaleRec { 1 }
sub purchaseType  { BookPub::DB::Item::Sale::kPurchaseTypeDownload }
sub productType   { BookPub::DB::Item::Sale::kProductTypeEBook }
sub priceType     { 'rrp' }
sub countryCode   { 'US' }
sub rServiceName  { 'Librios'}

sub rListPriceCurrency { 'USD' }
sub currencyCode       { 'USD' }
sub rDiscount { return shift->discount() }

sub dateBegin {
    my $self = shift;

    if ($self->filename() =~ /(\d\d)(\d\d)\./){
        return sprintf "%04d-%02d-%02d", "20".$2, $1, 1;
    }

    $self->fail("Can't determine dateBegin from filename.");
}

sub dateEnd {
    my $self = shift;

    if ($self->filename() =~ /(\d\d)(\d\d)\./){
        return sprintf "%04d-%02d-%02d", "20".$2, $1, Days_in_Month( "20".$2, $1 );
    }

    $self->fail("Can't determine dateEnd from filename.");
}

sub discount {
    my $self     = shift;

    my $discount = $self->_getByFieldName('_discount');
    my $blmsbryDiscount = $self->_getByFieldName('_blmsbryDiscount');

    return (1 - ($discount + $blmsbryDiscount));
}

sub _isSaleRec {
    my $self = shift;

    return unless (
           $self->rUnits
        && $self->rIsbn13
        && $self->rListPrice
    );

    return $self->BookPub::Import::Importer::_isSaleRec();
}


1;
