#!/usr/bin/perl

use strict;
use CGI;
use JSON;

use Opals::Context;
use Opals::BookCover qw(
    bookCover_opals

);

my $dbh = Opals::Context->dbh();
my $input=getRequest();


my $cgi = CGI->new;
my $gid          = $input->{'gid'};
my $genreRec={};
if(defined $gid && $gid>0){
    $genreRec =getGenreRec($dbh,$gid);
}  
print "Content-type: text/plain\n\n";
print   to_json($genreRec,{pretty=>1});


#====================================================================================
sub getGenreRec{
    my($dbh,$gid)=@_;
    my $genreRec={};
    my $sth=$dbh->prepare("select * from opl_genre where gId=?");
    $sth->execute($gid);
    if($genreRec=$sth->fetchrow_hashref){
        $genreRec->{'resourceList'}=getResourceList($dbh,$gid);
    }
    return $genreRec;

}
#======================================================================
sub getResourceList{
    my($dbh,$gid)=@_;
    my $rsList=[];
    my $sth=$dbh->prepare("select * from opl_genreGroup where gId=? order by groupId");
    $sth->execute($gid);
    while(my $rs=$sth->fetchrow_hashref){
        $rs->{'bookList'}=getBookList($dbh,$gid,$rs->{'groupId'});
        push @$rsList,$rs;
    }
    return $rsList;

}
#======================================================================
sub getBookList{
    my($dbh,$gid,$grpId)=@_;
    my $bookList=[];
    my $sth=$dbh->prepare(<<_SQL_);
    select  m.rid,g.callNumber,m.isbn,m.isbn isbn_first,m.author,m.title,m.deleted ,m.pubPlace,m.pubName,m.pubDate,m.pubDateSort,m.titleSort
    from    opl_genreItems g  inner join opl_marcRecord m on m.rid= g.rid
    where    g.gId=? && g.groupId=? order by iOrder
_SQL_


    $sth->execute($gid,$grpId);
    while(my $rs=$sth->fetchrow_hashref){
        $rs->{"isbn"}=[{item=>$rs->{"isbn_first"}}]if($rs->{"isbn_first"} && $rs->{"isbn_first"} ne '');
        push @$bookList,$rs;
    }
    bookCover_opals($bookList);

    return $bookList;

}
#-------------------------------------------------------------------------------
sub getRequest{
  my $fineList=[];
  my $request={};
  if ($ENV{'REQUEST_METHOD'} eq "POST") {
        my $json ="";
        while (<STDIN>) {
            $json .= $_;
        }
        $request = decode_json($json);
   }
   return $request;
}

