# -- # Kernel/Modules/QueueService.pm - frontend module # # Copyright (C) 2014-2018 - SeTIC - UFSC - http://setic.ufsc.br/ # # Version 2016-06-01 - Adjustments for OTRS 4 # Version 2018-01-03 - Adjustments for OTRS 6 # package Kernel::Modules::QueueService; use strict; use warnings; use Data::Dumper; our @ObjectDependencies = ( "Kernel::System::Web::Request", "Kernel::System::DB", "Kernel::System::Ticket", "Kernel::Output::HTML::Layout", "Kernel::System::Log", "Kernel::System::Queue", "Kernel::Config", "Kernel::System::Encode", "Kernel::System::Main", "Kernel::System::QueueService", "Kernel::System::Service" ); sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {%Param}; bless( $Self, $Type ); return $Self; } sub Run { my ( $Self, %Param ) = @_; my $ParamObject = $Kernel::OM->Get("Kernel::System::Web::Request"); my $SubAction = $ParamObject->GetParam( Param => "Subaction" ); if ( $SubAction eq "ServiceEdit" ) { return $Self->ShowChangeService( ID => $ParamObject->GetParam( Param => "ID" ) ); } elsif ( $SubAction eq "QueueEdit" ) { return $Self->ShowChangeQueue( ID => $ParamObject->GetParam( Param => "ID" ) ); } elsif ( $SubAction eq "ChangeService" ) { $Self->ChangeService(); return $Self->ShowOverview(); } elsif ( $SubAction eq "ChangeQueue" ) { $Self->ChangeQueue(); return $Self->ShowOverview(); } else { return $Self->ShowOverview(); } } sub ShowOverview() { my ( $Self, %Param ) = @_; my %Data = (); my %Queues = $Kernel::OM->Get("Kernel::System::Queue")->QueueList( Valid => 1 ); my %Services = $Kernel::OM->Get("Kernel::System::Service")->ServiceList( UserID => 1 ); my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); my $LanguageObject = $Kernel::OM->Get("Kernel::Language"); foreach my $service ( sort { uc( $Services{$a} ) cmp uc( $Services{$b} ) } keys %Services ) { $LayoutObject->Block( Name => 'ListService', Data => { ServiceID => $service, ServiceName => $Services{$service}, } ); } foreach my $queue ( sort { uc( $Queues{$a} ) cmp uc( $Queues{$b} ) } keys %Queues ) { $LayoutObject->Block( Name => 'ListQueue', Data => { QueueID => $queue, QueueName => $Queues{$queue}, } ); } my $Output = $LayoutObject->Header( Title => $LanguageObject->Translate("Services per queue") ); $Output .= $LayoutObject->NavigationBar(); $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'QueueService' ); $Output .= $LayoutObject->Footer(); return $Output; } =item ShowChangeService() Show view to change queues associated to a service =cut sub ShowChangeService() { my ( $Self, %Param ) = @_; my %Data = (); my %Service = $Kernel::OM->Get("Kernel::System::Service")->ServiceGet( ServiceID => $Param{ID}, UserID => 1 ); my %QueuesService = $Kernel::OM->Get("Kernel::System::QueueService")->GetQueueList( ServiceID => $Param{ID} ); my %Queues = $Kernel::OM->Get("Kernel::System::Queue")->QueueList( Valid => 1 ); my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); my $LanguageObject = $Kernel::OM->Get("Kernel::Language"); $Data{Type} = "Queue"; $Data{Filter} = "Service"; $Data{VisibleNeType} = "Service"; $Data{Name} = $Service{Name}; $Data{ID} = $Service{ServiceID}; $LayoutObject->Block( Name => 'ChangeHeader', Data => \%Data ); foreach my $queue ( sort { uc( $Queues{$a} ) cmp uc( $Queues{$b} ) } keys %Queues ) { $LayoutObject->Block( Name => 'ChangeRow', Data => { Type => "Queue", ID => $queue, Name => $Queues{$queue}, Selected => ( $QueuesService{$queue} ? 'checked="checked"' : '' ) } ); } my $Output = $LayoutObject->Header( Title => $LanguageObject->Translate("Services per queue") ); $Output .= $LayoutObject->NavigationBar(); $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'QueueServiceChange' ); $Output .= $LayoutObject->Footer(); return $Output; } =item ShowChangeQueue() Show view to change services associated to a queue =cut sub ShowChangeQueue() { my ( $Self, %Param ) = @_; my %Data = (); my %Queue = $Kernel::OM->Get("Kernel::System::Queue")->QueueGet( ID => $Param{ID} ); my %ServicesQueue = $Kernel::OM->Get("Kernel::System::QueueService")->GetServiceList( QueueID => $Param{ID} ); my %Services = $Kernel::OM->Get("Kernel::System::Service")->ServiceList( UserID => 1 ); my $LayoutObject = $Kernel::OM->Get("Kernel::Output::HTML::Layout"); my $LanguageObject = $Kernel::OM->Get("Kernel::Language"); $Data{Type} = "Service"; $Data{Filter} = "Queue"; $Data{VisibleNeType} = "Queue"; $Data{Name} = $Queue{Name}; $Data{ID} = $Queue{QueueID}; $LayoutObject->Block( Name => 'ChangeHeader', Data => \%Data ); foreach my $service ( sort { uc( $Services{$a} ) cmp uc( $Services{$b} ) } keys %Services ) { $LayoutObject->Block( Name => 'ChangeRow', Data => { Type => "Service", ID => $service, Name => $Services{$service}, Selected => ( $ServicesQueue{$service} ? 'checked="checked"' : '' ) } ); } my $Output = $LayoutObject->Header( Title => $LanguageObject->Translate("Services per queue") ); $Output .= $LayoutObject->NavigationBar(); $Output .= $LayoutObject->Output( Data => \%Data, TemplateFile => 'QueueServiceChange' ); $Output .= $LayoutObject->Footer(); return $Output; } sub ChangeService() { my ( $Self, %Param ) = @_; my @queueIDs = $Kernel::OM->Get("Kernel::System::Web::Request")->GetArray( Param => 'Queue' ); my $id = $Kernel::OM->Get("Kernel::System::Web::Request")->GetParam( Param => 'ID' ); $Kernel::OM->Get("Kernel::System::QueueService")->SetServiceQueues(ServiceID => $id, Queues => \@queueIDs); } sub ChangeQueue() { my ( $Self, %Param ) = @_; my @serviceIDs = $Kernel::OM->Get("Kernel::System::Web::Request")->GetArray( Param => 'Service' ); my $id = $Kernel::OM->Get("Kernel::System::Web::Request")->GetParam( Param => 'ID' ); $Kernel::OM->Get("Kernel::System::QueueService")->SetQueueServices(QueueID => $id, Services => \@serviceIDs); } 1;