# -- # Kernel/System/QueueService.pm - core module # Managers Queue Services # # Copyright (C) (2014) (Carlos Rebelato, Rodrigo Gonçalves) (rodrigo.g@ufsc.br) # -- # $Id: writing-otrs-application.xml,v 1.1 2010/08/13 08:59:28 mg 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. # -- # Author: Carlos Rebelato # Date..: 19/02/2014 - Versão inicial # Revision: 27/02/2014 - Module creation # package Kernel::System::QueueService; use strict; use warnings; use Data::Dumper; sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {%Param}; bless( $Self, $Type ); return $Self; } =item GetServiceList() Get list of services for a queue my %{service_id}{QueueName} = $QueueServiceObject->GetServiceList( QueueID => 123, ); =cut sub GetServiceList { my ( $Self, %Param ) = @_; my %result = (); for (qw(QueueID)) { if ( !$Param{$_} ) { $Self->{LayoutObject}->FatalError( Message => Dumper( \%Param ) . "got no $_!" ); } } $Self->{DBObject}->Prepare( SQL => " select a.service_id id, b.name Name from queue_service a inner join service b on(b.id = a.service_id) where a.queue_id = ?", Bind => [ \$Param{QueueID} ] ); while ( my @row = $Self->{DBObject}->FetchrowArray() ) { $result{ $row[0] } = $row[1]; } return %result; } =item GetQueueList() Get list of queues for a service my %{queue_id}{QueueName} = $QueueServiceObject->GetQueueList( ServiceID => 123, ); =cut sub GetQueueList { my ( $Self, %Param ) = @_; my %result = (); for (qw(ServiceID)) { if ( !$Param{$_} ) { $Self->{LayoutObject}->FatalError( Message => Dumper( \%Param ) . "got no $_!" ); } } $Self->{DBObject}->Prepare( SQL => " select a.queue_id id, b.name Name from queue_service a inner join queue b on(b.id = a.queue_id) where a.service_id = ?", Bind => [ \$Param{ServiceID} ] ); while ( my @row = $Self->{DBObject}->FetchrowArray() ) { $result{ $row[0] } = $row[1]; } return %result; } =item SetQueueServices() Defines the list of services for a queue $QueueServiceObject->SetQueueServices( QueueID => 123, Services => @ServiceIDs ); =cut sub SetQueueServices { my ( $Self, %Param ) = @_; my %result = (); for (qw(QueueID Services)) { if ( !$Param{$_} ) { $Self->{LayoutObject}->FatalError( Message => Dumper( \%Param ) . "got no $_!" ); } } my $QueueID = $Param{"QueueID"}; my @Services = @{$Param{"Services"}}; $Self->{DBObject}->Do( SQL => "delete from queue_service where queue_id = ?", Bind => [ \$Param{QueueID} ] ); for my $service (@Services) { $Self->{DBObject}->Do( SQL => "insert into queue_service(queue_id,service_id) values (?,?)", Bind => [\$Param{QueueID}, \$service] ); } } =item SetServiceQueues() Defines the list of services for a queue $QueueServiceObject->SetServiceQueues( ServiceID => 123, Queues => @ServiceIDs ); =cut sub SetServiceQueues { my ( $Self, %Param ) = @_; my %result = (); for (qw(ServiceID Queues)) { if ( !$Param{$_} ) { $Self->{LayoutObject}->FatalError( Message => Dumper( \%Param ) . "got no $_!" ); } } my $ServiceID = $Param{"ServiceID"}; my @Queues = @{$Param{"Queues"}}; $Self->{DBObject}->Do( SQL => "delete from queue_service where service_id = ?", Bind => [ \$Param{ServiceID} ] ); for my $queue (@Queues) { $Self->{DBObject}->Do( SQL => "insert into queue_service(queue_id,service_id) values (?,?)", Bind => [\$queue, \$Param{ServiceID}] ); } } 1;