package BookPub::RDAS::Response::POSData;

use Data::Dumper;

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

use lib '/app/tools/bookpub/lib';
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::Metadata;
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::Price;
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::CoverArt;
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::Availability;
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::Failure;
use BookPub::RDAS::Form::ProductMonitor::ProductMonitorItem::Rank;
use BookPub::POS::Tracker::Job::ImportPOSSaleFile;

use base 'BookPub::RDAS::Response';

sub _init {
    my $self = shift;

    $self->{_feed} = new BookPub::POS::Sale::Feed( serviceID => $self->serviceID );

    return $self->SUPER::_init(@_);
}

sub feed { shift->{_feed} }

sub serviceID { die "must be overloaded" }

sub _getJobObj {
    my $self = shift;
    return BookPub::POS::Tracker::Job::ImportPOSSaleFile->new(@_);
}

sub run {
    my $self = shift;

    my $reports = $self->reports();

    Log->notice("Starting sale report download response");

    unless ($reports) {
        Log->notice("No reports to save.  Guess we are done");
        return;
    }

    foreach my $date ( sort keys %$reports ) {
        $self->_saveReport( file => $reports->{$date} );
    }
}

sub _enqueueImportJob {
    my $self   = shift;
    my $fileID = shift;

    assert($fileID);

    Log->notice("Creating import job for file id $fileID");

    my $job = $self->_getJobObj( fileID => $fileID );
    return $job->enqueue();
}

1;
