#!/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{
Updates a NotifTemplateMessage. Id is required field.
--------------------------------------
Available options:
 --NotifTemplateMessageId | -i NotifTemplateMessage id
 --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 ($id, $templateId, $locale, $message, $messageFile, $subject);
GetOptions ("help|h"             => sub {
		print help();
		exit 0;
	},
	"batch|b"                    => \$batch,
	"NotifTemplateMessageId|i=i" => \$id,
	"templateId|t=i"             => \$templateId,
	"locale|l=s"                 => \$locale,
	"message|m=s"                => \$message,
	"messageFile|f=s"            => \$messageFile,
	"subject|s=s"                => \$subject) || die help();

unless (defined($id)) {die "ERROR: NotifTemplateMessage: id 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;
	while ($lin = <MSG>) {
		$message = $message.$lin;
	}
}

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

my $object = $notifAgent->getPerunNotifTemplateMessageById( id => $id );

if (defined($templateId)) {
	$object->setTemplateId( $templateId );
}

if (defined($locale)) {
	$object->setLocale( $locale );
}

if (defined($message)) {
	$object->setMessage( $message );
}

if (defined($subject)) {
	$object->setSubject( $subject );
}

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

printMessage("NotifTemplateMessage Id:".$id." successfully updates", $batch);
