#!/usr/bin/perl

use strict;
use CGI;

use Opals::Context;
use Opals::Constant;
use Opals::Template qw(
    tmpl_read
    tmpl_write
    tmpl_redirect
);

use Opals::Locale qw(
    loc_getMsgFile
    loc_write
);
use Opals::Date qw(
    date_f005
    date_text
);
use Opals::BookCover qw(
    bookCover_opals

);

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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookieList, $template) = tmpl_read(
    {
        dbh             => $dbh,
        cgi             => $cgi,
        tmplFile        => 'util/genreEditor.tmpl',
    }
);
      
    my $gid          = $input->{'gid'};
    my $genreRec={};
    if(defined $gid && $gid>0){
        $genreRec =getGenreRec($dbh,$gid);
        $template->param(genreRec=>to_json($genreRec,{pretty=>1}));
  }                            
  if ($permission && $permission->{'marc_edit'}) {
      $template->param(editable=>1);
  }

my $msgValMap ={};
my $msgMap            =loc_getMsgFile('util/reserveShelf.msg',$msgValMap);
loc_write($template,$msgMap);

tmpl_write($dbh, $cgi, $cookieList, $template);

#======================================================================


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;

}

