#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference

);


use Opals::Mail qw(
    mail_send
);

use Opals::Tb_Search qw(
    
    search_record
    search_record_byBarcode
    search_record_byRId
    search_record_2Prt
    
);

use Opals::Tb_Circulation qw(

    circ_infoRecord

);

use Opals::Date qw(
    date_today
    date_text
    date_now
);

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

my $cgi     = CGI->new;
my $input   = $cgi->Vars();
my $uid     = $input->{"uid"};
my $op      = $input->{"op"};
my $to      = $input->{'emailTo'};
my $subject = $input->{'emailSubject'};


my ($status,$errorCode,$errorMsg)    ;
my $pref = tmpl_preference($dbh);

my $today = date_now();
$today =~ s/([\d]{4}-[\d]{2}-[\d]{2}) ([\d:])+/$1/;

my $rIdList  = $input->{'rid'} ;
$rIdList =~ s/[^\d,]//g;

my $prtType     = $input->{'prtType'};
my $kw          = $input->{'kw'};
my $sfCode      = $input->{'sfCode'};
my $sortAttr    = $input->{'sortAttr'};
    if (!$sortAttr ){
        $sortAttr = '245_a';
    }


my $sortOrder   = $input->{'sortOrder'};
if (!$sortOrder ) {
        $sortOrder == 0;
    }

my ($resultSize, $recordList);

my ($permission, $cookie, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => '/txtbk/util/save_sendBibliography.tmpl',
    }
);

my $content="";

if ($rIdList && $rIdList ne "all"){
    my @rIdList = split(/,/, $rIdList);
    ($resultSize, $recordList) = search_record_byRId($dbh,$rIdList);
}
else{
    ($resultSize, $recordList) = search_record_2Prt($dbh,$sfCode,$kw,$sortOrder,$sortAttr);
}
foreach my $record(@$recordList){
    my ($numTotal, $numLoan, $numReserve, $numHold, $itemList,$totalCirc) = circ_infoRecord($dbh, $record->{'rid'});
       $record->{'nHoldings'}        = $numTotal;
       $record->{'nOnLoan'}         = $numLoan;
       $record->{'nOnReserve'}      = $numReserve;
       $record->{'nOnHold'}         = $numHold;
       $record->{'numReserveTotal'} = $numReserve + $numHold;
       $record->{'nAvailable'}      = $numTotal - $numLoan - $numHold;
}

    $content = templateToSave(); 
if ($op && $op eq 'saveHTML') {
    print "Content-Type:application/x-download\n";
    print "Content-Disposition:attachment;filename=bibliography_tbk.html\n\n";     
    print $content;
}
elsif($op && $op eq 'saveCSV'){
    print "Content-Type:application/x-download\n";
    print "Content-Disposition:attachment;filename=bibliography_tbk.csv\n\n";  
    my $header = "\"Title\", \"Author\", \"ISBN\", \"Publish Date\", \"Copies\", \"Available\" ";
    print "$header \n";
    my $str="";
    foreach my $r (@$recordList) {
        my $title = $r->{'title'};
        $title =~ s/\"//g ;
        my $author = $r->{'author'};
        $author =~ s/\"//g ;
        my $isbn = $r->{'isbn'};
        $isbn =~ s/\"//g ;
        my $pubDate = $r->{'pubDate'};
        $pubDate =~ s/\"//g ;
        $str = "\"" . $title . "\",\"". $author . "\",\"". $isbn. "\",\"".$pubDate . "\",\"";
        $str .= $r->{'nHoldings'}."\",\"". $r->{'nAvailable'} . "\"" ;
        print $str . "\n";
    }
}elsif ($op && $op eq 'email') {
    if (mail_send($pref, $to, $subject, $content)){
        $template->param(done=>1);
    }
    else{
        $template->param(error=>1);
    }
    $template->param(
        email       => $to,
        sendEmail   => "1"
    );
    tmpl_write($dbh, $cgi, $cookie, $template);
}

sub templateToSave {

    my $rootDir   = Opals::Context->config('rootDir');
    my $template = HTML::Template->new(    
        filename            => "save_sendBibliography.tmpl",
        path                => "$rootDir/htdocs/theme/opals/txtbk/util/",
        global_vars         => 1,
        die_on_bad_params   => 0,
        cache               => 1,
        shared_cache        => 0,
        loop_context_vars   => 1,);

    $template->param(
        recordList  =>  $recordList,
        today       =>  $today,
        );
    return  $template->output();
}

