package BookPub::Import::Importer::CSUFullerton::v1;

use strict;
use warnings;

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

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

sub _fieldMap {
    {
        dateBegin              => 'G',
        dateEnd                => 'G',
        rIsbn13                => 'K',
        rImprint               => 'L',
        rClientProductID       => 'I',
        serviceProductID       => 'H',
        rUnits                 => 'C',
        rPurchasePrice         => 'E',
        rRevenue               => 'D',
    };
}

sub _unverifiedFieldMap { }

sub _headerIdentifier { rIsbn13 => 'VBID' }

sub _useIsSaleRec { 1 }
sub purchaseType  { BookPub::DB::Item::Sale::kPurchaseTypeSubscriptionDL }
sub productType   { BookPub::DB::Item::Sale::kProductTypeEBook }
sub rProductType  { BookPub::DB::Item::Sale::kProductTypeEBook }
sub priceType     { 'rrp' }
sub rTitle        { '' }
sub rInstitution  { 'CSU Fullerton' }
sub rState        { 'CA' }
sub rPostalCode   { '92831-3547' }
sub countryCode   { 'US' }
sub rServiceName  { 'CSU Fullerton'}
sub discount      { '.62' }

sub rPurchasePriceCurrency { 'USD' }
sub currencyCode           { 'USD' }

sub dateBegin {
    my $self = shift;

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

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

sub dateEnd {
    my $self = shift;

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

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

sub _isSaleRec {
    my $self = shift;

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

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


1;
