#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use Digest::SHA qw(
    sha1_base64
    sha1_hex
);

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
);
use Opals::Circulation qw(
    circ_saveBooking
);
use Opals::User qw(
    user_currentUser
);

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

my $cgi      = CGI->new;
my $input    = $cgi->Vars();
my $bid       = $input->{"bookingId"};


my ($status,$errorCode,$errorMsg)    ;
my ($permission, $cookie, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'ajax/circ/saveBooking.tmpl',
        reqPermission   => 'circ_rsrv_self|circ_rsrv',
    }
);

    my ($errCode, $ck, $user) = user_currentUser($dbh, $cgi);
    my $loginuid= $user->{'uid'};

if ($permission && $permission->{'circ_rsrv'}
    || $permission && $permission->{'circ_rsrv_self'}) {

          
        my $bookingId=saveBooking();
        $template->param(
            bookingId   => $bookingId,
            status      =>$bookingId>0?1:0,
             )
}


 
tmpl_write($dbh, $cgi, $cookie, $template);
################################################################################
sub saveBooking(){
    my $bookingInfo={};

    $bookingInfo->{'reqUid'}           = $input->{'req_uid'};
    $bookingInfo->{'bookingId'}     = $input->{'bookingId'};
    $bookingInfo->{'responsible'}   = $loginuid;
    $bookingInfo->{'reqFirstname'}  = $input->{'req_firstname'};
    $bookingInfo->{'reqLastname'}   = $input->{'req_lastname'};
    $bookingInfo->{'department'}    = $input->{'req_department'};
    $bookingInfo->{'course'}        = $input->{'req_coursetitle'};
    #$bookingInfo->{'section'}       = $input->{''};
    $bookingInfo->{'reserveFrom'}   = $input->{'req_start'} . ' ' . $input->{'open_hr'}  . ':' . $input->{'open_min'}  . ':00' ;
    $bookingInfo->{'reserveTo'}     = $input->{'req_end'}   . ' ' . $input->{'close_hr'} . ':' . $input->{'close_min'} . ':00'  ;

    my @ridList =($cgi->param('rid'));
    my @numCopy =($cgi->param('nc'));
    my @uidList =($cgi->param('book4Uid'));
    my @itemList =();
    for(my $i=0; $i<scalar(@ridList);$i++){
        push @{$bookingInfo->{'itemList'}} ,{rid=>@ridList[$i],numOfCopy=>@numCopy[$i],itemCategory=>1};
    }

    foreach my $bUid(@uidList){
        push @{$bookingInfo->{'reserve4UserList'}}, $bUid;
    }

    my $bookingId =circ_saveBooking($dbh,$bookingInfo);
    
    return ($bookingId eq '0E0')?-1:$bookingId ;

}


#------------------------------------------------------------------------------
