#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template_ajax qw(
    tmpl_read
    tmpl_write
);
use Opals::BarcodeMgmt qw(
    bcm_cleanSysBarcodeTbl
    bcm_updateStatusBcTbl
    bcm_createNextBiggestBc
    bcm_getBiggestBcFromDB
    bcm_getVendorList
    bcm_getSetPending
);

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        => 'ajax/marc21/barcodeMnt.tmpl',
        reqPermission   => 'marc_edit|marc_add',
    }
);
my $op    = $input->{'op'};

my $sessionid = $cgi->cookie('sessionID');
#if ($permission && $permission->{'marc_edit'}) {
if ($permission && ($permission->{'marc_edit'} || $permission->{'marc_add'})) {
    bcm_cleanSysBarcodeTbl($dbh);
    if(defined $op && $op eq 'setPending'){
        my $barcodes   = $input->{'bc'};
        my $status     = 'available';
        my $rid        = $input->{'rid'};
        my ($pending,$pendingFor) =(-1,'');

        if(defined $input->{'recId'} && $input->{'recId'} >=0 ){
            $pending=$input->{'recId'};
            $pendingFor ='edit';
        }
        elsif(defined $input->{'iid'} && $input->{'iid'} >0 ){
            $pending=$input->{'iid'};
            $pendingFor ='import';
        }
        if($pending>=0){
            bcm_updateStatusBcTbl($dbh,$barcodes,$status,$rid,$pending,$pendingFor,$sessionid);
        }
        $template->param(update    => 1); 
    }
    elsif(defined $op && $op eq 'getSetPending'){
        my $startBc   = $input->{'startBc'};
        my $rid        = $input->{'rid'};
        my ($pending,$pendingFor) =(0,'zImport/clone');
        my $nBarcode=0;
        my $bcList=[];

        if(defined $input->{'recId'} && $input->{'recId'} >=0 ){
            $pending=$input->{'recId'};
            $pendingFor ='edit';
        }
        elsif(defined $input->{'iid'} && $input->{'iid'} >0 ){
            $pending=$input->{'iid'};
            $pendingFor ='import';
        }
        if(defined $input->{'n'} && $input->{'n'} >0 ){
            $nBarcode=$input->{'n'};

        }
        
        if($nBarcode>0){
            $bcList=bcm_getSetPending($dbh,$startBc,$rid,$nBarcode,$pending,$pendingFor,$sessionid);
        }
        $template->param(getSetPending    => 1,
                        bcList=>$bcList,
                        ); 
    }

    else{
        my $vendorList     = bcm_getVendorList($dbh);
        $template->param(vendorList =>$vendorList  );
        $template->param( numBcVendor =>scalar @$vendorList); 
        my $bigBc = bcm_getBiggestBcFromDB($dbh);
        my $nextBc= bcm_createNextBiggestBc($dbh,$bigBc);
        $template->param(nextBc   => $nextBc); 
        $template->param(getList  => 1); 
    }
    
}
tmpl_write($dbh, $cgi, $cookie, $template);


