#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
);

use Opals::User qw(
    user_getInformationByBc
    user_getInformationById
);

use Opals::Tb_Circulation qw(
    circ_getOnloanNumber
    circ_getOverdueNumber
    circ_getReserveNumber
);

use Opals::Tb_Transactions qw(
    
    trans_getBalance

);

use POSIX qw(
    floor
);

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

my $cgi      = CGI->new;
my $input    = $cgi->Vars();
my $userBc   = $input->{"bc"};
my $uid      = $input->{"uid"};


#my ($status,$errorCode,$errorMsg) = ('',0,'') ;
my ($permission, $cookie, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => '/txtbk/ajax/circ/userInfo.tmpl',
        reqPermission   => 'tb_circ_loan|tb_circ_return',
    }
);
if ($permission &&  ($permission->{'tb_circ_loan'}|| $permission->{'tb_circ_return'})) {
    my ($userInfo, $guardian);
    if($userBc && $userBc ne ''){
        ($userInfo, $guardian) = user_getInformationByBc($dbh, $userBc);
        $uid =$userInfo->{'uid'};
    }
    elsif($uid && $uid >0){
        ($userInfo, $guardian) = user_getInformationById($dbh, $uid);
    }

    if($userInfo){
        my $balance = trans_getBalance($dbh,$uid );
        $balance = floor($balance*100 + 0.50)/100; 
        $balance = sprintf("%.2f",$balance);

       $template->param(
            uid       => $userInfo->{'uid'},
            userbarcode    => $userInfo->{'userbarcode'},
            username       => $userInfo->{'username'},
            firstname      => $userInfo->{'firstname'},
            lastname       => $userInfo->{'lastname'},
            homeroom       => $userInfo->{'homeroom'},
            teacher        => $userInfo->{'teacher'},
            grade          => $userInfo->{'grade'},
            notes          => $userInfo->{'notes'},
            status         => $userInfo->{'status'},
            balance        => $balance,
            totalLoan      => circ_getOnloanNumber($dbh, $uid),
            totalOverdue   => circ_getOverdueNumber($dbh, $uid),
            totalReserve   => circ_getReserveNumber($dbh, $uid)
        );
    }
}
 
tmpl_write($dbh, $cgi, $cookie, $template);



