• SARTHAK GARG 4
  • NEWBIE
  • 0 Points
  • Member since 2019

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 3
    Replies

On click of next button the edit record page of current record with the selected recortype should be Displayed

Please find below code & let me know where i am going wrong :-

 

MyQuickAction.cmp

<aura:component Controller="RecordTypeSelector" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction" access="global" >
    <aura:attribute name="lstOfRecordType" type="List" />
    <!-- Fetch all available record types after component construction but before rendering -->
    <aura:attribute name="recordId" type="id" />
    <aura:handler name="init" value="{!this}" action="{!c.fetchListOfRecordTypes}"/>
    
    
    
    <lightning:layout multipleRows="true" horizontalAlign="center">
        
        <lightning:layoutItem flexibility="auto" padding="around-small"
                              
                              size="12"
                              
                              largeDeviceSize="12"
                              
                              mediumDeviceSize="12"
                              
                              smallDeviceSize="12">
            
            <lightning:formattedText value="Select Case Record Type" />
            
        </lightning:layoutItem>
        
        <lightning:layoutItem flexibility="auto" padding="around-small"
                              
                              size="12"
                              
                              largeDeviceSize="12"
                              
                              mediumDeviceSize="12"
                              
                              smallDeviceSize="12">
            
            
            
            <!-- select to hold all available record type names list -->            
            <lightning:select aura:id="recordTypePickList" name="selectRecordType" label="Select a Record Type">
                
                <option value="" text="Select Record Type"/>
                
                <aura:iteration items="{!v.lstOfRecordType}" var="item">
                    
                    <option value="{!item.recordTypeId}" text="{!item.recordTypeName}"/>
                    
                </aura:iteration>
                
            </lightning:select>
            
            
            
        </lightning:layoutItem>
        
        <lightning:layoutItem flexibility="auto" padding="around-small"
                              
                              size="3"
                              
                              largeDeviceSize="3"
                              
                              mediumDeviceSize="3"
                              
                              smallDeviceSize="6">
            
            <lightning:button variant="brand" label="Next" onclick="{!c.createRecord}"/>
            
        </lightning:layoutItem>
        
        <lightning:layoutItem flexibility="auto" padding="around-small"
                              
                              size="3"
                              
                              largeDeviceSize="3"
                              
                              mediumDeviceSize="3"
                              
                              smallDeviceSize="6">
            
            <lightning:button variant="neutral" label="Cancel" onclick="{!c.closeModal}" />
            
        </lightning:layoutItem>
        
    </lightning:layout>
    
</aura:component>

 

 

MyQuickActionController.js
 

({
    
    /*

     * This method is being called from init event

     * to fetch all available recordTypes

     * */
    
    fetchListOfRecordTypes: function(component, event, helper) {
        var action = component.get("c.fetchRecordTypeValues");
        //pass the object name here for which you want
        
        //to fetch record types
        
        action.setParams({
            
            "objectName" : "Case"
            
        });
        action.setCallback(this, function(response) {
            var state = response.getState();
            //console.log('response.getReturnValue() == ' + response.getReturnValue());
            component.set("v.lstOfRecordType", response.getReturnValue());
        });
        $A.enqueueAction(action);
    },    
    
    /*

     * This method will be called when "Next" button is clicked

     * It finds the recordTypeId from selected recordTypeName

     * and passes same value to helper to create a record

     * */
    
    createRecord: function(component, event, helper, sObjectRecord) {
       console.log('Inside Create Record');
        var recordId = component.get("v.recordId");
        
        var selectedRecordTypeName = component.find("recordTypePickList").get("v.value");
        
        if(selectedRecordTypeName != ""){
            
            var selectedRecordTypeMap = component.get("v.mapOfRecordType");
            
            var selectedRecordTypeId;
            
            
            
            //finding selected recordTypeId from recordTypeName
            
            for(var key in selectedRecordTypeMap){
                
                if(selectedRecordTypeName == selectedRecordTypeMap[key]){
                    
                    selectedRecordTypeId = key;//match found, set value in selectedRecordTypeId variable
                    
                    break;
                    
                }
                
            }
            
            //Close Quick Action Modal here
            
            helper.closeModal();
            
            
            
            //Calling CreateRecord modal here without providing recordTypeId
            helper.showEditRecordModal(component,recordId ,selectedRecordTypeId, "Case");
            
        } else{
            
            alert('You did not select any record type');
            
        }
        
        
        
    },
    
    
    
    /*

     * closing quickAction modal window

     * */
    
    closeModal : function(component, event, helper){
        
        helper.closeModal();
        
    }
    
})



MyQuickActionHelper.js
({

    /*

     * This methid takes recordTypeId and entityTypeName parameters

     * and invoke standard force:createRecord event to create record

     * if recordTypeIs is blank, this will create record under master recordType

     * */

    showEditRecordModal : function(component,recordId, selectedRecordTypeId, entityApiName) {

       

        var editRecordEvent = $A.get("e.force:editRecord");

        if(editRecordEvent){ //checking if the event is supported
          
            if(selectedRecordTypeId){//if recordTypeId is supplied, then set recordTypeId parameter

                editRecordEvent.setParams({
                    
                            
                    "entityApiName": entityApiName,

                    "recordTypeId": recordTypeId,

                   

                "recordId": component.get("v.recordId")

                   

                    

                });

            } 
            
            

        } else{

            alert('This event is not supported');

        }

    },

    

    /*

     * closing quickAction modal window

     * */

    closeModal : function(){

        var closeEvent = $A.get("e.force:closeQuickAction");

        if(closeEvent){

        closeEvent.fire();

        } else{

            alert('force:closeQuickAction event is not supported in this Ligthning Context');

        }

    },

})



Apex Controller

public class RecordTypeSelector{

    /*

     * This function will fetch the RecordTypes of

     * provided object and will return a map of

     * recordTypeId and recordTypeNames

     * it excludes 'master' record type

     * */

    public static List<recordTypeWrapper> recordtypemap;

@AuraEnabled        

    public static List<recordTypeWrapper> fetchRecordTypeValues(String objectName){

        List<Schema.RecordTypeInfo> recordtypes = Schema.getGlobalDescribe().get(objectName).getDescribe().getRecordTypeInfos();    

        recordtypemap = new List<recordTypeWrapper>();

        for(RecordTypeInfo rt : recordtypes){
            if(String.isNotBlank(rt.getName().trim())){
                recordtypemap.add(new recordTypeWrapper(rt.getRecordTypeId(), rt.getName()));
            }
        } 
        system.debug('recordtypemap == ' + recordtypemap);
        return recordtypemap;

    }
    
    public class recordTypeWrapper {
        @AuraEnabled      
        public String recordTypeId;
        @AuraEnabled      
        public String recordTypeName;
        public recordTypeWrapper (String recordTypeId, String recordTypeName) {
            this.recordTypeId = recordTypeId;
            this.recordTypeName = recordTypeName;
        }
    }

}

 

User-added imagewant to search   below the name from below list dynamicalyy;

Here is the controller

 

 

public with sharing class Sim_EventOfficeContactsController {
    
    public List<OfficeContactWrapper> officeContacts {get;set;}
    private List<Office_Contact__c> toBeDeleted{get;set;}
    public Integer selectedIndex{get;set;}
    private Integer index{get;set;}
    
    private String eventId;
    public id eventAccountid;
    
    public String searchstr{get;set;}
    
    public Sim_EventOfficeContactsController(ApexPages.StandardController controller) {
        toBeDeleted = new List<Office_Contact__c>();
        eventId = controller.getId();
        List<Event_and_Lecture__c> eventList = [select id,account__r.Id from Event_and_Lecture__c where id = :eventId limit 1];
        eventAccountid = eventList[0].account__r.Id;
        system.debug('eventAccountid: '+eventAccountid);
        initOfficeContacts();    
    }
    
    
    public pagereference dosearch(){
        String strg = '%'+searchstr+'%';
        =[SELECT id,name FROM Office_Contact__c WHERE name like:strg];
       return null;
    }    
    
    
    
    public boolean getHasContacts(){
        return officeContacts.size()>0;
    }
    
    //methods for getting list of contacts
    public void initOfficeContacts()
    {   
        officeContacts = new List<OfficeContactWrapper>();
        index = 1;
        //if viewing on standard controller (account), add in filter for accountId
        for(Office_Contact__c officeContact : [SELECT id, name,Event_and_Lecture__c,email__c,CORE_Referral_Manager__c ,Phone__c, account__c, Type__c, Preferences__c
                                               FROM Office_Contact__c WHERE account__c = :eventAccountid ORDER BY Name asc LIMIT 1000]){
              OfficeContactWrapper ocw = new OfficeContactWrapper(officeContact,index);
            officeContacts.add(ocw);
            index++;                
        }
        
    }
    
    //save all records that were updated
    public void save() 
    {
        List<Office_Contact__c> toUpsert = new List<Office_Contact__c>();
        for(OfficeContactWrapper ocw: officeContacts){
            toUpsert.add(ocw.officeContact);
        }
        upsert toUpsert;
        delete toBeDeleted;
        initOfficeContacts();
    }
    
    public void add()
    {
        Office_Contact__c ref = new Office_Contact__c(Event_and_Lecture__c = eventId, account__c = eventAccountid);
        officeContacts.add(new OfficeContactWrapper(ref,index));
        index++;
    }
    
    public void delRow()
    {   
        integer index = 0;
        System.debug('rowIndex for delete'+ selectedIndex);
        for(OfficeContactWrapper ocw: officeContacts){
            if(ocw.rowIndex == selectedIndex){
                if(ocw.officeContact.Id != null)
                    toBeDeleted.add(ocw.officeContact);
                break;
            }
            index++;
        }
        officeContacts.remove(index);
        save(); 
    }
    class OfficeContactWrapper{
        public Office_Contact__c officeContact{get;set;}
        public Integer rowIndex{get;set;}
        public OfficeContactWrapper(Office_Contact__c officeContact,Integer rowIndex){
            
            this.officeContact = officeContact;
            this.rowIndex = rowIndex;
        }
    }
}

Please help in bulkifying the trigger so that update from datalaoder is possible.
 
Trigger code
 
 
trigger NewCaseSendEmail on Case (after insert, after update) {
      system.debug('inside Case after insert update trigger*****');

            if(Label.EXECUTE_TRIGGER == 'False')
                return ;

            //Subhash Garhwal - 12/26/2016 - Added Record Type check to exclude XVELA and Interschalt record types
            //Code Modified By Karthikeyan Ramamurthy - WeServetech 21-03-2017
            //Included the new xvela record types.
            Case[] cases = [select id, AccountId, CaseNumber, type, subject, Product__c, Priority, RecordType.Name from case where id in :Trigger.new  
                            And RecordType.DeveloperName Not IN('XVELA' ,'XVELA_Question','XVELA_Dongle','XVELA_Error','XVELA_Sales','Interschalt')]; 
            
            CustomEvent__c[] events  = [select id,date__c,useralias__c,User_Alias__c, start__c, end__c from customevent__c where 
            (start__c <= :System.Now()) and (end__c >= :System.Now())];
            system.debug('eventsr*****'+events);
            System.debug('YYYYY'+cases); 
            for(Case currentCase :cases){
                if(events.size() > 0 && currentCase.AccountId != null)
                {                    
                     system.debug('currentCase*****'+currentCase);  
                    if(Trigger.isUpdate)
                    { 
                        system.debug('Trigger.isUpdate'+Trigger.isUpdate);
                        Case oldCase = Trigger.oldMap.get(currentCase.ID);
                        if(currentCase.Priority.equals(oldCase.Priority))
                        {
                            continue;
                        }
                    }
                    
                    CustomEvent__c currentEvent = events[0];
                    list<Settings__C> settingsList = [select id,priorities__c from settings__c LIMIT 1];
                    Settings__C settings;
                    if(settingsList != null && !settingsList.isEmpty()){
                        settings = settingsList[0];
                    }else{
                     //add error if no settings record present   
                     //trigger.newMap.get(currentCase.Id).addError('No Settings have been created. Please create settings.'); 
                    }
                    
                    list<Account> accList = [select id,priorities__c,site from account where id = :currentCase.AccountId];
                    Account account;
                    if(accList != null && ! accList.isEmpty()){
                        account = accList[0];   
                    }else{
                     //add error if no settings record present   
                     //trigger.newMap.get(currentCase.Id).addError('No Account associated with Case'); 
                    }
                    
                    String debugForContent = ''; 
                    system.debug('account.Id --->' + account);
                    system.debug('currentEvent.useralias__c*******'+currentEvent.useralias__c);
                    system.debug('settingsc*******'+settings);
                    system.debug('accountc*******'+account);
                    
                    if(settings != null && account != null && currentEvent.User_Alias__c != null)
                    {
           
                        List<String> accountPriorities = new List<String>();
                        List<String> settingsPriorities= settings.Priorities__c.split(';');
                        system.debug('settingsPrioritie+++++++++++++++'+settingsPriorities);
                        if(account.Priorities__c == null)
                        {
                            accountPriorities= new List<String>();
                        }
                        else
                        {
                          accountPriorities =  account.Priorities__c.split(';');
                        }
                        system.debug('accountPriorities+++++++++++++++'+accountPriorities);
                        list<Contact> relatedContactList = [select id,phone from contact where accountid = :account.Id];
                         Contact accountFirstContact;
                        if(relatedContactList != null && !relatedContactList.isEmpty()){
                            accountFirstContact = relatedContactList[0];
                        }
                        String contactPhone = '';
                        system.debug('currentEvent.user_alias__c -->' + currentEvent.user_alias__c);
                        list<User> userList = [select Instant_Messager_ID__c from user where CommunityNickname = :currentEvent.user_alias__c and isActive = true];
                        User eventAttachedUser;
                        if(userList != null && !userList.isEmpty()){
                            eventAttachedUser = userList[0];
                        }
                        system.debug('eventAttachedUser-->' + eventAttachedUser);
                       // List<User> eventAttachedUsers = [select Instant_Messager_ID__c from user where CommunityNickname = :currentEvent.useralias__c];
                        //If (eventAttachedUsers  !=null && eventAttachedUsers.size()>0) {
                       // User eventAttachedUser =eventAttachedUsers[0];
                        // System.Debug(eventAttachedUser);
                        if(accountFirstContact != null)
                        {
                            contactPhone = accountFirstContact.Phone;
                        }
                        
                        Boolean canContinue = false;
                        
                        if(accountPriorities != null && settingsPriorities != null)
                        {                
                            for(String i : accountPriorities){
                                for(String j : settingsPriorities){
                                debugForContent = debugForContent + ' '+i+'-' +j;
                                    if(i.equals(j)){
                                        canContinue = true;
                                        break;
                                    }
                                }
                            }
                        }
                        
                        if(!canContinue) {        
                           if(currentCase.Priority == '1 Critical')
                           {
                               canContinue = true;
                           }
                           else
                           {                
                               canContinue = false;
                           }
                        }
                        system.debug('canContinue-->' + canContinue);            
                        if(eventAttachedUser  ==null || eventAttachedUser.Instant_Messager_ID__c == null)
                        {
                            canContinue = false;
                            system.debug('$$$$'+canContinue);
                        }        
                        System.debug('HELLO' + eventAttachedUser + ' with priority' + currentCase.Priority + canContinue);                        
                        if(canContinue)
                        {            
                            system.debug('%%%');
                           // Messaging.reserveSingleEmailCapacity(2);         
                            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
                            
                            String[] toAddresses = new String[] {eventAttachedUser.Instant_Messager_ID__c}; 
                                  
                            mail.setToAddresses(toAddresses);
                            mail.setSenderDisplayName('SalesForce Case Trigger');
                            mail.setSubject('Critical Case Alert: #'+ currentCase.CaseNumber + ' ' + account.Site + ' ' 
                                + currentCase.Type+', Ph ' + contactPhone );
                            mail.setBccSender(false);
                            mail.setUseSignature(false);
                            mail.setPlainTextBody(
                            'Case: ' + currentCase.CaseNumber 
                            +'\n'
                            +'Subject: ' + currentCase.Subject
                            +'\n'
                            +'Account : ' + account.Site
                            +'\n'
                            +'Product : ' + currentCase.Product__c
                            +'\n'
                            +'Contact #: ' +contactPhone
                            );
                            
                            mail.setHtmlBody(
                            'Case: ' + currentCase.CaseNumber 
                            +'<br/>'
                            +'Subject: ' + currentCase.Subject
                            +'<br/>'
                            +'Account : ' + account.Site
                            +'<br/>'
                            +'Product : ' + currentCase.Product__c
                            +'<br/>'
                            +'Contact #: ' +contactPhone
                            );
                 
                            Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });

                       }
                  }
             } 
             
    }     
            
}
So where the "Articles__kav" was there in apex class ,how would i change it as now the articles types are record types of knowledge object