init III
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
# --
|
||||
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
|
||||
# --
|
||||
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
|
||||
# the enclosed file COPYING for license information (GPL). If you
|
||||
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
|
||||
# --
|
||||
|
||||
package Kernel::Output::HTML::Notification::AgentTicketEscalation;
|
||||
|
||||
use parent 'Kernel::Output::HTML::Base';
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Kernel::Language qw(Translatable);
|
||||
|
||||
our @ObjectDependencies = (
|
||||
'Kernel::Output::HTML::Layout',
|
||||
'Kernel::System::Cache',
|
||||
'Kernel::System::Ticket',
|
||||
);
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
# get layout object
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
# only show the escalations on ticket overviews
|
||||
return ''
|
||||
if $LayoutObject->{Action}
|
||||
!~ /^AgentTicket(Queue|Service|(Status|Locked|Watch|Responsible)View)/;
|
||||
|
||||
# get cache object
|
||||
my $CacheObject = $Kernel::OM->Get('Kernel::System::Cache');
|
||||
|
||||
# check result cache
|
||||
my $CacheTime = $Param{Config}->{CacheTime} || 40;
|
||||
if ($CacheTime) {
|
||||
my $Output = $CacheObject->Get(
|
||||
Type => 'TicketEscalation',
|
||||
Key => 'EscalationResult::' . $Self->{UserID} . '::' . $LayoutObject->{UserLanguage},
|
||||
);
|
||||
return $Output if defined $Output;
|
||||
}
|
||||
|
||||
# get ticket object
|
||||
my $TicketObject = $Kernel::OM->Get('Kernel::System::Ticket');
|
||||
|
||||
# get all overtime tickets
|
||||
my $ShownMax = $Param{Config}->{ShownMax} || 25;
|
||||
my $EscalationInMinutes = $Param{Config}->{EscalationInMinutes} || 120;
|
||||
my @TicketIDs = $TicketObject->TicketSearch(
|
||||
Result => 'ARRAY',
|
||||
Limit => $ShownMax,
|
||||
TicketEscalationTimeOlderMinutes => -$EscalationInMinutes,
|
||||
Permission => 'rw',
|
||||
UserID => $Self->{UserID},
|
||||
);
|
||||
|
||||
# get escalations
|
||||
my $ResponseTime = '';
|
||||
my $UpdateTime = '';
|
||||
my $SolutionTime = '';
|
||||
my $Comment = '';
|
||||
my $Count = 0;
|
||||
for my $TicketID (@TicketIDs) {
|
||||
my %Ticket = $TicketObject->TicketGet(
|
||||
TicketID => $TicketID,
|
||||
DynamicFields => 0,
|
||||
);
|
||||
|
||||
# check response time
|
||||
if ( defined $Ticket{FirstResponseTime} ) {
|
||||
$Ticket{FirstResponseTimeHuman} = $LayoutObject->CustomerAgeInHours(
|
||||
Age => $Ticket{FirstResponseTime},
|
||||
Space => ' ',
|
||||
);
|
||||
if ( $Ticket{FirstResponseTimeEscalation} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationFirstResponseTimeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$ResponseTime .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
elsif ( $Ticket{FirstResponseTimeNotification} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationFirstResponseTimeWillBeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$ResponseTime .= $LayoutObject->Notify(
|
||||
Priority => 'Notice',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
}
|
||||
|
||||
# check update time
|
||||
if ( defined $Ticket{UpdateTime} ) {
|
||||
$Ticket{UpdateTimeHuman} = $LayoutObject->CustomerAgeInHours(
|
||||
Age => $Ticket{UpdateTime},
|
||||
Space => ' ',
|
||||
);
|
||||
if ( $Ticket{UpdateTimeEscalation} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationUpdateTimeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$UpdateTime .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
elsif ( $Ticket{UpdateTimeNotification} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationUpdateTimeWillBeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$UpdateTime .= $LayoutObject->Notify(
|
||||
Priority => 'Notice',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
}
|
||||
|
||||
# check solution
|
||||
if ( defined $Ticket{SolutionTime} ) {
|
||||
$Ticket{SolutionTimeHuman} = $LayoutObject->CustomerAgeInHours(
|
||||
Age => $Ticket{SolutionTime},
|
||||
Space => ' ',
|
||||
);
|
||||
if ( $Ticket{SolutionTimeEscalation} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationSolutionTimeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$SolutionTime .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
elsif ( $Ticket{SolutionTimeNotification} ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'TicketEscalationSolutionTimeWillBeOver',
|
||||
Data => \%Ticket,
|
||||
);
|
||||
my $Data = $LayoutObject->Output(
|
||||
TemplateFile => 'AgentTicketEscalation',
|
||||
Data => \%Param,
|
||||
);
|
||||
$SolutionTime .= $LayoutObject->Notify(
|
||||
Priority => 'Notice',
|
||||
Data => $Data,
|
||||
);
|
||||
$Count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( $Count == $ShownMax ) {
|
||||
$Comment .= $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Info => Translatable('There are more escalated tickets!'),
|
||||
);
|
||||
}
|
||||
my $Output = $ResponseTime . $UpdateTime . $SolutionTime . $Comment;
|
||||
|
||||
# cache result
|
||||
if ($CacheTime) {
|
||||
$CacheObject->Set(
|
||||
Type => 'TicketEscalation',
|
||||
Key => 'EscalationResult::' . $Self->{UserID} . '::' . $LayoutObject->{UserLanguage},
|
||||
Value => $Output,
|
||||
TTL => $CacheTime,
|
||||
);
|
||||
}
|
||||
|
||||
return $Output;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user