# -- # 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::ITSMChange::ITSMCondition::Object::ITSMChange; use strict; use warnings; our @ObjectDependencies = ( 'Kernel::System::ITSMChange', 'Kernel::System::Log', 'Kernel::System::User', ); =head1 NAME Kernel::System::ITSMChange::ITSMCondition::Object::ITSMChange - condition itsm change object lib =head1 PUBLIC INTERFACE =head2 new() create an object use Kernel::System::ObjectManager; local $Kernel::OM = Kernel::System::ObjectManager->new(); my $ConditionObjectITSMChange = $Kernel::OM->Get('Kernel::System::ITSMChange::ITSMCondition::Object::ITSMChange'); =cut sub new { my ( $Type, %Param ) = @_; # allocate new hash for object my $Self = {}; bless( $Self, $Type ); return $Self; } =head2 DataGet() Returns change data in an array reference. my $ChangeDataRef = $ConditionObjectITSMChange->DataGet( Selector => 1234, UserID => 2345, ); =cut sub DataGet { my ( $Self, %Param ) = @_; # check needed stuff for my $Argument (qw(Selector UserID)) { if ( !exists $Param{$Argument} || !defined $Param{$Argument} ) { $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'error', Message => "Need $Argument!", ); return; } } # remap params my %ChangeGet = ( ChangeID => $Param{Selector}, UserID => $Param{UserID}, ); # get change data as anon hash ref my $Change = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangeGet(%ChangeGet); # check for change return if !$Change; # build array ref my $ChangeData = [$Change]; return $ChangeData; } =head2 CompareValueList() Returns a list of available CompareValues for the given attribute id of a change object as hash reference. my $CompareValueList = $ConditionObjectITSMChange->CompareValueList( AttributeName => 'PriorityID', UserID => 1, ); Returns a hash reference like this, for the change attribute 'Priority': $CompareValueList = { 23 => '1 very low', 24 => '2 low', 25 => '3 normal', 26 => '4 high', 27 => '5 very high', } =cut sub CompareValueList { my ( $Self, %Param ) = @_; # check needed stuff for my $Argument (qw(AttributeName UserID)) { if ( !$Param{$Argument} ) { $Kernel::OM->Get('Kernel::System::Log')->Log( Priority => 'error', Message => "Need $Argument!", ); return; } } # to store the list my $CompareValueList = {}; # CategoryID, ImpactID, PriorityID if ( $Param{AttributeName} =~ m{ \A ( Category | Impact | Priority ) ID \z }xms ) { # remove 'ID' at the end of attribute my $Type = $1; # get the category or impact or priority list $CompareValueList = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangePossibleCIPGet( Type => $Type, UserID => $Param{UserID}, ); } # ChangeStateID elsif ( $Param{AttributeName} eq 'ChangeStateID' ) { # get change state list $CompareValueList = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangePossibleStatesGet( UserID => $Param{UserID}, ); } elsif ( $Param{AttributeName} eq 'ChangeBuilderID' || $Param{AttributeName} eq 'ChangeManagerID' ) { # get a complete list of users my %Users = $Kernel::OM->Get('Kernel::System::User')->UserList( Type => 'Long', Valid => 1, ); $CompareValueList = \%Users; } return $CompareValueList; } =head2 SelectorList() Returns a list of all selectors available for the given change object id and condition id as hash reference my $SelectorList = $ConditionObjectITSMChange->SelectorList( ObjectID => 1234, ConditionID => 5, UserID => 1, ); Returns a hash reference like this: $SelectorList = { 456 => 'Change# 2010011610000618', } =cut sub SelectorList { my ( $Self, %Param ) = @_; # get change data my $ChangeData = $Kernel::OM->Get('Kernel::System::ITSMChange')->ChangeGet( ChangeID => $Param{ChangeID}, UserID => $Param{UserID}, ); # check error return if !$ChangeData; # build selector list my %SelectorList = ( $ChangeData->{ChangeID} => $ChangeData->{ChangeNumber}, ); return \%SelectorList; } 1; =head1 TERMS AND CONDITIONS This software is part of the OTRS project (L). 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 L. =cut