-2

I want to write trigger to restrict user to delete the record.

I have two public groups: group1 and group2.

if the current user does not belongs to group1 or group2

and

if current user is not a system administarator

and

if current user not equal to record owner they cant able delete the record

then i am getting null pointer exceprtion at line 5:

trigger restrictquotelineitem  on Quote_Line_Item__c (before delete) {
    Set<Id> quotelineitemids = new Set<Id>();

    String uId=UserInfo.getUserId();

    User u= [Select Lastname from User Where Id=:uid];

    GroupMember listGroupMembers = 
        [Select 
            UserOrGroupId 
         From 
            GroupMember 
         Where 
            GroupId in (Select Id From Group Where Name='France Quote sahring team') 
            And UserOrGroupId =:uid 
         Order By 
            UserOrGroupid 
         Limit 1];

    GroupMember listGroupMembers1 = 
        [Select 
            UserOrGroupid
            ,GroupId 
         From 
            GroupMember 
         Where 
            GroupId in (Select Id From Group Where Name='US Sales Team') 
            And UserOrGroupId =:uid 
         Order By 
            UserOrGroupId 
         Limit 1];

         User u1=[select lastname from user where id=:listGroupMembers1.userorgroupid];

    for(Quote_line_item__c q: trigger.new){
        if(listgroupmembers1 !=null || listgroupmembers!=null 
            || (uid!='00590000000f0sRAAQ' && q.ownerid!=uid)){
         q.adderror('you dont have peremission to delete this record');   
        }       
    }
}
Sergej Utko
  • 22,020
  • 11
  • 59
  • 88
Teja
  • 1,422
  • 4
  • 27
  • 58

1 Answers1

0

Is it a Null pointer exception or a SOQL Query exception? I can see the latter happening since you have misspelled "France Quote sahring team" in the first query. Since (likely) no match is happening, and you are setting the results to a single record instead of a list, this will throw a SOQL query exception.

Furthermore, you can do a lot to improve on your code. For starters, you should be able to get rid of the inner queries in your groupmember SOQL, you can combine the two group member queries, and you're querying for your User's Lastname twice, but never using the results of that query that I can see.

James Loghry
  • 6,241
  • 1
  • 22
  • 49