package BookPub::RDAS::Parser::ProductPrice::BarnesNoble;

use lib '/app/tools/rdas/lib';
use base 'RDAS::Parser::TreeBuilder';

use lib '/app/tools/bookpub/lib';
use base 'BookPub::RDAS::Parser::ProductPrice';

sub _includesPhysicalProducts { 1 }

sub _fieldConfig {
    {
        ProductPrice => {
            tag    => 'li',
            class  => 'price',
            filter => sub {
                my $res = shift;
                $res =~ s/.*\$//;
                return $res;
            }
        },

        EBookPrice => {
            tag    => 'li',
            class  => 'ebookprice',
            filter => sub {
                my $res = shift;
                $res =~ s/.*\$//;
                return $res;
            }
        },

        Author => {
            required => 1,
            tag      => 'div',
            class    => 'contrib',
        },

        ProductDetail => {
            required => 1,
            tag      => 'div',
            id       => 'fpd',
        },

        Title => {
            required => 1,
            tag      => 'div',
            class    => 'title',

            filter => sub {
                my $res = shift;
                $res =~ s/\[.*\]$//;
                return $res;
            }
        },

        CoverURL => {
            tag       => 'div',
            id        => 'prod-img',
            container => 'RDAS::Parser::Item::ImageSource'
        },

        ReleaseDate => {
            tag => 'div',
            id  => 'fpd',

            filter => sub {
                my $res = shift || return;
                return $res =~ /Publication Date: (\d+\/\d+\/\d+)/i ? $1 : undef;
            }
        },

        Rank => {
            tag => 'div',
            id  => 'fpd',

            filter => sub {
                my $res = shift || return;
                return $res =~ /Sales Rank: (\d+)/i ? $1 : undef;
            }
        },

        ISBN10 => {
            tag => 'div',
            id  => 'fpd',

            filter => sub {
                my $res = shift || return;
                return $res =~ /ISBN: (\d+)/i ? $1 : undef;
            }
        },

        ISBN13 => {
            tag => 'div',
            id  => 'fpd',

            filter => sub {
                my $res = shift || return;
                return $res =~ /ISBN-13: (\d+)/i ? $1 : undef;
            }
        },

        UnAvailable => {
            tag   => 'li',
            class => 'price-list3'
        },

    };
}

sub available {
    my $self = shift;

    return -1 if ( $self->_earlyRelease( $self->ReleaseDate ) );

    return unless ( defined( $self->EBookPrice ) || defined( $self->ProductPrice ) );
    my $unavailable = $self->UnAvailable();

    return 1 unless ($unavailable);

    return $unavailable !~ /not available/;
}

sub _earlyRelease {
    my $self = shift;
    my $date = shift || return;

    my $releaseDate = new Common::Date($date);
    my $today       = Common::Date->now();

    Log->info("Release Date Test: $releaseDate > $today");

    return $releaseDate > $today;
}

1;
