# -- # Copyright (C) 2001-2019 OTRS AG, https://otrs.com/ # -- # 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 https://www.gnu.org/licenses/gpl-3.0.txt. # -- package Kernel::System::Console::Command::Admin::Queue::Add; use strict; use warnings; use parent qw(Kernel::System::Console::BaseCommand); our @ObjectDependencies = ( 'Kernel::System::Group', 'Kernel::System::Queue', 'Kernel::System::SystemAddress', ); sub Configure { my ( $Self, %Param ) = @_; $Self->Description('Create a new queue.'); $Self->AddOption( Name => 'name', Description => 'Queue name for the new queue.', Required => 1, HasValue => 1, ValueRegex => qr/.*/smx, ); $Self->AddOption( Name => 'group', Description => 'Group which should be assigned to the new queue.', Required => 1, HasValue => 1, ValueRegex => qr/.*/smx, ); $Self->AddOption( Name => 'system-address-id', Description => 'ID of the system address which should be assigned to the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/\d/smx, ); $Self->AddOption( Name => 'system-address-name', Description => 'System email address which should be assigned to the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/.*/smx, ); $Self->AddOption( Name => 'comment', Description => 'Comment for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/.*/smx, ); $Self->AddOption( Name => 'unlock-timeout', Description => 'Unlock timeout in minutes for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/\d/smx, ); $Self->AddOption( Name => 'first-response-time', Description => 'Ticket first response time in minutes for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/\d/smx, ); $Self->AddOption( Name => 'update-time', Description => 'Ticket update time in minutes for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/\d/smx, ); $Self->AddOption( Name => 'solution-time', Description => 'Ticket solution time in minutes for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/\d/smx, ); $Self->AddOption( Name => 'calendar', Description => 'Calendar order number for the new queue.', Required => 0, HasValue => 1, ValueRegex => qr/.*/smx, ); return; } sub Run { my ( $Self, %Param ) = @_; $Self->Print("Adding a new queue...\n"); # check group my $Group = $Self->GetOption('group'); my $GroupID = $Kernel::OM->Get('Kernel::System::Group')->GroupLookup( Group => $Group ); if ( !$GroupID ) { $Self->PrintError("Found no GroupID for $Group\n"); return $Self->ExitCodeError(); } my $SystemAddressID = $Self->GetOption('system-address-id'); my $SystemAddressName = $Self->GetOption('system-address-name'); # check System Address if ($SystemAddressName) { my %SystemAddressList = $Kernel::OM->Get('Kernel::System::SystemAddress')->SystemAddressList( Valid => 1 ); ADDRESS: for my $ID ( sort keys %SystemAddressList ) { my %SystemAddressInfo = $Kernel::OM->Get('Kernel::System::SystemAddress')->SystemAddressGet( ID => $ID ); if ( $SystemAddressInfo{Name} eq $SystemAddressName ) { $SystemAddressID = $ID; last ADDRESS; } } if ( !$SystemAddressID ) { $Self->PrintError("Address $SystemAddressName not found\n"); return $Self->ExitCodeError(); } } # add queue my $Success = $Kernel::OM->Get('Kernel::System::Queue')->QueueAdd( Name => $Self->GetOption('name'), GroupID => $GroupID, SystemAddressID => $SystemAddressID || $Self->GetOption('system-address-id') || undef, Comment => $Self->GetOption('comment'), UnlockTimeout => $Self->GetOption('unlock-timeout'), FirstResponseTime => $Self->GetOption('first-response-time'), UpdateTime => $Self->GetOption('update-time'), SolutionTime => $Self->GetOption('solution-time'), Calendar => $Self->GetOption('calendar'), ValidID => 1, UserID => 1, ); # error handling if ( !$Success ) { $Self->PrintError("Can't create queue.\n"); return $Self->ExitCodeError(); } $Self->Print("Done.\n"); return $Self->ExitCodeOk(); } 1;