#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Date::Calc qw(Day_of_Week Week_Number Day_of_Year);
use Date::Calc::Object qw(
    :all
);
use Time::localtime;

use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_preference
    tmpl_rangedPageList
);

use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
use Opals::Date qw(
    date_f005

);

use Opals::BookingSystem qw(
    bs_getBookingListByGrp
    bs_cancelBooking
);


################################################################################
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        => 'user/myBList.tmpl',
            reqPermission   => 'circ_rsrv_self',
        }
);

my  $dateToday = date_f005();
    $dateToday =~ s/([\d]{4})([\d]{2})([\d]{2})[\d]+\.(0|1)/$1-$2-$3/;
my  $syspref          = tmpl_preference($dbh);
my  $loginuid         = $template->param('curUserId');

my  @cookieList  = (@$cookie);
my  $tm          = localtime;
my  $todayStr    = sprintf("%04d-%02d-%02d", $tm->year+1900, ($tm->mon)+1, $tm->mday);
my  $dFirst      = Opals::Context->preference('dateFirst');
my  $dLast       = Opals::Context->preference('dateLast');


my  @filterStatusBooking = ($cgi->param('filterStatusBooking'));
my  $grp                 = $input->{'group'};
my  $term                = $input->{'term'};

my  $pagesize = 4;#10;
my  $pNum = $input->{'pNum'};
    $pNum = 1 if ( !$pNum );
my  $sort    = $input->{'sort'};
my  $sortDir = $input->{'sortDir'};
if  ( !$sort ){
    $sort    = 'createdDate';
    $sortDir = 'desc'  ;
}

if ($permission && $permission->{'circ_rsrv_self'}){
    my $op = $input->{'op'};
    if($op eq 'cancel'){
        my $bid = $input->{'selBid'};
        bs_cancelBooking($dbh,$bid);
    }
    my $myFilter ={};

    if($term && $grp && $term ne'' && $grp ne ''){
        $myFilter->{$grp} = $term; 
    }
    $myFilter->{'requestUid'}       = $loginuid;
    $myFilter->{'bookingForUid'}    = $loginuid;
    #@filterStatusBooking=('ready');
    if( scalar(@filterStatusBooking)>0){
        $myFilter->{'status'} =\@filterStatusBooking; 
    }

    my ($numOfReserves,$bList)  = bs_getBookingListByGrp($dbh,$myFilter,$pNum,$pagesize,$sort,$sortDir);
    my @rangedPageList          = tmpl_rangedPageList($numOfReserves, $pNum, $pagesize, 10);
    $template->param(
        pNum            => $pNum,
        bList           => $bList,
        sort            => $sort,
        sortDir         => $sortDir,
        numOfReserves   => $numOfReserves,
        rangedPageList  => \@rangedPageList,
        enableBookingListCmd=>1,
    );
    
    foreach  my $status(@filterStatusBooking){
        $template->param(
            "_$status"  =>1,
        );
    }
}#if ($permission && $permission->{'circ_rsrv_self'})       
my $msgMap =loc_getMsgFile('circ/booking.msg');
loc_write($template,$msgMap);
tmpl_write($dbh, $cgi, \@cookieList, $template);


################################################################################
sub isValidDateStr{
    my ($dateStr)=@_;
    return ($dateStr =~ m/\d{4}-\d{1,2}-\d{1,2}/g);
}




