0

I'm trying to avoid hardcoding Ids in my code. I want to do that with Custom Settings List 'TypeList' - got there field to hold record type ids 'TypeId'. Is there any chance to use Custom Setting List in SELECT FROM WHERE ?

Class:

public with sharing class contrlller{
        public Id Current_Acc_Id {get;set;}

        public contrlller(ApexPages.StandardController controller) {
            Case caseObject = (Case)controller.getRecord();
            Current_Acc_Id = caseObject.AccountId;
        }
        List<TypeList__C> mcs = TypeList__c.getall().values();

        public List<Case> getrelatedCases(){
            List <case> conList = new List<Case>();
            for(Case relatedCase: [SELECT CaseNumber, Case_Type__c, OwnerId, Origin, Id FROM Case WHERE (RecordTypeId != '01220000000VD9K' AND IsClosed!=True AND AccountId =:Current_Acc_Id)]){
                conList.add(relatedCase); 
            }
            return conList;
        }
    }

VP

    <apex:page standardController="Case" extensions="contrlller">
 <apex:includeScript value="/support/console/29.0/integration.js"/>
    <script type="text/javascript">           
        function openSubTab(recId){
            var redirectUrl = recId;
            if (sforce.console.isInConsole()) {
                sforce.console.getEnclosingTabId(function(enclosingResult){
                    sforce.console.getEnclosingPrimaryTabId(function(primaryResult){
                        sforce.console.openSubtab(primaryResult.id, redirectUrl, true, '', null);
                    });
                });
            } else {
                window.open('/'+redirectUrl,'name',
                'left=20,top=20,width=500,height=500,toolbar=1,resizable=0');

            }
        }        
    </script>

   <apex:form >
    <apex:pageblock >
       <apex:pageBlockTable value="{!relatedCases}" var="val">
        {!Case.AccountId}
         <apex:column headerValue="CaseNumber">              
                <a href="#" onclick="openSubTab('{!val.Id}');">{!val.CaseNumber}</a>
            </apex:column>     

         <apex:facet name="header"><apex:outputText value="Open Customer Service Cases " style="color:red"/></apex:facet>          
         <apex:column headerValue="CaseNumber">     
         <apex:commandLink value="{!val.CaseNumber}" action="/console?{!val.Id}" target="_blank" />
         </apex:column>
         <apex:column value="{!val.RecordTypeId}"/>      
         <apex:column value="{!val.Case_Type__c}"/>
         <apex:column value="{!val.OwnerId}"/>




       </apex:pageBlockTable> 
    </apex:pageblock>
  </apex:form>
</apex:page>
2
  • Your custom setting will store Id of multiple record types or only one?
    – Ankita
    Jul 18 '17 at 7:47
  • Now only one but in future it will store more of them.
    – Jacob K
    Jul 18 '17 at 7:53
0

If your custom setting has only one record, then you can fetch the all the values and store the record Id in one variable and use it for comparison.

List<TypeList__C> mcs = TypeList__c.getall().values();
Id recordTypeId;
if(mcs != null && mcs.size() > 0){
    recordTypeId = mcs[0].TypeId;
}

public List<Case> getrelatedCases(){
   List <case> conList = new List<Case>();
   for(Case relatedCase: [SELECT CaseNumber, Case_Type__c, OwnerId, Origin, Id FROM Case WHERE (RecordTypeId !=:recordTypeId  AND IsClosed!=True AND AccountId =:Current_Acc_Id)]){
       conList.add(relatedCase); 
   }
   return conList;
} 

Suggestion: Instead of storing the record type Id values in custom settings, query it from RecordType object or using RecordTypeInfo class.

Refer RecordTypeInfo class in Salesforce

1
  • Got this with different way. Just created UniqueId formula field on my Case, This field is checkbox If(RecordTypeId=="01220000000VD9K",true,false) and i just added in my code WHERE UniqueId__c != True. In future i can switch If with Case and add more ids.
    – Jacob K
    Jul 18 '17 at 10:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.