#!/usr/bin/perl

#use utf8;
use strict;
use CGI;

use Opals::Context;
use Opals::Template qw(
    tmpl_read
    tmpl_write
);
use Opals::Marc21 qw(
    mc21_parseRecord
);
use POSIX qw(
    ceil
);


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

my $cgi = CGI->new;
my $input = $cgi->Vars();
my ($permission, $cookie, $template) = tmpl_read(
        {
            dbh             => $dbh,
            cgi             => $cgi,
            tmplFile        => 'marc21/print.tmpl',
        }
);

#my $zid = $input->{'zid'};
#($zid && $zid >= 0) || ($zid = 0);
#
my $rid = $input->{'rid'};

if ($rid) {
    # See Search.pm for more info on use attribute.
       my $marcxml="";
       my $config = Opals::Context->config();

        my $zRoot       = Opals::Context->config('zRoot');
        my $zPort       = Opals::Context->config('zPort');
        my $zDatabase   = Opals::Context->config('zDatabase');
        my $path = "$zRoot/$zPort/record/$zDatabase/"
                 . ceil($rid/1000) . '/'
                 . $rid . '.xml';

        open RECORD, "<$path";
        my $line;
        while (<RECORD>) {
            $line = $_;
            if ($line =~ m/<subfield code="-">/) {
                next;
            }

            $marcxml .= $line;
        }
        close RECORD;





    my @rec = mc21_parseRecord($marcxml);
#open vvv, ">:utf8", "/tmp/vvv";
#print vvv $marcxml->[0];
#print vvv "####################################\n\n";
#foreach my $f (@rec) {
#    if ($f->{'subfield'}) {
#        foreach my $sf (@{$f->{'subfield'}}) {
#            print vvv "$sf->{'code'} $sf->{'data'}\n";
#        }
#    }
#}
#close vvv;
    $template->param(
        rec => \@rec,
    );
}
else {
    $template->param(
        error => 1,
    );
}


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