package BookPub::Import::Importer::MobiPocket::Version1;

use strict;

use lib '/app/tools/bookpub/lib';
use BookPub::DB::Item::Sale;
use BookPub::Import::SaleRec;
use base 'BookPub::Import::Importer';

# map of data columns
my %FIELD_MAP = (
    title         => 0,
    serviceProdID => 1,
    isbn          => 2,
    units         => 3,
    price         => 4,
    listPrice     => 5,
    currency      => 6,
);

#public methods

sub _importLines {
    my $self = shift;
    my %args = @_;

    my $lines     = $args{lines};
    my $saleCount = 0;

    # unfortunately, we gotta get the begin/end dates from the file name
    my $fName = $args{file}->OrigFileName();

    #my $fName = $args{OrigFileName};
    my ($monthYrStr) = $fName =~ m/(\d+_\d+)\./;
    $monthYrStr =~ s/_/-/g;
    $monthYrStr .= "-01";

    my ( $beginDate, $endDate ) = $self->_getDates( date_begin => $monthYrStr );

    for ( my $i = 1 ; $i < scalar @$lines ; $i++ ) {
        my $isbn  = $lines->[$i][ $FIELD_MAP{isbn} ];
        my $title = $lines->[$i][ $FIELD_MAP{title} ];
        unless ( $isbn or $title ) {
            Common::Log::Print("skip line $i - isbn: '$isbn' title: '$title'");
            next;
        }
        $isbn = '' if ( $isbn !~ /\d/ );

        my $svcProdID = $lines->[$i][ $FIELD_MAP{serviceProdID} ];
        my $units     = $lines->[$i][ $FIELD_MAP{units} ];
        my $unitPrice = $lines->[$i][ $FIELD_MAP{price} ];
        my $listPrice = $lines->[$i][ $FIELD_MAP{listPrice} ];
        my $currency  = $lines->[$i][ $FIELD_MAP{currency} ];

        my $saleRec = BookPub::Import::SaleRec->new();

        $saleRec->dateBegin($beginDate);
        $saleRec->dateEnd($endDate);
        $saleRec->serviceProductID($svcProdID);
        $saleRec->rTitle($title);
        $saleRec->units($units);
        $saleRec->rUnits($units);
        $saleRec->rSales($units);
        $saleRec->unitPrice($unitPrice);
        $saleRec->rUnitPrice($unitPrice);
        $saleRec->listPrice($listPrice);
        $saleRec->rListPrice($listPrice);
        $saleRec->revenue( $unitPrice * $units );
        $saleRec->rRevenue( $unitPrice * $units );
        $saleRec->currencyCode($currency);

        if ( length($isbn) == 13 ) {
            $saleRec->rIsbn13($isbn);
        } else {
            $saleRec->rIsbn10($isbn);
        }

        # defaults
        #
        $saleRec->lineNum($i);
        $saleRec->countryCode('US');
        $saleRec->currencyCode('USD');
        $saleRec->rListPriceCurrency('USD');
        $saleRec->formatType(BookPub::DB::Item::Sale::kFormatTypeMOBI);
        $saleRec->productType(BookPub::DB::Item::Sale::kProductTypeEBook);
        $saleRec->purchaseType(BookPub::DB::Item::Sale::kPurchaseTypeDownload);

        #$args{dumper}($saleRec);
        $self->_insertSale( sale => $saleRec );
        $saleCount++;
    }
    return $saleCount;
}

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