• SIVA KUMAR 507
  • NEWBIE
  • 55 Points
  • Member since 2021

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 13
    Questions
  • 22
    Replies
Hi All,
Apex Class
---------------

public with sharing class TriggerServiceImpl implements TriggerService{
    
    private static TriggerServiceImpl instance;

    private static Trigger_Settings__c setting = Trigger_Settings__c.getInstance();
        

    public static TriggerServiceImpl getInstance(){
        if(instance==null){
            instance = new TriggerServiceImpl();
        }
        return instance;
    }

    public Boolean bypassTriggerLogic(String triggerName){
       if(setting!=null){
            return (
               setting.Is_Active__c &&
               setting.Triggers_To_Disable__c?.contains(triggerName)
            );
        }
        return false;
    }

    public Boolean bypassOpportunityTriggerLogic(){
        return setting.Opportunity_Trigger_Disable__c;
    }

    public static void toggleCPQTriggers(){
        if(setting.Disable_CPQ_Triggers__c){
            disableCPQTriggers();
        } else {
            enableCPQTriggers();
        }
    }

    public static void disableCPQTriggers(){
        if(SBQQ.TriggerControl.isEnabled()){
            SBQQ.TriggerControl.disable();
        }
    }

    public static void enableCPQTriggers(){
        if(!SBQQ.TriggerControl.isEnabled()){
            SBQQ.TriggerControl.enable();
        }
    }
Related Class
---------------
public interface TriggerService {
    Boolean bypassTriggerLogic(String triggerName);
}

Thanks,
Siva K
hi guys
i want to know to how to bypass flows in  salesforce.

thanks in advance,
siva
i have 2 users in salesforce org whenever the  user1 is inactive i want to assign the all records created by user1  to user2...

thanks in advance
Apex Class:
________________


public without sharing class AskEDD_SearchCtrl {

    @AuraEnabled
    public static Map<String, Object> searchData(String searchTerm) {
        Map<String, Object> returnMap = new Map<String, Object>();
        //List<Knowledge__kav> knowledgeList = [SELECT Body__c,PublishStatus,Summary,Title,UrlName FROM Knowledge__kav WHERE PublishStatus = 'Online' AND ];
        /*String knowledgeSearchQuery = 'SELECT Body__c,PublishStatus,Summary,Title,UrlName FROM Knowledge__kav WHERE PublishStatus = \'Online\' ' + ' AND ( Body__c like\'%' + searchTerm + '%\'';
        List<Knowledge__kav> articlesList = Database.query(knowledgeSearchQuery);*/
        //List<List<SObject>> searchList = [FIND 'test' IN ALL FIELDS RETURNING Knowledge__kav(Body__c,Titlef), CategoryData(FirstName,LastName)];
        List<List<SObject>> searchList = [FIND :searchTerm IN ALL FIELDS RETURNING AskEDD_Category_Detail__c(Name,Category_Sub_Category__c,Text__c), Knowledge__kav(Body__c,Title)];
        returnMap.put('categoryList',searchList[0]);
        returnMap.put('KnowledgeList',searchList[1]);
        return returnMap;
    }
}
Apex Class:
______________
global class AskEDD_ArticleDataCategories implements Schedulable {
    global void execute(SchedulableContext ctx) {
        List<Knowledge__DataCategorySelection> dataCategories = [SELECT Id, DataCategoryGroupName, DataCategoryName, ParentId 
                                                                 FROM     Knowledge__DataCategorySelection 
                                                                 WHERE     SystemModstamp >= LAST_N_DAYS:1];
        if(dataCategories.Size() > 0) {
            List<String> parentIds = new List<String>();
            for(Knowledge__DataCategorySelection dataCategory : dataCategories) {
                parentIds.add(dataCategory.ParentId);
            }
            dataCategories = [SELECT     Id, DataCategoryGroupName, DataCategoryName, ParentId 
                              FROM         Knowledge__DataCategorySelection 
                              WHERE     ParentId IN: parentIds];            
            
            Map<String, String> parentIdMap = new Map<String, String>();
            for(Knowledge__DataCategorySelection dataCategory : dataCategories) {
                if(parentIdMap.get(dataCategory.ParentId) == null) {
                    parentIdMap.put(dataCategory.ParentId, dataCategory.DataCategoryName);
                }
                else {
                    String temp = parentIdMap.get(dataCategory.ParentId) + ';' + dataCategory.DataCategoryName;
                    parentIdMap.put(dataCategory.ParentId, temp);
                }
            }
            
            List<Knowledge__kav> articles = [SELECT Id, AskEDD_Category__c FROM Knowledge__kav WHERE Id IN: parentIdMap.keySet() AND PublishStatus = 'Draft'];
            for(Knowledge__kav article : articles) {
                article.AskEDD_Category__c = parentIdMap.get(article.Id);
            }
            
            update articles;
        }
    }
}
Apex Class:
_________
@RestResource(urlMapping='/v1/KnowledgeArticles/*')
global with sharing class KnowledgeMigrationService {
    @HttpPost
    global static String createArticle(String articleJsonStr) {
    Knowledge__kav article = (Knowledge__kav)System.JSON.deserialize(EncodingUtil.urlDecode(articleJsonStr,'UTF-8'), Knowledge__kav.class);
        List<Knowledge__kav> articles = [SELECT Id, PublishStatus, Body__c, Title, UrlName, ArticleNumber, KnowledgeArticleId FROM Knowledge__kav WHERE UrlName =: article.UrlName];
        if(articles.Size() == 0) {
            article.Id = null;
            insert article;
            
            return 'New article created';
        }
        else if(articles[0].PublishStatus == 'Draft') {
      article.Id = articles[0].Id;
            update article; 
            
            return 'Existing draft status article updated';
        }
        else if(articles[0].PublishStatus == 'Online') {
            String id = KbManagement.PublishingService.editOnlineArticle(articles[0].KnowledgeArticleId, false);
            
            List<Knowledge__kav> articles2 = [SELECT Id, PublishStatus, Body__c, Title, UrlName, ArticleNumber, KnowledgeArticleId FROM Knowledge__kav WHERE UrlName =: article.UrlName AND PublishStatus = 'Draft'];
      article.Id = articles2[0].Id;
            update article;
            
            KbManagement.PublishingService.publishArticle(articles2[0].KnowledgeArticleId, false);
            
            return 'Existing published status article updated';
        }
        else if(articles[0].PublishStatus == 'Archived') {
            String id = KbManagement.PublishingService.editArchivedArticle(articles[0].KnowledgeArticleId);
            
            List<Knowledge__kav> articles2 = [SELECT Id, PublishStatus, Body__c, Title, UrlName, ArticleNumber, KnowledgeArticleId FROM Knowledge__kav WHERE UrlName =: article.UrlName AND PublishStatus = 'Draft'];
      article.Id = articles2[0].Id;
            update article; 
            
            KbManagement.PublishingService.publishArticle(articles2[0].KnowledgeArticleId, false);
            KbManagement.PublishingService.archiveOnlineArticle(articles2[0].KnowledgeArticleId, null);
            
             return 'Existing archived status article updated';
        }
        
        return 'success';
    }
}
Apex Class:
_______________
global with sharing class FlowListController {

    @AuraEnabled(cacheable=true)
    public static List<FlowDefinitionView> getFlowNamesApex(String filtersString) {

        String queryString = 'SELECT Id, ApiName, Label FROM FlowDefinitionView ';

        if (filtersString != null) {
            Map<String, List<String>> filters = (Map<String, List<String>>) JSON.deserialize(filtersString, Map<String, List<String>>.class);
            if (!filters.isEmpty()) {
                queryString += ' WHERE ';
                Boolean isFirst = true;
                for (String fieldName : filters.keySet()) {
                    List<String> values = filters.get(fieldName);
                    String negativeClause = fieldName.contains('!') ? (values.size() > 1 ? 'NOT ' : '!') : '';
                    String operator = values.size() == 1 ? '= ' : 'IN ';
                    String value = values.size() == 1 ? values[0] : '(\'' + String.join(values, '\',\'') + '\')';
                    queryString += (!isFirst ? ' AND ' : ' ') + fieldName.replace('!', '') + ' ' + negativeClause + operator + value;
                    isFirst = false;
                }
            }
        }

        return (List<FlowDefinitionView>) Database.query(queryString);
    }
}
Apex Class:
______________

public class AskEDD_ArticleAction {
    @InvocableMethod
    public static List<FlowOutputs> updateArticleTypeForDataCategories(List<FlowInputs> articleType) 
    {
        List<Knowledge__kav> lstArticleType = [SELECT Id, Title, AskEDD_Category__c FROM Knowledge__kav WHERE Id =:articleType[0].recordId AND (PublishStatus = 'draft' OR Approval_Status__c = 'Pending Approval')];

        List<Knowledge__DataCategorySelection> lstDC = [SELECT ParentId, DataCategoryName   FROM Knowledge__DataCategorySelection
                                                            WHERE ParentId =:articleType[0].recordId];
List<FlowOutputs> outputlist = new List<FlowOutputs>();
        
        FlowOutputs output = new FlowOutputs();
        
        Map<Id, String> datacategoryNameMap = new Map<Id, String>();

        for(Knowledge__DataCategorySelection dcObj:lstDC)
        {   
            if(datacategoryNameMap.containsKey(dcObj.ParentId))
            {
                String str =  datacategoryNameMap.get(dcObj.ParentId);
                datacategoryNameMap.put(dcObj.ParentId, str + ',' + dcObj.DataCategoryName);
            }
            else
            {
                datacategoryNameMap.put(dcObj.ParentId, dcObj.DataCategoryName);
            }
        }

        for(Knowledge__kav artObj:lstArticleType)
        {
            if(datacategoryNameMap.containsKey(artObj.Id))
            {
                artObj.AskEDD_Category__c = datacategoryNameMap.get(artObj.Id);
                
                if (String.isEmpty(artObj.AskEDD_Category__c)){
                     output.noCategory = true;
                    outputlist.add(output);
                    return outputlist;
                } 
                else {
                     output.noCategory = false;
                    outputlist.add(output);
                }
         //     output.categoryString  = artObj.AskEDD_Category__c;
            }
        }

     //   update lstArticleType;
        return outputlist;
       }  
    public class FlowInputs {
        @InvocableVariable
        public string recordId;
    }
    public class FlowOutputs {
        @InvocableVariable
        public boolean noCategory;
    }
}
Apex Class:
____________
public class EDDKMSCreateArticleFromTemplate {
  @AuraEnabled
    public static List<Knowledge_Article_Template__c> getKnowledgeArticleTemplates() {
        try {
          return [SELECT Id, Name FROM Knowledge_Article_Template__c];
        }
        catch(Exception ex) {
            throw new AuraHandledException(ex.getMessage());
        }
    }
    
    @AuraEnabled
    public static TemplateWrapper getKnowledgeArticleTemplateBody(String templateId, String templateName) {
        try {
            TemplateWrapper wrapper = new TemplateWrapper();
            if(Schema.SObjectType.Knowledge__kav.getRecordTypeInfosByName().get(templateName) != null) 
                wrapper.recordTypeId = Schema.SObjectType.Knowledge__kav.getRecordTypeInfosByName().get(templateName).getRecordTypeId(); 
            else
                wrapper.recordTypeId = '';
            
            wrapper.template = [SELECT   Id, Name, Template_Body__c, OT_Body__c, CF_Body__c, DET_Body__c,
                                    ADJ_Body__c, MGR_OT_EPR_Body__c, MGR_UISD_Body__c
                                FROM  Knowledge_Article_Template__c
                                WHERE  Id =: templateId];
            return wrapper;
        }
        catch(Exception ex) {
            throw new AuraHandledException(ex.getMessage());
        }        
    }
    
    public class TemplateWrapper {
        @AuraEnabled public String recordTypeId {get;set;}
        @AuraEnabled public Knowledge_Article_Template__c template {get;set;}
    }
}
Class:
---------
public class AskEDD_casecommentcreation {
@InvocableMethod
    public static void ProcessBuilder_Call(list<Id> TaskId)
    {
        List<id> taskIds = new list<id>();
        list<CaseComment> CCList = new list<CaseComment>();
        list<Task> td = new list<Task>();
        list<caseFeed> fi = new list<caseFeed>();
        list<TaskFeed> ti = new list<TaskFeed>();
        list<id> caseIds = new list<id>();
        for(Id a : TaskId)
        {
            taskIds.add(a);
        }
        system.debug('Task Id is ****' +taskIds);
        list<Task> tasklist = [select id, Description, WhatId from Task where id in: TaskId];
        for (Task taskRecord : tasklist){
         caseIds.add(taskRecord.WhatId);   
             system.debug('Case Id is ****' +taskRecord.WhatId);
        }
        
        fi = [select id, parentId, Type from caseFeed where parentId IN: caseIds and Type = 'CaseCommentPost'];
        ti = [select id, parentId, Type from TaskFeed];
        
        system.debug('fi = '+fi);
        system.debug('ti = '+ti);

        
        for(task t : tasklist){
            system.debug('Task t Id is **** '+t);
            CaseComment cc = new CaseComment();
            cc.CommentBody = t.Description;
            cc.ParentId = t.WhatId;
            CCList.add(cc);

      Task Deletet = new Task();
            Deletet.id = t.id;
      td.add(Deletet);
        }
        insert CCList;
        system.debug('CCList is ****'+ CCList);
       // delete ti;
      //  delete fi;
      //  system.debug('Delete feedItem list is ******'+fi);
    //    delete tasklist;
        system.debug('Delete list is ******'+tasklist);
        
    }
}
Hi team,

Apex Class:
----------------

public class AskEDD_ArticleAction {
    @InvocableMethod
    public static List<FlowOutputs> updateArticleTypeForDataCategories(List<FlowInputs> articleType) 
    {
        List<Knowledge__kav> lstArticleType = [SELECT Id, Title, AskEDD_Category__c FROM Knowledge__kav WHERE Id =:articleType[0].recordId AND (PublishStatus = 'draft' OR Approval_Status__c = 'Pending Approval')];

        List<Knowledge__DataCategorySelection> lstDC = [SELECT ParentId, DataCategoryName   FROM Knowledge__DataCategorySelection
                                                            WHERE ParentId =:articleType[0].recordId];
List<FlowOutputs> outputlist = new List<FlowOutputs>();
        
        FlowOutputs output = new FlowOutputs();
        
        Map<Id, String> datacategoryNameMap = new Map<Id, String>();

        for(Knowledge__DataCategorySelection dcObj:lstDC)
        {   
            if(datacategoryNameMap.containsKey(dcObj.ParentId))
            {
                String str =  datacategoryNameMap.get(dcObj.ParentId);
                datacategoryNameMap.put(dcObj.ParentId, str + ',' + dcObj.DataCategoryName);
            }
            else
            {
                datacategoryNameMap.put(dcObj.ParentId, dcObj.DataCategoryName);
            }
        }

        for(Knowledge__kav artObj:lstArticleType)
        {
            if(datacategoryNameMap.containsKey(artObj.Id))
            {
                artObj.AskEDD_Category__c = datacategoryNameMap.get(artObj.Id);
                
                if (String.isEmpty(artObj.AskEDD_Category__c)){
                     output.noCategory = true;
                    outputlist.add(output);
                    return outputlist;
                } 
                else {
                     output.noCategory = false;
                    outputlist.add(output);
                }
         //     output.categoryString  = artObj.AskEDD_Category__c;
            }
        }

     //   update lstArticleType;
        return outputlist;
       }  
    public class FlowInputs {
        @InvocableVariable
        public string recordId;
    }
    public class FlowOutputs {
        @InvocableVariable
        public boolean noCategory;
    }
}
public with sharing class AskEddCaseInfo {
    @AuraEnabled(Cacheable=true)
    public static Map<String,Object>  getInitData(){
        Map<String,Object> returnMap = new Map<String,Object>();
        Map<String, Object> categories = AskEDD_HomeCategoriesCtrl.fetchTitleNames();
        Map<String, List<Map<String, String>>> subcategories =PickListUtility.getDependentPicklistOptions('Case','Sub_Category__c');
        returnMap.put('categories',categories);
        returnMap.put('subCategories',subcategories);
        return returnMap;
    }
    // @AuraEnabled(Cacheable=true)
    // public static List<Case> getTopic(String category,String subcategory){
    //     List<Case> topicList;
    //     if(category !='' && subcategory !=''){
    //         topicList = [Select Subject from Case where Category__c =:category and Sub_Category__c =:subcategory];
    //     }
    //     return topicList;
    // }

}
1. Create Accounts - Google, Amazon, StackNexus
2. These accounts will have website field values as google.com, amazon.com, stacknexus.io
3. Create contacts in bulk using the execute anonymous window
- The contacts created should have email ids from these three company domains
- for example test@google.com, test1@amazon.com, test2@stacknexus.io, test3@google.com
- create these using for loop
4. In the trigger, the contacts should be assigned the accounts which match the website with the email domain
5. all these should be bulkified

Thanks in advance,
siva kumar reddy
Apex Class:
______________
global class AskEDD_ArticleDataCategories implements Schedulable {
    global void execute(SchedulableContext ctx) {
        List<Knowledge__DataCategorySelection> dataCategories = [SELECT Id, DataCategoryGroupName, DataCategoryName, ParentId 
                                                                 FROM     Knowledge__DataCategorySelection 
                                                                 WHERE     SystemModstamp >= LAST_N_DAYS:1];
        if(dataCategories.Size() > 0) {
            List<String> parentIds = new List<String>();
            for(Knowledge__DataCategorySelection dataCategory : dataCategories) {
                parentIds.add(dataCategory.ParentId);
            }
            dataCategories = [SELECT     Id, DataCategoryGroupName, DataCategoryName, ParentId 
                              FROM         Knowledge__DataCategorySelection 
                              WHERE     ParentId IN: parentIds];            
            
            Map<String, String> parentIdMap = new Map<String, String>();
            for(Knowledge__DataCategorySelection dataCategory : dataCategories) {
                if(parentIdMap.get(dataCategory.ParentId) == null) {
                    parentIdMap.put(dataCategory.ParentId, dataCategory.DataCategoryName);
                }
                else {
                    String temp = parentIdMap.get(dataCategory.ParentId) + ';' + dataCategory.DataCategoryName;
                    parentIdMap.put(dataCategory.ParentId, temp);
                }
            }
            
            List<Knowledge__kav> articles = [SELECT Id, AskEDD_Category__c FROM Knowledge__kav WHERE Id IN: parentIdMap.keySet() AND PublishStatus = 'Draft'];
            for(Knowledge__kav article : articles) {
                article.AskEDD_Category__c = parentIdMap.get(article.Id);
            }
            
            update articles;
        }
    }
}
Apex Class:
_______________
global with sharing class FlowListController {

    @AuraEnabled(cacheable=true)
    public static List<FlowDefinitionView> getFlowNamesApex(String filtersString) {

        String queryString = 'SELECT Id, ApiName, Label FROM FlowDefinitionView ';

        if (filtersString != null) {
            Map<String, List<String>> filters = (Map<String, List<String>>) JSON.deserialize(filtersString, Map<String, List<String>>.class);
            if (!filters.isEmpty()) {
                queryString += ' WHERE ';
                Boolean isFirst = true;
                for (String fieldName : filters.keySet()) {
                    List<String> values = filters.get(fieldName);
                    String negativeClause = fieldName.contains('!') ? (values.size() > 1 ? 'NOT ' : '!') : '';
                    String operator = values.size() == 1 ? '= ' : 'IN ';
                    String value = values.size() == 1 ? values[0] : '(\'' + String.join(values, '\',\'') + '\')';
                    queryString += (!isFirst ? ' AND ' : ' ') + fieldName.replace('!', '') + ' ' + negativeClause + operator + value;
                    isFirst = false;
                }
            }
        }

        return (List<FlowDefinitionView>) Database.query(queryString);
    }
}
Apex Class:
______________

public class AskEDD_ArticleAction {
    @InvocableMethod
    public static List<FlowOutputs> updateArticleTypeForDataCategories(List<FlowInputs> articleType) 
    {
        List<Knowledge__kav> lstArticleType = [SELECT Id, Title, AskEDD_Category__c FROM Knowledge__kav WHERE Id =:articleType[0].recordId AND (PublishStatus = 'draft' OR Approval_Status__c = 'Pending Approval')];

        List<Knowledge__DataCategorySelection> lstDC = [SELECT ParentId, DataCategoryName   FROM Knowledge__DataCategorySelection
                                                            WHERE ParentId =:articleType[0].recordId];
List<FlowOutputs> outputlist = new List<FlowOutputs>();
        
        FlowOutputs output = new FlowOutputs();
        
        Map<Id, String> datacategoryNameMap = new Map<Id, String>();

        for(Knowledge__DataCategorySelection dcObj:lstDC)
        {   
            if(datacategoryNameMap.containsKey(dcObj.ParentId))
            {
                String str =  datacategoryNameMap.get(dcObj.ParentId);
                datacategoryNameMap.put(dcObj.ParentId, str + ',' + dcObj.DataCategoryName);
            }
            else
            {
                datacategoryNameMap.put(dcObj.ParentId, dcObj.DataCategoryName);
            }
        }

        for(Knowledge__kav artObj:lstArticleType)
        {
            if(datacategoryNameMap.containsKey(artObj.Id))
            {
                artObj.AskEDD_Category__c = datacategoryNameMap.get(artObj.Id);
                
                if (String.isEmpty(artObj.AskEDD_Category__c)){
                     output.noCategory = true;
                    outputlist.add(output);
                    return outputlist;
                } 
                else {
                     output.noCategory = false;
                    outputlist.add(output);
                }
         //     output.categoryString  = artObj.AskEDD_Category__c;
            }
        }

     //   update lstArticleType;
        return outputlist;
       }  
    public class FlowInputs {
        @InvocableVariable
        public string recordId;
    }
    public class FlowOutputs {
        @InvocableVariable
        public boolean noCategory;
    }
}
Apex Class:
____________
public class EDDKMSCreateArticleFromTemplate {
  @AuraEnabled
    public static List<Knowledge_Article_Template__c> getKnowledgeArticleTemplates() {
        try {
          return [SELECT Id, Name FROM Knowledge_Article_Template__c];
        }
        catch(Exception ex) {
            throw new AuraHandledException(ex.getMessage());
        }
    }
    
    @AuraEnabled
    public static TemplateWrapper getKnowledgeArticleTemplateBody(String templateId, String templateName) {
        try {
            TemplateWrapper wrapper = new TemplateWrapper();
            if(Schema.SObjectType.Knowledge__kav.getRecordTypeInfosByName().get(templateName) != null) 
                wrapper.recordTypeId = Schema.SObjectType.Knowledge__kav.getRecordTypeInfosByName().get(templateName).getRecordTypeId(); 
            else
                wrapper.recordTypeId = '';
            
            wrapper.template = [SELECT   Id, Name, Template_Body__c, OT_Body__c, CF_Body__c, DET_Body__c,
                                    ADJ_Body__c, MGR_OT_EPR_Body__c, MGR_UISD_Body__c
                                FROM  Knowledge_Article_Template__c
                                WHERE  Id =: templateId];
            return wrapper;
        }
        catch(Exception ex) {
            throw new AuraHandledException(ex.getMessage());
        }        
    }
    
    public class TemplateWrapper {
        @AuraEnabled public String recordTypeId {get;set;}
        @AuraEnabled public Knowledge_Article_Template__c template {get;set;}
    }
}