1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
# --
# Kernel/System/GenericAgent/NotifyAgentGroupOfCustomQueue.pm - generic agent notifications
# Copyright (C) 2001-2006 OTRS GmbH, http://otrs.org/
# --
# $Id: NotifyAgentGroupOfCustomQueue.pm,v 1.12 2006/12/11 08:01:03 martin Exp $
# --
# 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 http://www.gnu.org/licenses/gpl.txt.
# --
package Kernel::System::GenericAgent::NotifyAgentGroupOfCustomQueue;
use strict;
use Kernel::System::User;
use Kernel::System::Email;
use Kernel::System::Queue;
use vars qw(@ISA $VERSION);
$VERSION = '$Revision: 1.12 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
sub new {
my $Type = shift;
my %Param = @_;
# allocate new hash for object
my $Self = {};
bless ($Self, $Type);
# check needed objects
foreach (qw(DBObject ConfigObject LogObject TicketObject TimeObject)) {
$Self->{$_} = $Param{$_} || die "Got no $_!";
}
# 0=off; 1=on;
$Self->{Debug} = $Param{Debug} || 0;
$Self->{UserObject} = Kernel::System::User->new(%Param);
$Self->{EmailObject} = Kernel::System::Email->new(%Param);
$Self->{QueueObject} = Kernel::System::Queue->new(%Param);
return $Self;
}
sub Run {
my $Self = shift;
my %Param = @_;
# get ticket data
my %Ticket = $Self->{TicketObject}->TicketGet(%Param);
# check if bussines hours is, then send escalation info
my $CountedTime = $Self->{TimeObject}->WorkingTime(
StartTime => $Self->{TimeObject}->SystemTime()-(30*60),
StopTime => $Self->{TimeObject}->SystemTime(),
);
if (!$CountedTime) {
if ($Self->{Debug}) {
$Self->{LogObject}->Log(
Priority => 'debug',
Message => "Send not escalation for Ticket $Ticket{TicketNumber}/$Ticket{TicketID} because currently no working hours!",
);
}
return 1;
}
# get agentss who are sucscribed the ticket queue to the custom queues
my @UserIDs = $Self->{TicketObject}->GetSubscribedUserIDsByQueueID(
QueueID => $Ticket{QueueID},
);
# send each agent the escalation notification
foreach my $UserID (@UserIDs) {
my %User = $Self->{UserObject}->GetUserData(UserID => $UserID, Valid => 1);
if (%User) {
# check if today a reminder is already sent
my ($Sec, $Min, $Hour, $Day, $Month, $Year) = $Self->{TimeObject}->SystemTime2Date(
SystemTime => $Self->{TimeObject}->SystemTime(),
);
my @Lines = $Self->{TicketObject}->HistoryGet(
TicketID => $Ticket{TicketID},
UserID => 1,
);
my $Sent = 0;
foreach my $Line (@Lines) {
if ($Line->{Name} =~ /Escalation/ && $Line->{Name} =~ /\Q$User{UserEmail}\E/i && $Line->{CreateTime} =~ /$Year-$Month-$Day/) {
$Sent = 1;
}
}
if ($Sent) {
next;
}
# send agent notification
$Self->{TicketObject}->SendAgentNotification(
Type => 'Escalation',
UserData => \%User,
CustomerMessageParams => \%Param,
TicketID => $Param{TicketID},
UserID => 1,
);
}
}
return 1;
}
1;
|