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
Amrita Panda 2Amrita Panda 2 

How to sort manager field in both ascending and descending order in apex class?

component - 

  <th class="slds-is-sortable slds-text-title--caps" scope="col" onclick="{!c.sortName}"><div class="slds-truncate slds-cell-fixed" style="width: 980px;padding-left: 10px;padding-top: 10px;" title="Manager">Manager
                                             <aura:if isTrue="{! and(v.arrowDirection == 'arrowdown', v.selectedTabsoft == 'Manager') }">&nbsp;  &#9660; </aura:if>  
                                          <aura:if isTrue="{! and(v.arrowDirection != 'arrowdown', v.selectedTabsoft == 'Manager') }"> &nbsp;  &#9650; </aura:if>   
                                        </div></th>

controller.js 

 sortName: function(component, event, helper) {
       // set current selected header field on selectedTabsoft attribute.     
       component.set("v.selectedTabsoft", 'Manager');
       // call the helper function with pass sortField Name   
       helper.sortHelper(component, event, 'Manager');
    },

Helper.js

doinitHelper: function(component,event,QueueId){
        var action = component.get("c.fetchsearchuser");
        action.setParams({
            'SearchUserKeyword': ''
        });
        component.find("Id_spinner").set("v.class" , 'slds-show');
        // Tab Name
        var workspaceAPI = component.find("workspace");
        var TabName = component.get("v.TabName");
        workspaceAPI.getEnclosingTabId().then(function(tabId) {
                var focusedTabId = tabId;
                workspaceAPI.setTabLabel({
                    tabId: focusedTabId,
                    label: TabName 
                });
                workspaceAPI.setTabIcon({
                    tabId: focusedTabId,
                    icon: "standard:user",
                });
            })
        action.setCallback(this, function(response) {
            var state = response.getState();
               if (state === "SUCCESS") {
                component.find("Id_spinner").set("v.class" , 'slds-hide');
                var storeResponse = response.getReturnValue();
                console.log('User Load on Queue click'+storeResponse);
                // set searchResult list with return value from server.
                component.set("v.UserResult", storeResponse);
                //for(var i= 0; i<storeResponse.length; i++ )
                //alert(storeResponse[i].Role);
                component.set("v.ShowUserTable", true);
            }
         });
         $A.enqueueAction(action);
     },
     sortHelper: function(component, event, sortFieldName) {
           var action = component.get("c.fetchname");
        action.setParams({
            'sortField': ''
        });
      var currentDir = component.get("v.arrowDirection");
 
      if (currentDir == 'arrowdown') {
         // set the arrowDirection attribute for conditionally rendred arrow sign  
         component.set("v.arrowDirection", 'arrowup');
         // set the isAsc flag to true for sort in Assending order.  
         component.set("v.isAsc", true);
      } else {
         component.set("v.arrowDirection", 'arrowdown');
         component.set("v.isAsc", false);
      }
      // call the onLoad function for call server side method with pass sortFieldName 
      this.doinitHelper(component, event, sortFieldName);
   },


apex class-

   @AuraEnabled
   public static list < User > fetchname(String sortField, boolean isAsc) {
      String sSoql = 'SELECT Manager.name';
      sSoql += 'From User';
      system.debug('sortField-->' + sortField);
 
      if (sortField != '') {
         sSoql += ' order by ' + sortField;
 
    // if isAsc is equal tp ture then set 'asc' order otherwise set 'desc' order.
         if (isAsc) {
            sSoql += ' asc';
         } else {
            sSoql += ' desc';
         }
      }
   // set record limit to query 
      sSoql += ' LIMIT 20';
 
      System.debug('@Developer -->sSoql:' + sSoql);
      list <User> lstResult;
      try {
         system.debug('The query is' + sSoql);
         lstResult = Database.query(sSoql);
         List < User > returnConList = new List < User > ();
 
         for (User c: lstResult) {
            returnConList.add(c);
          }
         return returnConList;
      } 
      catch (Exception ex) {
         // for handle Exception
         return null;
      }
   }
 
Syed Insha Jawaid 2Syed Insha Jawaid 2
Hi Amrita

You are not setting the field for which you wish to sort in the server call?

action.setParams({
            'sortField': ''
        });

And just a suggestion you can sort the List in JS as well.This would reduce server hit count.

Cheers!!!!