#!/usr/bin/perl

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

use Opals::Context;
use Opals::Constant;
use Opals::Pathfinder qw(
    pf_save
    pf_getRecById
    pf_delete
);
use JSON;
use Opals::BookCover qw(
    bookCover_opals
);

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

#$request:op,record,pfId
#
my $cgi    = CGI->new;
my $PF_FUNCTION_MAP={
    c    =>{fn=>\&_savePf},
    r    =>{fn=>\&_getPf},
    u    =>{fn=>\&_savePf},
    d    =>{fn=>\&_delPf}

};

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

my $rs={};
if(defined $PF_FUNCTION_MAP->{$request->{'op'}}){
    my $fn      = $PF_FUNCTION_MAP->{$request->{'op'}}->{'fn'};
    $rs= &$fn($dbh,$request);
}
print "Content-type: text/plain\n\n";
print   to_json($rs);
#-------------------------------------------------------------------------------
sub _savePf{
    my($dbh,$req)=@_;
    return {pfId=>pf_save($dbh,$req->{"record"})};
}
#-------------------------------------------------------------------------------
sub _getPf{
    my($dbh,$req)=@_;
    my $pf= pf_getRecById($dbh,$req->{'pfId'});
    if($pf){
        if($pf->{'fileRsList'}){
             foreach my $fileRs(@{$pf->{'fileRsList'}}){
                 foreach my $f(@{$fileRs->{'rsList'}}){
                    if($f->{'fRealName'} =~ m/(.*)\.([\w\-]+)$/g){
                        $f->{'fileIcon'} =FILE_ICON->{lc($2)} if(FILE_ICON->{lc($2)});
                    }
                 }
             }
         }
         if($pf->{'libraryRsList'}){
             foreach my $rs(@{$pf->{'libraryRsList'}}){
                bookCover_opals($rs->{'rsList'});
             }

         }

    }
    return {record=>$pf};

}
#-------------------------------------------------------------------------------
sub _delPf{
    my($dbh,$req)=@_;
    my $pfId=pf_delete($dbh,$req->{'pfId'})>0?$req->{'pfId'}:0;
    return {pfId=>$pfId};
}



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

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