#!/usr/bin/perl -w

use utf8;
use strict;
use warnings;

BEGIN {
	unshift @INC, ( $ENV{'POPHOME'} || '@POPHOME@' ) . '/lib'
	  unless $ENV{'KUNDE_NO_PERLPATH'};
}

use Dbase::Globals qw(mpersinfo);
use Dbase::Help qw(DoFn DoSelect DoBinary DoReadOnly);
use Encode qw(encode);
use noris::REST::Backend qw(error get_param return_result);
use noris::REST::Backend::WebRT
  qw($Flag_rt_queue_rtweb $Status_Dead status_text user2customers);

DoReadOnly {

my $username = get_param printable => 'user.name';
my $ticket   = get_param integer   => 'ticket';

my $customers = user2customers $username;

my @result;
DoBinary {
DoSelect {
	my ( $id, $sender, $email, $inhalt, $timestamp ) = @_;
	$inhalt =~ s/(Mit freundlichen Gr)\02/$1/g; # Workaround für RT#252125
	$sender = $sender ? mpersinfo($sender) : $email;
	my %result = (
		id        => $id,
		sender    => $sender,
		inhalt    => $inhalt,
		timestamp => $timestamp
	);
	$_ = encode utf8 => $_ for values %result;
	push @result, \%result;
  }
  <<_;
	SELECT   ticketid.id, ticketid.person,ticketid.email, ticketid.inhalt,
	         UNIX_TIMESTAMP(ticketid.timestamp)
	FROM     queue, ticket, ticket AS t, ticketid
	WHERE    t.id            = $ticket
	     AND ticket.ticket   = $ticket
	     AND ticket.id       = ticketid.ticket
	     AND t.queue         = queue.id
	     AND queue.flags     & ( 1 << $Flag_rt_queue_rtweb )
	     AND t.kunde         IN ($customers)
	     AND ticketid.extern = 'y'
	     AND t.status        != $Status_Dead
	ORDER BY ticketid.timestamp
_
};
error "Ticket Nr. $ticket kann nicht angezeigt werden."
  unless @result;
my %header;
( @header{qw(queue titel beginn)}, my $status, my $bearbeiter, my $info ) =
  DoFn <<_ or error "Header-Daten für Ticket Nr. $ticket nicht gefunden.";
	SELECT queue.name, ticket.subject, ticket.beginn,
	       ticket.status, ticket.bearbeiter, ticket.infotext
	FROM   kunde, queue, ticket
	WHERE  kunde.id     = ticket.kunde
	   AND ticket.id    = $ticket
	   AND ticket.kunde IN ($customers)
	   AND ticket.queue = queue.id
_
$header{status} = status_text $status, $bearbeiter, $info;
$_ = encode utf8 => $_ for values %header;

return_result [ \%header, @result ];

}

=head1 NAME

get_ticket_content_by_id - Inhalt eines RT-Tickets liefern

=head1 INPUT-PARAMETER

=over 4

=item ticket

ID des RT-Tickets

=item user.name

Username der Person, die das Ticket sehen möchte

=back

=head1 OUTPUT

(Referenz auf ein) Array.
Erstes Element ist eine Referenz auf einen Hash, der die Header-Daten des
Tickets enthält.
Alle weiteren Elemente sind Referenz auf Hashes mit den Daten jeweils einer
Sequence des Tickets, geordnet nach Timestamp.

=head1 VERWENDUNG

WebRT (E<lt>https://www.noris.net/service/rtweb/E<gt>)

=cut

