function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Pubali Banerjee 2Pubali Banerjee 2 

I have an wrapper class , whose list is returned in the method. how to sort this list based on a checkbox field?

I have an wrapper class , whose list is returned in the method. how to sort this list based on a checkbox field ( in my case it is My target field)? I want to sort it as all records with  My target =false must show up first.

Wrapper class:
public class tsfwrapper {
        
        @AuraEnabled
        public string accountName{get;set;}
        @AuraEnabled
        public string TSFId{get;set;}
        @AuraEnabled
        public Id accountId{get;set;}
        @AuraEnabled
        public string territoryName{get;set;}
        @AuraEnabled
        public decimal YTDActivity{get;set;}
        @AuraEnabled
        public date lastActivityDate{get;set;}
        @AuraEnabled
        public boolean alignmentRequest{get;set;}
        @AuraEnabled
        public boolean myTarget{get;set;}
          @AuraEnabled
        public string preferredAddress{get;set;}
        @AuraEnabled
        public string preferredLocation{get;set;}
    }

Method where wrapper list is returned:

for(Account acc: accList)
    {
        Id accIdVar = acc.Id;
        system.debug('*****Account ID'+accIdVar);
        tsfwrapper twrpc = new tsfwrapper();
        if(tsfMap.Keyset().contains(accIdVar)){
        if(tsfMap.get(accIdVar)!=null){
           
                twrpc.TSFId = tsfMap.get(accIdVar).Id;
                twrpc.accountName = tsfMap.get(accIdVar).Account_vod__r.Name;
                twrpc.accountId = tsfMap.get(accIdVar).Account_vod__c;   
                twrpc.territoryName = tsfMap.get(accIdVar).Territory_vod__c;
                twrpc.YTDActivity = tsfMap.get(accIdVar).YTD_Activity_vod__c;
                twrpc.lastActivityDate = tsfMap.get(accIdVar).Last_Activity_Date_vod__c;
                twrpc.alignmentRequest = tsfMap.get(accIdVar).MSD_Alignment_Request__c;
                twrpc.myTarget = tsfMap.get(accIdVar).My_Target_vod__c;
                twrpc.preferredAddress = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Address__c;
                twrpc.preferredLocation = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Location__c;
        }
        }
        else
        {
            system.debug('******Inside Null List');
                   twrpc.TSFId = '';
                   twrpc.accountName = acc.Name;
                   twrpc.accountId = acc.Id;   
                   twrpc.territoryName = terrName;
                   twrpc.YTDActivity = 0.0;
                   twrpc.lastActivityDate = Null ;
                   twrpc.alignmentRequest = false;
                   twrpc.myTarget = false;
                     twrpc.preferredAddress = '';
                   twrpc.preferredLocation = '';  
                    
         }
        
        twrp.add(twrpc);  
    }
    return twrp; 

 
Best Answer chosen by Pubali Banerjee 2
Maharajan CMaharajan C
Hi  Pubali,

To aheive this there is small changes is required in wrapper class:
 
public class tsfwrapper implements Comparable {
    @AuraEnabled
    public string accountName{get;set;}
    @AuraEnabled
    public string TSFId{get;set;}
    @AuraEnabled
    public Id accountId{get;set;}
    @AuraEnabled
    public string territoryName{get;set;}
    @AuraEnabled
    public decimal YTDActivity{get;set;}
    @AuraEnabled
    public date lastActivityDate{get;set;}
    @AuraEnabled
    public boolean alignmentRequest{get;set;}
    @AuraEnabled
    public boolean myTarget{get;set;}
    @AuraEnabled
    public string preferredAddress{get;set;}
    @AuraEnabled
    public string preferredLocation{get;set;}
    
    public Integer compareTo(Object compareTo) 
    {
        tsfwrapper wrap = (tsfwrapper) compareTo;
        if (True == wrap.myTarget) return 0;
        if (False == wrap.myTarget) return 1;
        return -1;        
    }
}


Method where wrapper list is returned:

Add the line twrp.sort();  after  twrp.add(twrpc);
for(Account acc: accList)
    {
        Id accIdVar = acc.Id;
        system.debug('*****Account ID'+accIdVar);
        tsfwrapper twrpc = new tsfwrapper();
        if(tsfMap.Keyset().contains(accIdVar)){
        if(tsfMap.get(accIdVar)!=null){
           
                twrpc.TSFId = tsfMap.get(accIdVar).Id;
                twrpc.accountName = tsfMap.get(accIdVar).Account_vod__r.Name;
                twrpc.accountId = tsfMap.get(accIdVar).Account_vod__c;   
                twrpc.territoryName = tsfMap.get(accIdVar).Territory_vod__c;
                twrpc.YTDActivity = tsfMap.get(accIdVar).YTD_Activity_vod__c;
                twrpc.lastActivityDate = tsfMap.get(accIdVar).Last_Activity_Date_vod__c;
                twrpc.alignmentRequest = tsfMap.get(accIdVar).MSD_Alignment_Request__c;
                twrpc.myTarget = tsfMap.get(accIdVar).My_Target_vod__c;
                twrpc.preferredAddress = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Address__c;
                twrpc.preferredLocation = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Location__c;
        }
        }
        else
        {
            system.debug('******Inside Null List');
                   twrpc.TSFId = '';
                   twrpc.accountName = acc.Name;
                   twrpc.accountId = acc.Id;   
                   twrpc.territoryName = terrName;
                   twrpc.YTDActivity = 0.0;
                   twrpc.lastActivityDate = Null ;
                   twrpc.alignmentRequest = false;
                   twrpc.myTarget = false;
                     twrpc.preferredAddress = '';
                   twrpc.preferredLocation = '';  
                    
         }
        
        twrp.add(twrpc); 
        twrp.sort(); 
    }
    return twrp;

Thanks,
Maharajan.C

All Answers

Maharajan CMaharajan C
Hi  Pubali,

To aheive this there is small changes is required in wrapper class:
 
public class tsfwrapper implements Comparable {
    @AuraEnabled
    public string accountName{get;set;}
    @AuraEnabled
    public string TSFId{get;set;}
    @AuraEnabled
    public Id accountId{get;set;}
    @AuraEnabled
    public string territoryName{get;set;}
    @AuraEnabled
    public decimal YTDActivity{get;set;}
    @AuraEnabled
    public date lastActivityDate{get;set;}
    @AuraEnabled
    public boolean alignmentRequest{get;set;}
    @AuraEnabled
    public boolean myTarget{get;set;}
    @AuraEnabled
    public string preferredAddress{get;set;}
    @AuraEnabled
    public string preferredLocation{get;set;}
    
    public Integer compareTo(Object compareTo) 
    {
        tsfwrapper wrap = (tsfwrapper) compareTo;
        if (True == wrap.myTarget) return 0;
        if (False == wrap.myTarget) return 1;
        return -1;        
    }
}


Method where wrapper list is returned:

Add the line twrp.sort();  after  twrp.add(twrpc);
for(Account acc: accList)
    {
        Id accIdVar = acc.Id;
        system.debug('*****Account ID'+accIdVar);
        tsfwrapper twrpc = new tsfwrapper();
        if(tsfMap.Keyset().contains(accIdVar)){
        if(tsfMap.get(accIdVar)!=null){
           
                twrpc.TSFId = tsfMap.get(accIdVar).Id;
                twrpc.accountName = tsfMap.get(accIdVar).Account_vod__r.Name;
                twrpc.accountId = tsfMap.get(accIdVar).Account_vod__c;   
                twrpc.territoryName = tsfMap.get(accIdVar).Territory_vod__c;
                twrpc.YTDActivity = tsfMap.get(accIdVar).YTD_Activity_vod__c;
                twrpc.lastActivityDate = tsfMap.get(accIdVar).Last_Activity_Date_vod__c;
                twrpc.alignmentRequest = tsfMap.get(accIdVar).MSD_Alignment_Request__c;
                twrpc.myTarget = tsfMap.get(accIdVar).My_Target_vod__c;
                twrpc.preferredAddress = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Address__c;
                twrpc.preferredLocation = tsfMap.get(accIdVar).MSD_CORE_My_Last_Used_Location__c;
        }
        }
        else
        {
            system.debug('******Inside Null List');
                   twrpc.TSFId = '';
                   twrpc.accountName = acc.Name;
                   twrpc.accountId = acc.Id;   
                   twrpc.territoryName = terrName;
                   twrpc.YTDActivity = 0.0;
                   twrpc.lastActivityDate = Null ;
                   twrpc.alignmentRequest = false;
                   twrpc.myTarget = false;
                     twrpc.preferredAddress = '';
                   twrpc.preferredLocation = '';  
                    
         }
        
        twrp.add(twrpc); 
        twrp.sort(); 
    }
    return twrp;

Thanks,
Maharajan.C
This was selected as the best answer
Pubali Banerjee 2Pubali Banerjee 2
Thank you so much Maharajan!! It worked.
One request, i have posted another question on draft values, please check if you time :)
Question URL: https://developer.salesforce.com/forums/ForumsMain?id=9062I000000gBozQAE