# -- # 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::Maint::Ticket::Delete; use strict; use warnings; use parent qw(Kernel::System::Console::BaseCommand); our @ObjectDependencies = ( 'Kernel::System::Ticket', ); sub Configure { my ( $Self, %Param ) = @_; $Self->Description('Delete one or more tickets.'); $Self->AddOption( Name => 'ticket-number', Description => "Specify one or more ticket numbers of tickets to be deleted.", Required => 0, HasValue => 1, ValueRegex => qr/.*/smx, Multiple => 1, ); $Self->AddOption( Name => 'ticket-id', Description => "Specify one or more ticket ids of tickets to be deleted.", Required => 0, HasValue => 1, ValueRegex => qr/\d+/smx, Multiple => 1, ); return; } sub PreRun { my ( $Self, %Param ) = @_; my @TicketIDs = @{ $Self->GetOption('ticket-id') // [] }; my @TicketNumbers = @{ $Self->GetOption('ticket-number') // [] }; if ( !@TicketIDs && !@TicketNumbers ) { die "Please provide option --ticket-id or --ticket-number.\n"; } return; } sub Run { my ( $Self, %Param ) = @_; $Self->Print("Deleting tickets...\n"); my @TicketIDs = @{ $Self->GetOption('ticket-id') // [] }; my @TicketNumbers = @{ $Self->GetOption('ticket-number') // [] }; my @DeleteTicketIDs; TICKETNUMBER: for my $TicketNumber (@TicketNumbers) { # lookup ticket id my $TicketID = $Kernel::OM->Get('Kernel::System::Ticket')->TicketIDLookup( TicketNumber => $TicketNumber, UserID => 1, ); # error handling if ( !$TicketID ) { $Self->PrintError("Unable to find ticket number $TicketNumber.\n"); next TICKETNUMBER; } push @DeleteTicketIDs, $TicketID; } TICKETID: for my $TicketID (@TicketIDs) { # lookup ticket number my $TicketNumber = $Kernel::OM->Get('Kernel::System::Ticket')->TicketNumberLookup( TicketID => $TicketID, UserID => 1, ); # error handling if ( !$TicketNumber ) { $Self->PrintError("Unable to find ticket id $TicketID.\n"); next TICKETID; } push @DeleteTicketIDs, $TicketID; } my $DeletedTicketCount = 0; TICKETID: for my $TicketID (@DeleteTicketIDs) { # delete the ticket my $True = $Kernel::OM->Get('Kernel::System::Ticket')->TicketDelete( TicketID => $TicketID, UserID => 1, ); # error handling if ( !$True ) { $Self->PrintError("Unable to delete ticket with id $TicketID\n"); next TICKETID; } $Self->Print(" $TicketID\n"); # increase the deleted ticket count $DeletedTicketCount++; } if ( !$DeletedTicketCount ) { return $Self->ExitCodeError(); } $Self->Print("$DeletedTicketCount tickets have been deleted.\n"); return $Self->ExitCodeOk(); } 1;