#!/usr/bin/perl -w

#SITE=ztest; INFILE=/tmp/textbook.mrc; \cp -fp script/util/tbk_marc_import /tmp/ttt; perl -pi -e "s/_SITECODE_/$SITE/" /tmp/ttt; /tmp/ttt $INFILE
#
#SITE=ztest
#INFILE=/tmp/textbook.mrc
#\cp -fp script/util/tbk_marc_import /tmp/ttt
#perl -pi -e "s/_SITECODE_/$SITE/" /tmp/ttt
#/tmp/ttt $INFILE

use lib "/www/opals/module";
use Opals::Context("/etc/opals/conf/wuja_wzyn");
use Time::localtime;

use strict;
use MARC::Field;
use MARC::File::USMARC;


my $dbh = Opals::Context->dbh();;
END {
    if ($dbh) {
        $dbh->disconnect();
    }
}


my $tm = localtime;
my $dateToday = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday, $tm->hour, $tm->min, $tm->sec);

$| = 1;
# Codes start...

print $ARGV[0], "\n";
my $marcfile = MARC::File::USMARC->in($ARGV[0]);
#my $rid = tb_record_idGen($dbh);
while (my $record = $marcfile->next()) {
    my $rid =  eq_record_idGen($dbh);
    my $data = "";
    my $params = {rid=>$rid, fValue=>$record->subfield('245',"a"),reqField=>1};
    eq_record_add($dbh, $params);
    
    $data = $record->subfield('100',"a");
    $params = {rid=>$rid, fId=>1,fValue=>$data};
    eq_record_add($dbh,$params);
    
    $data= ($record->subfield('245',"b")) ? $record->subfield('245',"b"):"";
    $data .= ($record->subfield('300',"a")) ? $record->subfield('300',"a"):"";
    $data .= ($record->subfield('300',"b")) ? $record->subfield('300',"b"):"";
    $params = {rid=>$rid, fId=>3,fValue=>$data};
    eq_record_add($dbh,$params);
    
    $params = {rid=>$rid, fId=>14,fValue=>"" };
    eq_record_add($dbh,$params);
    $params = {rid=>$rid, fId=>16,fValue=>"" };
    eq_record_add($dbh,$params);
    $params = {rid=>$rid, fId=>27,fValue=>"" };
    eq_record_add($dbh,$params);
    $params = {rid=>$rid, fId=>28,fValue=>"" };
    eq_record_add($dbh,$params);
    $params = {rid=>$rid, fId=>33,fValue=>"" };
    eq_record_add($dbh,$params);
    $params = {rid=>$rid, fId=>36,fValue=>"" };
    eq_record_add($dbh,$params);

    my $iid= 1;
    foreach my $f ($record->field('852')) {
        #if (! $f->subfield('p')){
        #    next;
        #}
        my $params = {
            rid         => $rid,
            barcode     => ($f->subfield('p'))? $f->subfield('p'): "nobc" . $rid . "_" . $iid,
            typeId      => 'EQ',
            available   => 1,
            reqField    => 1,
            iid         => $iid,
        };
        eq_item_add($dbh,$params);
        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 5,
            sfValue     => ($f->subfield('i'))?$f->subfield('i'):"",
        };
        eq_item_add($dbh,$params);
        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 6,
            sfValue     => ($f->subfield('9'))?$f->subfield('9'):"",
        };
        eq_item_add($dbh,$params);
        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 7,
            sfValue     => "",
        };
        eq_item_add($dbh,$params);

        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 11,
            sfValue     => "",
        };
        eq_item_add($dbh,$params);

        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 26,
            sfValue     => ($f->subfield('a'))?$f->subfield('a'):"",
        };
        eq_item_add($dbh,$params);
        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 18,
            sfValue     => ($f->subfield('b'))?$f->subfield('b'):"",
        };
        eq_item_add($dbh,$params);
        $params = {
            iid         => $iid,
            rid         => $rid,
            sfId        => 38,
            sfValue     => "",
        };
        eq_item_add($dbh,$params);

        $iid++;
    }
}
$marcfile->close();
# Codes end.

exit 0;

#add record 
sub eq_record_add{
   
    my ($dbh, $params) = @_;
    return -1 if ($params->{'rid'} eq '');
    my ($sql, $sth, $id);
    if ($params->{'reqField'}){
         $sql = "insert into eq_records set rid=?, rname=?"; 
         $sth = $dbh->prepare($sql);
         $sth->execute($params->{'rid'}, $params->{'fValue'});
         $id = $dbh->{'mysql_insertid'};

        }
    else{
        $sql = "insert into eq_recordFields set rid=?, fId=?, fValue=?";    
        $sth = $dbh->prepare($sql);
        $sth->execute($params->{'rid'}, $params->{'fId'}, $params->{'fValue'});
        $id = $dbh->{'mysql_insertid'};
    }

    $sth->finish;
    return $id;

}
sub eq_item_add{

    my ($dbh,$params) = @_;
    return -1 if ($params->{'iid'} eq '');
    my ($sql, $sth, $id);
    if ($params->{'reqField'}){
        $sql = "insert into eq_items set iid=?, rid=?, barcode=?, typeId=?, Available=1, createdDate=now()";
        $sth = $dbh->prepare($sql);
        $sth->execute($params->{'iid'}, $params->{'rid'}, $params->{'barcode'}, $params->{'typeId'});
        $id = $dbh->{'mysql_insertid'};
    }
    else{
        $sql = "insert into eq_itemFields set iid=?, rid=?, sfId=?, sfValue=?";
        $sth = $dbh->prepare($sql);
        $sth->execute($params->{'iid'}, $params->{'rid'}, $params->{'sfId'}, $params->{'sfValue'});
        $id = $dbh->{'mysql_insertid'};
    }
    $sth->finish;
    return $id;
}


sub eq_record_idGen {
    
    my ($dbh) = @_;
    #my ($sec,$min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
    #my $checkSum = sha1_base64($sec,$min, $hour, $mday, $mon, $year, $wday, $yday, $isdst);
    my $checkSum = `date +\%Y\%m\%d\%H\%M\%S\%N`;
    chomp $checkSum;

    my $sql = "insert into opl_idGen set type = 'equipment', checkSum=? ";
    my $sth = $dbh->prepare($sql);
    $sth->execute($checkSum);
    $sql = "select id from opl_idGen where type = ? and checkSum=? ";
    $sth = $dbh->prepare($sql);
    $sth->execute('equipment',$checkSum);
    my ($id) = $sth->fetchrow_array();
    $sth->finish;
    return $id;
}


