#!/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);
