#!/usr/bin/perl

use strict;
use warnings;
use Getopt::Long qw(:config no_ignore_case);
use Perun::Agent;
use Perun::Common qw(printMessage);
use Encode qw(decode_utf8);
@ARGV = map { decode_utf8($_, 1) } @ARGV;

sub help {
	return qq{
Creates a NotifTemplateMessage. TemplateId, locale and subject are required fields.
--------------------------------------
Available options:
 --templateId        | -t template id
 --locale            | -l locale
 --message           | -m message
 --messageFile       | -f file containing the message
 --subject           | -s subject
 --batch             | -b batch
 --help              | -h prints this help

};
}

our $batch;
my ($templateId, $locale, $message, $messageFile, $subject);
GetOptions ("help|h"  => sub {
		print help();
		exit 0;
	},
	"batch|b"         => \$batch,
	"templateId|t=i"  => \$templateId,
	"locale|l=s"      => \$locale,
	"message|m=s"     => \$message,
	"messageFile|f=s" => \$messageFile,
	"subject|s=s"     => \$subject) || die help();

unless (defined($templateId)) {die "ERROR: templateId is required\n"}
unless (defined($locale)) {die "ERROR: locale is required\n"}
unless (defined($subject)) {die "ERROR: subject is required\n"}
if (defined($message) and defined($messageFile)) {warn "WARNING: if message and messageFile is definned only message is used\n";}

if (defined($messageFile) and !defined($message)) {
	open MSG, $messageFile or die "ERROR: MessageFile cannot be opened\n";
	binmode MSG,":utf8";
	my $lin;
	$message = "";
	while ($lin = <MSG>) {
		$message = $message.$lin;
	}
}

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

my $object = Perun::beans::NotifTemplateMessage->new;
$object->setTemplateId( $templateId );
$object->setLocale( $locale );
$object->setMessage( $message );
$object->setSubject( $subject );

$object = $notifAgent->createPerunNotifTemplateMessage( message => $object );

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