#!/usr/bin/perl

#use utf8;
use strict;
use JSON;
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::Transaction qw(
    trans_chargeOverdue
    trans_chargeLost
    trans_chargeDamage
    trans_chargeService
    trans_getUnpaidChargeList
    trans_getBalance
);


my $dbh = Opals::Context->dbh();
END { $dbh->disconnect(); }
my $fineList=getFineList();
my $cgi    = CGI->new;
my ($errCode, $ck, $resp) = Opals::User::user_currentUser($dbh, $cgi);
my  $respUid =$resp->{'uid'};
my $uid;
my $balance =0;
my $unpaidChargeList=[];
if(scalar(@$fineList)>0){
   foreach my $f(@$fineList){
       $uid=$f->{'uid'} if(!defined $uid);
       if($f->{'type'} eq 'overdue'){
           trans_chargeOverdue($dbh,$respUid,$f->{'uid'},$f->{'odl_id'},$f->{'rate'},$f->{'unit'},$f->{'waived'},$f->{'note'},$f->{'chargeAmount'});
       }
       elsif($f->{'type'} eq 'lost'){
           trans_chargeLost($dbh,$respUid,$f->{'uid'},$f->{'odl_id'},$f->{'rate'},$f->{'waived'},$f->{'svcFee'},$f->{'note'},$f->{'chargeAmount'});
       }
       elsif($f->{'type'} eq 'damaged'){
           trans_chargeDamage($dbh,$respUid,$f->{'uid'},$f->{'odl_id'},$f->{'rate'},$f->{'waived'},$f->{'note'},$f->{'chargeAmount'});
       }

   }
}
my $rs={status=>1};
if($uid){
    $rs->{'uid'} =$uid;
    $rs->{'balance'}=trans_getBalance($dbh,$uid);
    $rs->{'unpaidChargeList'} =trans_getUnpaidChargeList($dbh,$uid);
}
print "Content-type: text/plain\n\n";
print   to_json($rs);


#-------------------------------------------------------------------------------
sub getFineList{
  my $fineList=[];
  my $in={};
  if ($ENV{'REQUEST_METHOD'} eq "POST") {
        my $json ="";
        while (<STDIN>) {
            $json .= $_;
        }
        #open debug ,">/tmp/bb";print debug $json;close debug;
        $in = decode_json($json);
   }
   return $in->{'fineList'};
}

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