#!/usr/bin/perl

#use utf8;
use strict;
use CGI;
use JSON;

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


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

my $cgi    = CGI->new;
my $input  = $cgi->Vars();
 
    my $pref = tmpl_preference($dbh);
    my $libType=$pref->{'libraryType'};

      my @fields=();
      if($libType eq "k-12"){
          @fields=(
                {h=>"TEACHER"        ,f =>"u.teacher"},
                {h=>"GRADE"          ,f=>"u.grade"},
                {h=>"HOMEROOM"       ,f=>"u.homeroom"},
                {h=>"BUILDINGCODE"   ,f=>"u.buildingcode"}
                );

      }
      elsif($libType eq "academy"){
          @fields=(
                {h=>"PROGRAM"        ,f =>"u.program"},
                {h=>"STUDIES"        ,f=>"u.studies"}
                );

      }

      @fields=( @fields,
                {h=>"LASTNAME"       ,f=>"u.lastname"},
                {h=>"FIRSTNAME"      ,f=>"u.firstname"},
                {h=>"USERBARCODE"    ,f=>"u.userbarcode"},
                {h=>"ADDRlINE1"      ,f=>"u.addrLine1"},
                {h=>"ADDRlINE2"      ,f=>"u.addrLine2"},
                {h=>"CITY"           ,f=>"u.city"},
                {h=>"ZIP"            ,f=>"u.zip"},
                {h=>"STATE"          ,f=>"u.state"},
                {h=>"PHONE"          ,f=>"u.phone"},
                {h=>"CELLPHONE"      ,f=>"u.cellphone"},
                {h=>"FAX"            ,f=>"u.fax"},
                {h=>"EMAIL"          ,f=>"u.email"},
                {h=>"YEARGRADUATION" ,f=>"u.yeargraduation"},
                {h=>"TITLE"          ,f=>"m.title"},
                {h=>"BARCODE"        ,f=>"i.barcode"},
                {h=>"PRICE"          ,f=>"i.price"},
                {h=>"CALLNUMBER"     ,f=>"i.callNumber"},
                {h=>"DATELOAN"       ,f=>"l.dateLoan"},
                {h=>"DATEDUE"        ,f=>"l.dateDue"},
                {h=>"OD_DAYS"        ,f=>"to_days(now()) - to_days(dateDue) as deltaDueDate"}
     );

      open debug,">/tmp/dd"; print debug $input->{"transListJson"};close debug;

    my $request =decode_json($input->{"transListJson"});
    #$request=[{uid=>68}]; # testing ...
    my $fArr=[];
    my $hArr=[];
    foreach my $f(@fields){
        push @$hArr,$f->{'h'};
        push @$fArr,$f->{'f'};
    }

    my $fListStr= join(', ',@$fArr);


    print "Content-Encoding: UTF-8\n";
    print "Content-type: text/csv; charset=UTF-8\n";
    print "Content-Disposition:attachment;filename=odList.csv\n\n"; 
    print  join(",",@$hArr) . "\n";
    foreach my $t(@$request){
        my $idloanList =join(',',@{$t->{'loanIdList'}});
        my $sth=$dbh->prepare("select $fListStr
                  from opl_item i inner join opl_marcRecord m using(rid) 
                      inner join opl_loan l using(barcode) inner join opl_user u using(uid) 
                  where  idloan in($idloanList)"); 

        $sth->execute();
        while( my @aa=$sth->fetchrow_array){
            foreach my $c(@aa){
                $c=~ s/"/""/g;
                $c="\"$c\"";
            }
            print  join(",",@aa)  ."\n";
       }
    }


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

sub getRquest{
  my $request={};
  if ($ENV{'REQUEST_METHOD'} eq "POST" ) {
        my $json ="";
      if($ENV{'CONTENT_TYPE'} eq "application/json" ){
        while (<STDIN>) {
            $json .= $_;
        }
      }
      else{
         $json =""
      }
     $request = decode_json($json);
   }
   return $request;
}


