QueueService.pm 3.67 KB
# --
# 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;