#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use JSON;
use Opals::Context;
use Opals::Template qw(
    tmpl_preference
);
use Opals::User qw(
    user_getInformationById
);
use Opals::Tb_Record qw(
    tb_item_findByBarcode
);
use Opals::Tb_Circulation qw(
    circ_getUserListLoan
    circ_getUserListLost
    circ_getUserLoanHistory
);
use Opals::Tb_Transactions qw(
    trans_getUnpaidFineList
    trans_getBalance

);
use Opals::Date qw(
    date_text
);
use POSIX qw(
    floor
);

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

my $cgi = CGI->new;
my $input = $cgi->Vars();
    my $uid = -1;
    my $errUser = 0;
    $uid=$input->{'uid'};
    my $ret = getUserCircInfo($dbh,$uid) || {};
    print "Content-type: text/plain\n\n";
    print to_json($ret);

#-------------------------------------------------------------
sub getUserCircInfo{
    my ($dbh, $uid) = @_;
    my $userInfo=undef;
    my ($user, $guardian) = user_getInformationById($dbh, $uid);
    if(defined $user){
        $userInfo={};
        foreach my $f (qw(uid userbarcode username firstname lastname nickname homeroom teacher grade program studies notes status expired categorycode email)){
            $userInfo->{$f}=$user->{$f};
        }
    }
    my $userCircInfo = {'info' => $userInfo };
    $userCircInfo->{'loanList'}= circ_getUserListLoan($dbh, $uid);
    $userCircInfo->{'transList'} = getUnpaidList($dbh, $uid);
    my $balance = trans_getBalance($dbh,$uid );
    $balance = floor($balance*100 + 0.50)/100; 
    $balance = sprintf("%.2f",$balance);
    $userCircInfo->{info}->{'balance'} = $balance;
    return $userCircInfo;
}

sub getUnpaidList{
    my($dbh,$uid)=@_;
    my @transList = trans_getUnpaidFineList($dbh, $uid);
    foreach my $t(@transList){
        $t->{'date'} = date_text($t->{'date'},1,$syspref->{'lang'});
    }
    return \@transList;
}
