#!/usr/bin/perl

use strict;
use warnings;
use Getopt::Long qw(:config no_ignore_case);
use Perun::Agent;
use Perun::Common qw(printMessage);

sub help {
	return qq{
Creates a NotifTemplate. Notify trigger and at least one primary property are required fields.
--------------------------------------
Available options:
 --name                | -n name
 --primaryProperty     | -p primary property (key and value divide by '=', values divide by '/', more properties allowed)
 --sender              | -s sender
 --batch               | -b batch
 --help                | -h prints this help
};
}

# for stream mode
# --notifyTrigger       | -t notify trigger (ALL_REGEX_IDS / STREAM)
# --oldestMessageTime   | -o oldest message time in millis
# --youngestMessageTime | -y youngest message time in millis

our $batch;
my ($name, @properties, $sender);
GetOptions ("help|h" => sub {
		print help();
		exit 0;
	}, "batch|b"     => \$batch,
	"name|n=s"       => \$name, "primaryProperty|p=s" => \@properties, "sender|s=s" => \$sender) || die help();

# unless (defined($notifyTrigger)) {die "ERROR: PerunNotifTemplate: notifyTrigger is required\n"}
#if (($notifyTrigger !~ /^ALL_REGEX_IDS$/) and ($notifyTrigger !~ /^STREAM$/)) { die "ERROR: allowed notifyTrigger values are only ALL_REGEX_IDS or STREAM \n";}

if (!@properties) { die "ERROR: primary properties are required field\n";}
foreach (@properties) {
	if ($_ !~ /=/) {
		die "ERROR: every primary property has to meet pattern attribute=value";
	}
}

my $agent = Perun::Agent->new();
my $notifAgent = $agent->getNotificationsAgent;

my $object = Perun::beans::NotifTemplate->new;
$object->setName( $name );
$object->setNotifyTrigger( "ALL_REGEX_IDS" );
$object->setOldestMessageTime( 0 );
$object->setYoungestMessageTime( 0 );
$object->setSender( $sender );

my (%hashedProperties, @list);

foreach (@properties) {
	@list = split('=', $_);
	my @values = split('/', $list[1]);
	$hashedProperties{$list[0]} = \@values;
}

$object->setPrimaryProperties( %hashedProperties );

$object = $notifAgent->createPerunNotifTemplate( template => $object );

printMessage("NotifTemplate Id:".$object->getId." successfully created", $batch);
