[rt-users] Set priority based on requestor's group membership

Raed El-Hames rfh at vialtus.com
Thu May 28 13:02:33 EDT 2009


Just finished working on something very similar , I am guessing the top 
sales guys would be the one creating a ticket, if this is the case you 
can do a scrip:


my $CreatorObj = $self->TicketObj->CreatorObj ;
my $org = $CreatorObj->GroupMembership ;

if ( $org  eq 'The group you need') {
    $self->TicketObj->SetPriority(80);
}
return undef;

The function GroupMembership I created in User_Vendor.pm (or 
User_Overlay.pm pending which ever you are using):

sub GroupMembership {
        # Identify a group\s a user belong to
        # Used in scrip action in queues

        # Expects a user id and return group name
        # If user belong to more than one it returns comma seperated list

        my $self = shift;
        my $MemberId = $self->Id ;

        my $group_list = '';

        my $Groups = RT::Groups->new($RT::SystemUser);
        $Groups->Limit( FIELD => 'Domain',OPERATOR => '=', VALUE => 
'SystemInternal');
        $Groups->Limit( FIELD => 'Domain',OPERATOR => '=', VALUE => 
'UserDefined');

        my $alias = $Groups->Join(
                TYPE       => 'left',
                ALIAS1     => 'main',
                FIELD1     => 'id',
                TABLE2     => 'GroupMembers',
                FIELD2     => 'GroupId'
        );
        $Groups->Limit(
                ALIAS      => $alias,
                FIELD      => 'MemberId',
                OPERATOR   => '=',
                VALUE      => $MemberId,
        );

        while ( my $Group = $Groups->Next ) {
                $group_list = $group_list.",".$Group->Name ;

        }
        $group_list =~ s/^,+// ;
        return $group_list ;
}


I am not 100% on the SetPriority syntax -you may need to check it--, we 
do n't use priority we use custom fields resembling priority.
Also note  if the Creator (person) is a member of more than one group 
then the $org will be list of group names separated by a comma , in that 
case you maybe better off doing:
if ( $org  =~ /The group name you need/) {
    $self->TicketObj->SetPriority(80);
}

Regards;
Roy


Steve Hopps wrote:
> Hi there, at our company there's a group of people who get 
> preferential treatment because they're top sales guys, and in order to 
> make it easier on our helpdesk techs, I'd like to have their tickets 
> be prioritized automatically based on membership to a group.
>
> I'm not sure how to do a check for group membership in a scrip, I've 
> been looking through the mail archives but haven't had any luck so 
> far. Can anyone recommend how to do this?
>
> Basically I want the scrip to trigger if they're a member, and set the 
> priority to something (say 80) on creation, and that's all. Any help 
> would be appreciated on this one. Thanks!
>
> -Steve



More information about the rt-users mailing list