#!/usr/bin/perl

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

use Opals::Context;
use Opals::Template qw(
    tmpl_preference
);

use Opals::Tb_Transactions qw(
    trans_recordFine
    trans_getFineDetail
    trans_getBalance
    
);
use Opals::Tb_Fines qw(
    fine_getUserByOdl_id
);
use Opals::Date qw(
    date_getDeadLineDate
    date_text
    date_now
);

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

my $cgi      = CGI->new;
my $todayStr   = date_now();
my ($errCode, $ck, $user) = Opals::User::user_currentUser($dbh, $cgi);
my $loginuid   = $user->{'uid'};
my $input = {};
my @fineTransList =();
my $uid;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   $input = decode_json($cgi->param('POSTDATA'));
   my $fineList = $input;
   foreach my $f (@$fineList){ 
      $uid       = $f->{'uid'};
      my $fineType  = $f->{'fineType'};
      my $odl_id    =0;
      if ( $fineType eq 'lost' ){
          $odl_id = $f->{'lost_odl_id'} ;
      }
      elsif ($fineType eq 'damage'){
          $odl_id = $f->{'damage_odl_id'}
      }
      else{
          $odl_id = $f->{'odl_id'}
      }
      my $user      = fine_getUserByOdl_id($dbh,$odl_id);
      my $rate      = $f->{'fineRateTbl'}->{'fee'};
      my $forgiven  = $f->{'fineRateTbl'}->{'waived'};
      my $charge    = $f->{'fineRateTbl'}->{'charge'};
      my $daysOverdue = $f->{'loanInfo'}->{'overdue'};
      if($odl_id> 0 && $uid>0){
          my $tid = trans_recordFine($dbh,$uid,$odl_id,$rate,"",$daysOverdue,$forgiven,$charge,$loginuid);
          if($tid && $tid >0){
            my $trans =trans_getFineDetail($dbh,$tid);
            if($trans && $trans->{'tid'} ==$tid){
                push @fineTransList,$trans;
            }
          }
      }
   }
}
print "Content-type: text/plain\n\n";
print   to_json({ 
    uid       => $uid,
    fineTransList => \@fineTransList
});

