[otrs-cvs] otrs/Kernel/System/ProcessManagement/TransitionAction SLASet.pm, NONE, 1.1 ServiceSet.pm, NONE, 1.1
"CVS commits notifications of OTRS.org" <[email protected]>
| Newsgroups | gmane.comp.otrs.cvs |
|---|---|
| Message-ID | <[email protected]> |
Comments:
Update of /home/cvs/otrs/Kernel/System/ProcessManagement/TransitionAction
In directory lancelot:/tmp/cvs-serv24738/Kernel/System/ProcessManagement/TransitionAction
Added Files:
SLASet.pm ServiceSet.pm
Log Message:
Initial version.
Author: cr
--- NEW FILE: SLASet.pm ---
# --
# Kernel/System/ProcessManagement/TransitionAction/SLASet.pm - A Module to set the ticket service
# Copyright (C) 2001-2013 OTRS AG, http://otrs.org/
# --
# $Id: SLASet.pm,v 1.1 2013/01/04 22:49:38 cr Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::ProcessManagement::TransitionAction::SLASet;
use strict;
use warnings;
use Kernel::System::VariableCheck qw(:all);
use utf8;
use Kernel::System::SLA;
use vars qw($VERSION);
$VERSION = qw($Revision: 1.1 $) [1];
=head1 NAME
Kernel::System::ProcessManagement::TransitionAction::SLASet - A module to set the ticket SLA
=head1 SYNOPSIS
All SLASet functions.
=head1 PUBLIC INTERFACE
=over 4
=cut
=item new()
create an object
use Kernel::Config;
use Kernel::System::Encode;
use Kernel::System::Log;
use Kernel::System::Time;
use Kernel::System::Main;
use Kernel::System::DB;
use Kernel::System::Ticket;
use Kernel::System::ProcessManagement::TransitionAction::SLASet;
my $ConfigObject = Kernel::Config->new();
my $EncodeObject = Kernel::System::Encode->new(
ConfigObject => $ConfigObject,
);
my $LogObject = Kernel::System::Log->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
);
my $TimeObject = Kernel::System::Time->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
);
my $MainObject = Kernel::System::Main->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
);
my $DBObject = Kernel::System::DB->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
MainObject => $MainObject,
);
my $TicketObject = Kernel::System::Ticket->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
EncodeObject => $EncodeObject,
);
my $SLASetActionObject = Kernel::System::ProcessManagement::TransitionAction::SLASet->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
EncodeObject => $EncodeObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
TicketObject => $TicketObject,
);
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# get needed objects
for my $Needed (
qw(ConfigObject LogObject EncodeObject DBObject MainObject TimeObject TicketObject)
)
{
die "Got no $Needed!" if !$Param{$Needed};
$Self->{$Needed} = $Param{$Needed};
}
$Self->{SLAObject} = Kernel::System::SLA->new(
%Param,
DBObject => $Self->{DBObject},
MainObject => $Self->{MainObject},
TimeObject => $Self->{TimeObject},
);
return $Self;
}
=item Run()
Run Data
my $SLASetResult = $SLASetActionObject->Run(
UserID => 123,
Ticket => \%Ticket, # required
Config => {
SLA => 'MySLA',
# or
SLAID => 123,
}
);
Ticket contains the result of TicketGet including DynamicFields
Config is the Config Hash stored in a Process::TransitionAction's Config key
Returns:
$SLASetResult = 1; # 0
=cut
sub Run {
my ( $Self, %Param ) = @_;
for my $Needed (qw(UserID Ticket Config)) {
if ( !defined $Param{$Needed} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Need $Needed!",
);
return;
}
}
# Check if we have Ticket to deal with
if ( !IsHashRefWithData( $Param{Ticket} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Ticket has no values!",
);
return;
}
# Check if we have a ConfigHash
if ( !IsHashRefWithData( $Param{Config} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Config has no values!",
);
return;
}
if ( !$Param{Config}->{SLAID} && !$Param{Config}->{SLA} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "No SLA or SLAID configured!",
);
return;
}
if ( !$Param{Ticket}->{ServiceID} && !$Param{Ticket}->{Service} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "To set a SLA the ticket requires a service!",
);
return;
}
my $Success;
# If Ticket's SLAID is already the same as the Value we
# should set it to, we got nothing to do and return success
if (
defined $Param{Config}->{SLAID}
&& defined $Param{Ticket}->{SLAID}
&& $Param{Config}->{SLAID} eq $Param{Ticket}->{SLAID}
)
{
return 1;
}
# If Ticket's SLAID is not the same as the Value we
# should set it to, set the SLAID
elsif (
(
defined $Param{Config}->{SLAID}
&& defined $Param{Ticket}->{SLAID}
&& $Param{Config}->{SLAID} ne $Param{Ticket}->{SLAID}
)
|| !defined $Param{Ticket}->{SLAID}
)
{
# check if serivce is assigned to Service otherwise return
$Success = $Self->_CheckSLA(
ServiceID => $Param{Ticket}->{ServiceID},
SLAID => $Param{Config}->{SLAID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'SLAID '
. $Param{Config}->{SLAID}
. ' is not assigned to Service '
. $Param{Ticket}->{Service}
);
return;
}
# set ticket SLA
$Success = $Self->{TicketObject}->TicketSLASet(
TicketID => $Param{Ticket}->{TicketID},
SLAID => $Param{Config}->{SLAID},
UserID => $Param{UserID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Ticket SLAID '
. $Param{Config}->{SLAID}
. ' could not be updated for Ticket: '
. $Param{Ticket}->{TicketID} . '!',
);
}
}
# If Ticket's SLA is already the same as the Value we
# should set it to, we got nothing to do and return success
elsif (
defined $Param{Config}->{SLA}
&& defined $Param{Ticket}->{SLA}
&& $Param{Config}->{SLA} eq $Param{Ticket}->{SLA}
)
{
return 1;
}
# If Ticket's SLA is not the same as the Value we
# should set it to, set the SLA
elsif (
(
defined $Param{Config}->{SLA}
&& defined $Param{Ticket}->{SLA}
&& $Param{Config}->{SLA} ne $Param{Ticket}->{SLA}
)
|| !defined $Param{Ticket}->{SLA}
)
{
my $SLAID = $Self->{SLAObject}->SLALookup(
Name => $Param{Config}->{SLA},
);
if ( !$SLAID ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'SLA '
. $Param{Config}->{SLA}
. ' is invalid!'
);
return;
}
# check if SLA is assigned to Service, otherwise return
$Success = $Self->_CheckSLA(
ServiceID => $Param{Ticket}->{ServiceID},
SLAID => $SLAID,
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'SLA '
. $Param{Config}->{SLA}
. ' is not assigned to Service '
. $Param{Ticket}->{Service}
);
return;
}
# set ticket SLA
$Success = $Self->{TicketObject}->TicketSLASet(
TicketID => $Param{Ticket}->{TicketID},
SLA => $Param{Config}->{SLA},
UserID => $Param{UserID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Ticket SLA '
. $Param{Config}->{SLA}
. ' could not be updated for Ticket: '
. $Param{Ticket}->{TicketID} . '!',
);
}
}
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Couldn't update Ticket SLA - can't find valid SLA parameter!",
);
return;
}
return $Success;
}
=item _CheckSLA()
checks if a SLA is assigned to a Service
my $Success = _CheckSLA(
ServiceID => 123,
SLAID => 123,
);
Returns:
$Success = 1; # or undef
=cut
sub _CheckSLA {
my ( $Self, %Param ) = @_;
# get a list of assigned SLAs to the Service
my %SLAs = $Self->{SLAObject}->SLAList(
ServiceID => $Param{ServiceID},
UserID => 1,
);
# return failure if there are no assigned SLAs for this Service
return if !IsHashRefWithData( \%SLAs );
# return failure if the the SLA is not assigned to the Service
return if !$SLAs{ $Param{SLAID} };
# otherwise return success
return 1;
}
1;
=back
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<http://otrs.org/>).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (AGPL). If you
did not receive this file, see L<http://www.gnu.org/licenses/agpl.txt>.
=head1 VERSION
$Revision: 1.1 $ $Date: 2013/01/04 22:49:38 $
=cut
Author: cr
--- NEW FILE: ServiceSet.pm ---
# --
# Kernel/System/ProcessManagement/TransitionAction/ServiceSet.pm - A Module to set the ticket service
# Copyright (C) 2001-2013 OTRS AG, http://otrs.org/
# --
# $Id: ServiceSet.pm,v 1.1 2013/01/04 22:49:38 cr Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package Kernel::System::ProcessManagement::TransitionAction::ServiceSet;
use strict;
use warnings;
use Kernel::System::VariableCheck qw(:all);
use utf8;
use Kernel::System::Service;
use vars qw($VERSION);
$VERSION = qw($Revision: 1.1 $) [1];
=head1 NAME
Kernel::System::ProcessManagement::TransitionAction::ServiceSet - A module to set the ticket Service
=head1 SYNOPSIS
All ServiceSet functions.
=head1 PUBLIC INTERFACE
=over 4
=cut
=item new()
create an object
use Kernel::Config;
use Kernel::System::Encode;
use Kernel::System::Log;
use Kernel::System::Time;
use Kernel::System::Main;
use Kernel::System::DB;
use Kernel::System::Ticket;
use Kernel::System::ProcessManagement::TransitionAction::ServiceSet;
my $ConfigObject = Kernel::Config->new();
my $EncodeObject = Kernel::System::Encode->new(
ConfigObject => $ConfigObject,
);
my $LogObject = Kernel::System::Log->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
);
my $TimeObject = Kernel::System::Time->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
);
my $MainObject = Kernel::System::Main->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
);
my $DBObject = Kernel::System::DB->new(
ConfigObject => $ConfigObject,
EncodeObject => $EncodeObject,
LogObject => $LogObject,
MainObject => $MainObject,
);
my $TicketObject = Kernel::System::Ticket->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
EncodeObject => $EncodeObject,
);
my $ServiceSetActionObject
= Kernel::System::ProcessManagement::TransitionAction::ServiceSet->new(
ConfigObject => $ConfigObject,
LogObject => $LogObject,
EncodeObject => $EncodeObject,
DBObject => $DBObject,
MainObject => $MainObject,
TimeObject => $TimeObject,
TicketObject => $TicketObject,
);
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
# get needed objects
for my $Needed (
qw(ConfigObject LogObject EncodeObject DBObject MainObject TimeObject TicketObject)
)
{
die "Got no $Needed!" if !$Param{$Needed};
$Self->{$Needed} = $Param{$Needed};
}
$Self->{ServiceObject} = Kernel::System::Service->new(
%Param,
DBObject => $Self->{DBObject},
MainObject => $Self->{MainObject},
TimeObject => $Self->{TimeObject},
);
return $Self;
}
=item Run()
Run Data
my $ServiceSetResult = $ServiceSetActionObject->Run(
UserID => 123,
Ticket => \%Ticket, # required
Config => {
Service => 'MyService::Subservice',
# or
ServiceID => 123,
}
);
Ticket contains the result of TicketGet including DynamicFields
Config is the Config Hash stored in a Process::TransitionAction's Config key
Returns:
$ServiceSetResult = 1; # 0
=cut
sub Run {
my ( $Self, %Param ) = @_;
for my $Needed (qw(UserID Ticket Config)) {
if ( !defined $Param{$Needed} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Need $Needed!",
);
return;
}
}
# Check if we have Ticket to deal with
if ( !IsHashRefWithData( $Param{Ticket} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Ticket has no values!",
);
return;
}
# Check if we have a ConfigHash
if ( !IsHashRefWithData( $Param{Config} ) ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Config has no values!",
);
return;
}
if ( !$Param{Config}->{ServiceID} && !$Param{Config}->{Service} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "No Service or ServiceID configured!",
);
return;
}
if ( !$Param{Ticket}->{CustomerUserID} ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "To set a service the ticket requires a customer!",
);
return;
}
my $Success;
# If Ticket's ServiceID is already the same as the Value we
# should set it to, we got nothing to do and return success
if (
defined $Param{Config}->{ServiceID}
&& defined $Param{Ticket}->{ServiceID}
&& $Param{Config}->{ServiceID} eq $Param{Ticket}->{ServiceID}
)
{
return 1;
}
# If Ticket's ServiceID is not the same as the Value we
# should set it to, set the ServiceID
elsif (
(
defined $Param{Config}->{ServiceID}
&& defined $Param{Ticket}->{ServiceID}
&& $Param{Config}->{ServiceID} ne $Param{Ticket}->{ServiceID}
)
|| !defined $Param{Ticket}->{ServiceID}
)
{
# check if serivce is assigned to Customer User otherwise return
$Success = $Self->_CheckService(
UserLogin => $Param{Ticket}->{CustomerUserID},
ServiceID => $Param{Config}->{ServiceID}
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'ServiceID '
. $Param{Config}->{ServiceID}
. ' is not assigned to Customer User '
. $Param{Ticket}->{CustomerUserID}
);
return;
}
# set ticket service
$Success = $Self->{TicketObject}->TicketServiceSet(
TicketID => $Param{Ticket}->{TicketID},
ServiceID => $Param{Config}->{ServiceID},
UserID => $Param{UserID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Ticket ServiceID '
. $Param{Config}->{ServiceID}
. ' could not be updated for Ticket: '
. $Param{Ticket}->{TicketID} . '!',
);
}
}
# If Ticket's Service is already the same as the Value we
# should set it to, we got nothing to do and return success
elsif (
defined $Param{Config}->{Service}
&& defined $Param{Ticket}->{Service}
&& $Param{Config}->{Service} eq $Param{Ticket}->{Service}
)
{
return 1;
}
# If Ticket's Service is not the same as the Value we
# should set it to, set the Service
elsif (
(
defined $Param{Config}->{Service}
&& defined $Param{Ticket}->{Service}
&& $Param{Config}->{Service} ne $Param{Ticket}->{Service}
)
|| !defined $Param{Ticket}->{Service}
)
{
my $ServiceID = $Self->{ServiceObject}->ServiceLookup(
Name => $Param{Config}->{Service},
);
if ( !$ServiceID ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Service '
. $Param{Config}->{Service}
. ' is invalid!'
);
return;
}
# check if service is assigned to Customer User, otherwise return
$Success = $Self->_CheckService(
UserLogin => $Param{Ticket}->{CustomerUserID},
ServiceID => $ServiceID,
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Service '
. $Param{Config}->{Service}
. ' is not assigned to Customer User '
. $Param{Ticket}->{CustomerUserID}
);
return;
}
# set ticket service
$Success = $Self->{TicketObject}->TicketServiceSet(
TicketID => $Param{Ticket}->{TicketID},
Service => $Param{Config}->{Service},
UserID => $Param{UserID},
);
if ( !$Success ) {
$Self->{LogObject}->Log(
Priority => 'error',
Message => 'Ticket Service '
. $Param{Config}->{Service}
. ' could not be updated for Ticket: '
. $Param{Ticket}->{TicketID} . '!',
);
}
}
else {
$Self->{LogObject}->Log(
Priority => 'error',
Message => "Couldn't update Ticket Service - can't find valid Service parameter!",
);
return;
}
return $Success;
}
=item _CheckService()
checks if a service is assigned to a customer user
my $Success = _CheckService(
UserLogin => 'some user',
ServiceID => 123,
);
Returns:
$Success = 1; # or undef
=cut
sub _CheckService {
my ( $Self, %Param ) = @_;
# get a list of assigned services to the customer user
my %Services = $Self->{ServiceObject}->CustomerUserServiceMemberList(
CustomerUserLogin => $Param{UserLogin},
Result => 'HASH',
DefaultServices => 1,
);
# return failure if there are no assigned services for this customer user
return if !IsHashRefWithData( \%Services );
# return failure if the the service is not assigned to the customer
return if !$Services{ $Param{ServiceID} };
# otherwise return success
return 1;
}
1;
=back
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<http://otrs.org/>).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (AGPL). If you
did not receive this file, see L<http://www.gnu.org/licenses/agpl.txt>.
=head1 VERSION
$Revision: 1.1 $ $Date: 2013/01/04 22:49:38 $
=cut
---------------------------------------------------------------------
OTRS mailing list: cvs-log - Webpage: http://otrs.org/
Archive: http://lists.otrs.org/pipermail/cvs-log
To unsubscribe: http://lists.otrs.org/cgi-bin/listinfo/cvs-log