192 lines
5.3 KiB
Perl
192 lines
5.3 KiB
Perl
# --
|
|
# 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::Stats::Dynamic::ITSMChangeManagementHistory;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
our @ObjectDependencies = (
|
|
'Kernel::System::DateTime',
|
|
'Kernel::System::ITSMChange',
|
|
'Kernel::System::ITSMChange::History',
|
|
'Kernel::System::Log',
|
|
);
|
|
|
|
sub new {
|
|
my ( $Type, %Param ) = @_;
|
|
|
|
# allocate new hash for object
|
|
my $Self = {};
|
|
bless( $Self, $Type );
|
|
|
|
return $Self;
|
|
}
|
|
|
|
sub GetObjectName {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
return 'ITSMChangeManagementHistory';
|
|
}
|
|
|
|
sub GetObjectBehaviours {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
my %Behaviours = (
|
|
ProvidesDashboardWidget => 1,
|
|
);
|
|
|
|
return %Behaviours;
|
|
}
|
|
|
|
sub GetObjectAttributes {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# get change state list
|
|
my $ChangeStates = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangePossibleStatesGet(
|
|
UserID => 1,
|
|
);
|
|
my %ChangeStateList = map { $_->{Key} => $_->{Value} } @{$ChangeStates};
|
|
|
|
# get current time to fix bug#4870
|
|
my $Today = $Kernel::OM->Create('Kernel::System::DateTime')->Format( Format => '%Y-%m-%d 23:59:59' );
|
|
|
|
my @ObjectAttributes = (
|
|
{
|
|
Name => 'Change State',
|
|
UseAsXvalue => 1,
|
|
UseAsValueSeries => 1,
|
|
UseAsRestriction => 1,
|
|
Element => 'NewValues',
|
|
Block => 'MultiSelectField',
|
|
Values => \%ChangeStateList,
|
|
},
|
|
{
|
|
Name => 'Timeperiod',
|
|
UseAsXvalue => 1,
|
|
UseAsValueSeries => 1,
|
|
UseAsRestriction => 1,
|
|
Element => 'TimePeriod',
|
|
TimePeriodFormat => 'DateInputFormat', # 'DateInputFormatLong',
|
|
Block => 'Time',
|
|
TimeStop => $Today,
|
|
Values => {
|
|
TimeStart => 'ChangeTimeNewerDate',
|
|
TimeStop => 'ChangeTimeOlderDate',
|
|
},
|
|
},
|
|
);
|
|
|
|
return @ObjectAttributes;
|
|
}
|
|
|
|
sub GetStatElementPreview {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
return int rand 50;
|
|
}
|
|
|
|
sub GetStatElement {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# search history
|
|
my $IDs = $Kernel::OM->Get('Kernel::System::ITSMChange::History')->HistorySearch(
|
|
UserID => 1,
|
|
Type => 'Change',
|
|
Attribute => 'ChangeStateID',
|
|
Limit => 100_000_000,
|
|
%Param,
|
|
);
|
|
|
|
my @ChangeNumbers;
|
|
if ( $IDs && ref $IDs eq 'ARRAY' ) {
|
|
|
|
ID:
|
|
for my $ID ( @{$IDs} ) {
|
|
my $Change = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangeGet(
|
|
ChangeID => $ID,
|
|
UserID => 1,
|
|
);
|
|
|
|
next ID if !$Change;
|
|
|
|
push @ChangeNumbers, $Change->{ChangeNumber};
|
|
}
|
|
}
|
|
|
|
return join "\n", @ChangeNumbers;
|
|
}
|
|
|
|
sub ExportWrapper {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# wrap ids to used spelling
|
|
for my $Use (qw(UseAsValueSeries UseAsRestriction UseAsXvalue)) {
|
|
ELEMENT:
|
|
for my $Element ( @{ $Param{$Use} } ) {
|
|
next ELEMENT if !$Element || !$Element->{SelectedValues};
|
|
my $ElementName = $Element->{Element};
|
|
my $Values = $Element->{SelectedValues};
|
|
|
|
if ( $ElementName eq 'NewValues' ) {
|
|
my $StateList = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangePossibleStatesGet( UserID => 1 );
|
|
ID:
|
|
for my $ID ( @{$Values} ) {
|
|
next ID if !$ID;
|
|
|
|
STATE:
|
|
for my $State ( @{$StateList} ) {
|
|
next STATE if $ID->{Content} ne $State->{Key};
|
|
$ID->{Content} = $State->{Value};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return \%Param;
|
|
}
|
|
|
|
sub ImportWrapper {
|
|
my ( $Self, %Param ) = @_;
|
|
|
|
# wrap used spelling to ids
|
|
for my $Use (qw(UseAsValueSeries UseAsRestriction UseAsXvalue)) {
|
|
ELEMENT:
|
|
for my $Element ( @{ $Param{$Use} } ) {
|
|
next ELEMENT if !$Element || !$Element->{SelectedValues};
|
|
my $ElementName = $Element->{Element};
|
|
my $Values = $Element->{SelectedValues};
|
|
|
|
if ( $ElementName eq 'NewValues' ) {
|
|
ID:
|
|
for my $ID ( @{$Values} ) {
|
|
next ID if !$ID;
|
|
|
|
my $ChangeStateID = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangeStateLookup(
|
|
ChangeState => $ID->{Content},
|
|
Cache => 1,
|
|
);
|
|
if ($ChangeStateID) {
|
|
$ID->{Content} = $ChangeStateID;
|
|
}
|
|
else {
|
|
$Kernel::OM->Get('Kernel::System::Log')->Log(
|
|
Priority => 'error',
|
|
Message => "Import: Can' find state $ID->{Content}!"
|
|
);
|
|
$ID = undef;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return \%Param;
|
|
}
|
|
|
|
1;
|