#!/usr/bin/perl

use warnings;
use strict;
use autodie;
use utf8;

use JSON;
use Data::Dump qw(dump);
use MARC::Record;

open(my $json, '<', 'report_62836_1046_ZavrsniRadovi.json');
{
	local $/;
	undef $/;
	my $data = <$json>;
	close($json);
	$json = decode_json($data);
}
#warn dump($json->[0]);

open(my $marc_fh, '>:utf8', 'radovi.marc');

my $stat;

my $udk;
while(<DATA>) {
	chomp;
	my ($smjer,$udk_broj) = split(/\t+/,$_,2);
	$udk->{$smjer} = $udk_broj;
}
warn "# udk = ",dump($udk);

foreach my $rad ( @$json ) {

	print dump($rad), "\n";

	if ( ! $rad->{naslovhr} ) {
		$stat->{no_naslovhr}++;
		next;
	}
	$stat->{radova}++;

	my $marc = MARC::Record->new;
	$marc->encoding( 'UTF-8' );

	my $year = $1 if $rad->{datumzavrsetka} =~ m/^(\d{4})/;
	my $jezik = substr($rad->{jezikrada},0,3);

	$marc->add_fields(
		grep { ref($_) eq 'ARRAY' }
		[ '003', 'HR-ZaFER' ],
		[ '008', '160221s'.$year.'    ci ||||| m||| 00| 0 '.$jezik.' d' ],
		[ '035', ' ', ' ', a => '(HR-ZaFER)' . 'rbrzad' . $rad->{rbrzad} ],
		[ '040', ' ', ' ', a => 'HR-ZaFER', b => 'hrv', c => 'HR-ZaFER', e => 'ppiak' ],
		#[ '080', ' ', ' ', a => $udk->{ $rad->{smjer} } ],
		#[ '100', '1', '#', a => $rad->{prezime} . ', ' . $rad->{ime}, g => 'JMBAG:' . $rad->{jmbag} ],
		[ '100', '1', '#', a => $rad->{prezime} . ', ' . $rad->{ime} ],
		[ '245', '1', '0', 
			a => $rad->{naslovhr} . ' :', 
			b => 
				$rad->{studij} =~ m/^preddiplomski/ ? 'završni rad /' :
				$rad->{studij} =~ m/^diplomski/ ? 'diplomski rad /' : '',
			c => $rad->{ime} . ' ' . $rad->{prezime} . '.'
		],
		[ '246', '1', ' '
		#	$rad->{nasloven} =~ m/The / ? 4 :
		#	$rad->{nasloven} =~ m/A /   ? 2 : '0' # FIXME?
			, a => $rad->{nasloven}, i => 'Naslov na engleskom: '
		], 
		[ '260', ' ', ' ', a => 'Zagreb,', b => substr($rad->{ime},0,1) . '. ' . $rad->{prezime} . ',', c => substr($rad->{datumzavrsetka},0,4) . '.' ],
		$rad->{'brojstranica'} ? [ '300', '#', '#', a => $rad->{'brojstranica'} . ' str. ;', c => '30 cm' ] : '',
		[ '502', '#', '#', b => $rad->{studij} . ' studij', c => 'Fakultet elektrotehnike i računarstva u Zagrebu', g => 'smjer: ' . $rad->{smjer} . ', ' . 'šifra smjera: ' . $rad->{sifsmjer} . ', ' . 'datum predaje: ' . $rad->{datumpredaje} . ', ' . 'datum završetka: ' . $rad->{datumzavrsetka} ],
		$rad->{sazetakhr} ? [ '520', '3', '#', a => 'Sažetak na hrvatskom: ' . $rad->{sazetakhr} ] : '',
		$rad->{sazetaken} ? [ '520', '3', '#', a => 'Sažetak na engleskom: ' . $rad->{sazetaken} ] : '',
		$rad->{keywords}  ? [ '653', ' ', '1', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords}  ) ] : '',
		$rad->{keywords_en} ? [ '653', ' ', '1', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords_en}) ] : '',
		#[ '700', '1', '#', a => $rad->{prezmentor} . ', ' . $rad->{imementor}, 4 => 'ths', g => 'ID:' . $rad->{oznmentor} ],
		[ '700', '1', '#', a => $rad->{prezmentor} . ', ' . $rad->{imementor}, 4 => 'ths' ],
		$rad->{prezmentor2} ? [ '700', '1', '#', a => $rad->{prezmentor2} . ', ' . $rad->{imementor2}, 4 => 'ths', g => 'ID:' . $rad->{oznmentor2} ] : '',
		[ '942', ' ', ' ',
			c =>
				$rad->{studij} =~ m/^preddiplomski/ ? 'Z' :
				$rad->{studij} =~ m/^diplomski/ ? 'Y' : ''
		],	
		[ '952', ' ', ' ', 
			a => 'SRE', b => 'SRE', c => 'KF', 
			y =>
				$rad->{studij} =~ m/^preddiplomski/ ? 'Z' :
				$rad->{studij} =~ m/^diplomski/ ? 'Y' : ''
		]

	);

	print $marc_fh $marc->as_usmarc;

	print $marc->as_formatted, "\n\n"; # FIXME

#	last if $stat->{radova} == 10; # FIXME
}

print "# stat = ",dump($stat);

=for import

($recordid, $biblioitemnumber) = AddBiblio($marc_record, $framework);

=cut

__DATA__
Automatika								681.5
Elektroenergetika						631.31	
Elektroničko i računalno inženjerstvo	621.37+621.391+004.02/.05
Elektronika								621.38
Elektrotehnički sustavi i tehnologija	621.3
Obradba informacija						004.7/.9+621.397
Programsko inženjerstvo i informacijski sustavi		004.4+004.6/.7
Računalno inženjerstvo					004.4/.5+004.03/.05
Računarska znanost						004.2/.3+004.45+004.8/.9
Radiokomunikacijske tehnologije			621.396
Telekomunikacije i informatika			621.391/.396
