#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use Encode;

use Opals::Context;

use Opals::Date qw(
    date_f005
);
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::MarcXml qw(
    mxml_update
);

use Opals::Utility qw(
    util_escapeXml
);
use Opals::Search qw(
    srch_barcodeDuplicated
    srch_F852Default_marcxml
);
use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);

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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookie, $template) = tmpl_read(
            {
                dbh             => $dbh,
                cgi             => $cgi,
                tmplFile        => 'marc21/quickItemEntry.tmpl',
                reqPermission   => 'marc_edit|marc_add',
            }
    );

my ($zid,$op);

$zid     = 0;
$op      = $input->{'op'};

my $loginuid = $template->param('curUserId');
my $syspref = tmpl_preference($dbh);
my $self = $ENV{'SCRIPT_NAME'};

my $f852 =srch_F852Default_marcxml($dbh,1);
my ($sf852a,$sf852b)=("","");
if($f852 =~ m/<subfield code="a">(.*)<\/subfield>/){
    $sf852a=$1
}
if($f852 =~ m/<subfield code="b">(.*)<\/subfield>/){
    $sf852b=$1
}

my $editMode    = $input->{'eMode'};
$template->param(eMode=>$editMode,
                 "editMode_$editMode"     => 1,
                  isTmpIll =>($editMode ne '')
                 );           
if ($permission && ($permission->{'marc_edit'} || $permission->{'marc_add'})) {
     # GET LIST OF ITEM TYPE FROM opl_itemType TABLE
        my $itemTypeList = getItemTypeList($dbh);
        my $locationList = getLocationList($dbh);
         if ($op eq 'save') {
             my $title    = $input->{'title'};
             my $author   = $input->{'author'};
             my $itemType = $input->{'itemType'};
             my $barcode  = $input->{'barcode'};
             my $location = $input->{'location'};
             my $sf020a   = $input->{'sf020a'};
             my $sf690a   = $input->{'sf690a'};
             my $sf852a   = $input->{'sf852a'};
             my $sf852b   = $input->{'sf852b'};
             my $sf852k   = $input->{'sf852k'};
             my $sf852h   = $input->{'sf852h'};
             my $sf852i   = $input->{'sf852i'};
             my $sf852m   = $input->{'sf852m'};
                  
             my $dupBc = srch_barcodeDuplicated($dbh,$barcode);
             if($dupBc ne ''){
                 foreach my $i(@$itemTypeList){
                     if($i->{'id'} eq $itemType){
                         $i->{'selected'}='selected';
                     }
                 }
                $template->param(
                    title       =>  $title,
                    author      =>  $author,
                    itemType    =>  $itemType,
                    barcode     =>  $barcode,
                    sf020a      =>  $sf020a,
                    sf690a      =>  $sf690a,
                    sf852a      =>  $sf852a,
                    sf852a      =>  $sf852a,
                    sf852b      =>  $sf852b,
                    sf852k      =>  $sf852k,
                    sf852h      =>  $sf852h,
                    sf852i      =>  $sf852i,
                    sf852m      =>  $sf852m,
                    dupBc       =>  1,
                );

             }
            else{
                $title    = util_escapeXml($title);
                $author   = util_escapeXml($author);
                $itemType = util_escapeXml($itemType);
                $location = util_escapeXml($location);
                $barcode  = util_escapeXml(uc($barcode));
                $sf020a   = util_escapeXml($sf020a);
                $sf690a   = util_escapeXml($sf690a);
                $sf852k   = util_escapeXml($sf852k);
                $sf852h   = util_escapeXml($sf852h);
                $sf852i   = util_escapeXml($sf852i);
                $sf852m   = util_escapeXml($sf852m);
                my $f005  = date_f005();
                
                my $marcxml = 
                "<record>\n" .
                "  <leader>00496nam  2200157 a 4500</leader>\n" .
                "  <controlfield tag=\"001\">0</controlfield>\n" .
                "  <controlfield tag=\"005\">$f005</controlfield>\n" .
                "  <controlfield tag=\"008\">960618s1973    xxu           000 0 eng d</controlfield>\n".
                "  <datafield tag=\"020\" ind1=\" \" ind2=\" \">\n".
                "    <subfield code=\"a\">$sf020a</subfield>\n".
                "  </datafield>\n".
                "  <datafield tag=\"100\" ind1=\"1\" ind2=\" \">\n"  .   
                "    <subfield code=\"a\">$author</subfield>\n" .
                "  </datafield>\n" .
                "  <datafield tag=\"245\" ind1=\"1\" ind2=\" \">\n"  .   
                "    <subfield code=\"a\">$title</subfield>\n" .
                "  </datafield>\n" .
                "  <datafield tag=\"690\" ind1=\" \" ind2=\"0\">\n".
                "    <subfield code=\"a\">$sf690a</subfield>\n".
                "  </datafield>\n".
                "  <datafield tag=\"852\" ind1=\"1\" ind2=\" \">\n"  .   
                "    <subfield code=\"a\">$sf852a</subfield>\n" .
                "    <subfield code=\"b\">$sf852b</subfield>\n" .
                "    <subfield code=\"p\">$barcode</subfield>\n" .
                "    <subfield code=\"3\">$itemType</subfield>\n" ;
                $marcxml .= "    <subfield code=\"c\">$location</subfield>\n" if($location ne '');
                $marcxml .= "    <subfield code=\"k\">$sf852k</subfield>\n" if($sf852k ne '');
                $marcxml .= "    <subfield code=\"h\">$sf852h</subfield>\n" if($sf852h ne '');
                $marcxml .= "    <subfield code=\"i\">$sf852i</subfield>\n" if($sf852i ne '');
                $marcxml .= "    <subfield code=\"m\">$sf852m</subfield>\n" if($sf852m ne '');

                $marcxml .= "  </datafield>\n" .
                "</record>\n";
    
                my $incomplete   = "true";
                my $temporaryILL = "";
                   $temporaryILL =  $input->{'temporaryILL'} ;
                my $bcList={$barcode=>{status=>'new'}};   
                my $rid = mxml_update($dbh, {rid=>0, marcXml=>$marcxml, bcList=>$bcList,tempIll=>$temporaryILL,inComplete=>$incomplete} ) ;
                               if($rid){
                    $template->param(
                        saved       =>  1,
                    );
                }
                else{
                    $template->param(
                        saveError       =>  1,
                    );
                }

            }


         }
        $template->param(
            itemTypeList =>  $itemTypeList,
            locationList =>  $locationList,
            sf852a       => $sf852a,
            sf852b       => $sf852b,
        );

}
 my $msgValMap={
                    
                    };
$template->param(hlpUrl     => Opals::Constant->getHlpUrl('quickItemEntry') );
  my $marc21EditMsgMap =loc_getMsgFile('marc21/edit.msg');
  loc_write($template,$marc21EditMsgMap);
tmpl_write($dbh, $cgi, $cookie, $template);
#$dbh->disconnect();
##############################################################################
### Add 2008 02 14 : Item type Authority
sub getItemTypeList{
    my ($dbh)= @_;
    my $sql = <<_SQL_;
SELECT     distinct id ,defaultType 
FROM       opl_itemType
WHERE      id <>""
ORDER BY    id
_SQL_

    my $sth = $dbh->prepare($sql);
    $sth->execute();
    my @retVal;
    my $itentypeStr=""; 
    while (my $rec = $sth->fetchrow_hashref) {
          push @retVal, $rec;
    }
    $sth->finish;
           
    return \@retVal;
}
##############################################################################
sub getLocationList{
    my ($dbh)= @_;
    my $sql = <<_SQL_;
select sfData location from opl_authCtrl 
where sfCode='c' && tag='852'
order by sfData
_SQL_

    my $sth = $dbh->prepare($sql);
    $sth->execute();
    my @retVal;
    while (my $rec = $sth->fetchrow_hashref) {
          push @retVal, $rec;
    }
    $sth->finish;
           
    return \@retVal;
}


