• SidP
  • NEWBIE
  • 30 Points
  • Member since 2016


  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 5
    Replies
Hi,

I am creating a event object using apex trigger

if(eightAM == 'true') {
                                                      DateTime startDateTime = kstartDate;
                                                    DateTime ednDateTime = kendDate;
                                                        Event eventObject = new Event();
                                                        eventObject.OwnerId = userID;
                                                        eventObject.Location = location; 
                                                        eventObject.StartDateTime = startDateTime.addHours(8);
                                                        eventObject.EndDateTime =startDateTime.addHours(9);
insert eventObject;
}

If it is 8 AM, I am adding 8 hours to create event entry and it is getting inserted but Calendar always show time 4 hours less.

I have check the settings , my time zone and company profile time zone is same.How can I resolve this issue ?

Thanks,
Hi All,
         i have a test class for trigger helper but its giving me error:-Null Pointer Exception
My helper class is given below:-
/**
 * Helper Class For Trigger: Trigger_Log 
 */
public without sharing class LogTriggerHelper{
    public static List<rie__Log__c> newLogs;
    public static List<rie__Log__c> oldLogs;
    public static Map<Id, rie__Log__c> newMapLogs;
    public static Map<Id, rie__Log__c> oldMapLogs;
    
    public static boolean runTrigger = TRUE;
    
    public static Map<Id, rie__Registration__c> mapParentRegisTrationsToUpdate = new Map<Id, rie__Registration__c>();
    
    public static Map<Id, rie__Registration__c> mapParentAttendeesToUpdate = new Map<Id, rie__Registration__c>();
    public static Map<Id, rie__Registration__c> mapParentSpeakersToUpdate = new Map<Id, rie__Registration__c>();
    public static Map<Id, rie__Registration__c> mapParentRegToUpdateForSessions = new Map<Id, rie__Registration__c>();
     
    public static void rollupForSpeaker(){
        
        Set<Id> parentSpeakerIds = new Set<Id>();
        for( rie__Log__c logObj : newLogs ){
             if( logObj.rie__Speaker__c != Null ){
                parentSpeakerIds.add( logObj.rie__Speaker__c );
             }
        }
        Map<Id, rie__Speaker__c> mapIdToSpeaker = new Map<Id, rie__Speaker__c>();
        for( rie__Speaker__c spkrObj : [ SELECT Id, rie__Registration__c 
                                         FROM rie__Speaker__c 
                                         WHERE Id IN: parentSpeakerIds ] ){
            mapIdToSpeaker.put( spkrObj.Id, spkrObj );    
        }
    
        Set<Id> parentRegistrationIds = new Set<Id>();
        if( Trigger.isInsert || Trigger.isUpdate || Trigger.isUndelete ){
            for( rie__Log__c logObj : newLogs ){
                if( logObj.rie__Speaker__c != Null && mapIdToSpeaker.containsKey( logObj.rie__Speaker__c ) ){
                    Id parentSpeakerId = mapIdToSpeaker.get( logObj.rie__Speaker__c ).rie__Registration__c;
                    if( parentSpeakerId != Null ){
                        parentRegistrationIds.add( parentSpeakerId );
                    }    
                }
            }
        } 
        else if( Trigger.isDelete ) {
            for( rie__Log__c logObj : oldLogs ){
                if( logObj.rie__Speaker__c != Null && mapIdToSpeaker.containsKey( logObj.rie__Speaker__c ) ){
                    Id parentSpeakerId = mapIdToSpeaker.get( logObj.rie__Speaker__c ).rie__Registration__c;
                    if( parentSpeakerId != Null ){
                        parentRegistrationIds.add( parentSpeakerId );
                    }
                }
            }    
        }
        
        if( parentRegistrationIds.size() > 0 ){
            
            for( Id registrationId : parentRegistrationIds ) {
                rie__Registration__c parentSpeaker = new rie__Registration__c( Id = registrationId ); 
                parentSpeaker.rie__Speaker_Counter__c = 0;
                parentSpeaker.rie__Speaker_Chat_Counter__c = 0;
                parentSpeaker.rie__Speaker_Connect_Counter__c = 0;
                mapParentSpeakersToUpdate.put( parentSpeaker.Id, parentSpeaker );
            }
            
            List<AggregateResult> aggrList = [ SELECT rie__Speaker__r.rie__Registration__c parentSpeaker, 
                                               COUNT(Id) speaker
                                               FROM rie__Log__c
                                               WHERE rie__Speaker__r.rie__Registration__c IN: parentRegistrationIds
                                               GROUP BY rie__Speaker__r.rie__Registration__c ];
            for( AggregateResult ag :  aggrList ){
                
                Id parentSpeakerId = (String)ag.get('parentSpeaker');
                rie__Registration__c parentSpeaker = mapParentSpeakersToUpdate.get( parentSpeakerId );
                
                parentSpeaker.rie__Speaker_Counter__c = (Decimal)ag.get( 'speaker' );
                mapParentSpeakersToUpdate.put( parentSpeaker.Id, parentSpeaker );   
            }
            
            List<AggregateResult> aggrListChat = [ SELECT rie__Speaker__r.rie__Registration__c parentSpeaker, 
                                                   COUNT(Id) speaker
                                                   FROM rie__Log__c
                                                   WHERE rie__Speaker__r.rie__Registration__c IN: parentRegistrationIds
                                                   AND rie__Speaker_Chat__c = TRUE
                                                   GROUP BY rie__Speaker__r.rie__Registration__c ];
            
            for( AggregateResult ag :  aggrListChat ){
                
                Id parentSpeakerId = (String)ag.get('parentSpeaker');
                rie__Registration__c parentSpeaker = mapParentSpeakersToUpdate.get( parentSpeakerId );
                
                parentSpeaker.rie__Speaker_Chat_Counter__c = (Decimal)ag.get( 'speaker' );
                mapParentSpeakersToUpdate.put( parentSpeaker.Id, parentSpeaker );    
            }
            
            List<AggregateResult> aggrListChatConnect = [ SELECT rie__Speaker__r.rie__Registration__c parentSpeaker, 
                                                          COUNT(Id) speaker
                                                          FROM rie__Log__c
                                                          WHERE rie__Speaker__r.rie__Registration__c IN: parentRegistrationIds
                                                          AND rie__Speaker_Connect__c = TRUE
                                                          GROUP BY rie__Speaker__r.rie__Registration__c ];
            
            for( AggregateResult ag :  aggrListChatConnect ){
                
                Id parentSpeakerId = (String)ag.get('parentSpeaker');
                rie__Registration__c parentSpeaker = mapParentSpeakersToUpdate.get( parentSpeakerId );
                
                parentSpeaker.rie__Speaker_Connect_Counter__c = (Decimal)ag.get( 'speaker' );
                mapParentSpeakersToUpdate.put( parentSpeaker.Id, parentSpeaker );    
            }
            
        }
    }
    
    public static void rollupForSession(){
        
        Set<Id> parentSessionIds = new Set<Id>();
        
        if( Trigger.isInsert || Trigger.isUpdate || Trigger.isUndelete ){            
            for( rie__Log__c logObj : newLogs ){
                if( logObj.rie__Session__c != Null ){
                    parentSessionIds.add( logObj.rie__Session__c );
                }
            }
        } 
        else if( Trigger.isDelete ) {
            for( rie__Log__c logObj : oldLogs ){
                if( logObj.rie__Session__c != Null ){
                    parentSessionIds.add( logObj.rie__Session__c );
                }
            } 
        }
        
        
        if( parentSessionIds.size() > 0 ) {
            
            Map<Id, List<rie__Registered_Session__c>> mapSessionIdToRegSessions = new Map<Id, List<rie__Registered_Session__c>>();
            Set<Id> allSessionIds = new Set<Id>();
            Set<Id> parentRegistrationIds = new Set<Id>();
            
            for( rie__Registered_Session__c regSessionObj : [ SELECT Id, rie__Registration__c, rie__Session__c 
                                                           FROM rie__Registered_Session__c 
                                                           WHERE rie__Session__c IN: parentSessionIds ] ){
                
                allSessionIds.add( regSessionObj.rie__Session__c ); 
                parentRegistrationIds.add( regSessionObj.rie__Registration__c );
                
                List<rie__Registered_Session__c> regSessions = new List<rie__Registered_Session__c>();
                if( mapSessionIdToRegSessions.containsKey( regSessionObj.rie__Session__c )) {
                    regSessions = mapSessionIdToRegSessions.get( regSessionObj.rie__Session__c );
                }
                regSessions.add( regSessionObj );
                mapSessionIdToRegSessions.put( regSessionObj.rie__Registration__c, regSessions );
            }
            
            
            if( parentRegistrationIds.size() > 0 ){
                
                for( Id registrationId : parentRegistrationIds ) {
                    rie__Registration__c regObj = new rie__Registration__c( Id = registrationId ); 
                    regObj.rie__Session_Counter__c = 0;
                    mapParentRegToUpdateForSessions.put( regObj.Id, regObj );
                }
                
                List<AggregateResult> aggrList = [ SELECT rie__Session__c sessionId,  
                                                   COUNT(Id) cnt
                                                   FROM rie__Log__c
                                                   WHERE rie__Session__c IN :allSessionIds
                                                   GROUP BY rie__Session__c ];
                
                for( AggregateResult ag :  aggrList ){
                    
                    Id parentSessionId = (String)ag.get('sessionId');
                    // get all related registered sessions
                    List<rie__Registered_Session__c> regSessions = mapSessionIdToRegSessions.get( parentSessionId );
                    system.debug('regSessions'+regSessions);
 
                  for( rie__Registered_Session__c regSessionObj : regSessions ) {
                        rie__Registration__c reg = new rie__Registration__c( Id = regSessionObj.Registration__c );
                        rie__Registration__c registrationObjToUpdate = mapParentRegToUpdateForSessions.get( reg.Id );
                        if( registrationObjToUpdate == null ) {
                           registrationObjToUpdate = reg;
                        }
                        registrationObjToUpdate.rie__Session_Counter__c = registrationObjToUpdate.rie__Session_Counter__c == null ? 0 : registrationObjToUpdate.rie__Session_Counter__c;
                        registrationObjToUpdate.rie__Session_Counter__c =+ (Decimal)ag.get( 'cnt' );
                        mapParentRegToUpdateForSessions.put( registrationObjToUpdate.Id, registrationObjToUpdate ); 
                    } 
                }
            }
         }
    }
    
}
My test class is given below:-
@istest
private class Trigger_LogTest {
   
    static testmethod void rollupForSessionTest(){
               Test.setMock(HttpCalloutMock.class, new Mock());
               string requestBody = 'test';
        String requestEndpoint =ZoomJWTAuthentication.getZoomCredentials().rie__Zoom_URL__c + 'users/' +'/meetings';
        String requestMethod = 'POST';
        httpResponse res =   ZoomCalloutService.postCallout(requestMethod, requestEndpoint, requestBody);
        CreateWebinarJSONParser cwp = CreateWebinarJSONParser.parse(res.getBody());
        
        rie__Zoom_User__c z = new rie__Zoom_User__c();
        z.rie__Email_Id__c = 'real@gmail.com';
        z.rie__FirstName__c = 'Real';
        z.rie__LastName__c = 'Int';
        z.rie__User_Id__c = cwp.host_id;
        z.rie__User_Type__c ='Licensed';
        insert z;
       
        Contact c = new Contact();
        c.LastName = 'steven';
        c.rie__Zoom_User__c = z.id;
        insert c;
        
        rie__Event__c evt = new rie__Event__c();
        evt.rie__Event_Time_Zone__c = '(GMT-07:00) Pacific Daylight Time (America/Los_Angeles)';
        insert evt;
        
        rie__Session__c s = new rie__Session__c();
        s.rie__Session_Status__c = 'Ready to Publish';
        s.rie__Date_Time__c = System.today();
        s.rie__Session_Organizer__c = c.id;
        s.rie__Session_End_Time__c = System.today();
        s.rie__Meeting_ID__c = '86023030645' ;
        s.rie__Meeting_Password__c = '53b347b2a5';
        s.rie__Event__c =  evt.id;
        insert s;
        Session__c st  =  [select rie__Zoom_URL__c,Name,rie__Meeting_Password__c, 
                           rie__Allow_Auto_Recording__c, rie__Zoom_User__c,
                           rie__Webinar_Creation_Allowed__c,rie__Session_End_Time__c,
                           rie__Date_Time__c,rie__Event_Time_Zone__c,rie__ZoomUserId__c 
                           from rie__Session__c 
                           where id =: s.id];
        
         
         system.debug('st'+st);
        rie__Speaker__c spkr = new rie__Speaker__c();
        spkr.rie__Event__c = evt.id;
        insert spkr;
         system.debug('spkr'+spkr);
        
        rie__Registration__c attendee = new rie__Registration__c();
        attendee.rie__Event__c = evt.id;
        insert attendee;
         system.debug('attendee'+attendee);
        
        rie__Registered_Session__c regSessionObj = new rie__Registered_Session__c();
        regSessionObj.rie__Session__c = s.id;
        regSessionObj.rie__Registration__c = attendee.id;
        insert regSessionObj;
        
         system.debug('regSessionObj'+regSessionObj);
        
        rie__Log__c logs = new rie__Log__c();
        logs.rie__Event__c = evt.id;
         logs.rie__Session__c = st.id;
        logs.rie__Speaker__c = spkr.id;
        logs.rie__Attendee__c = attendee.id;
        insert logs;
        system.debug('log'+logs);
        
        test.startTest();
        delete logs;
        test.stopTest();
    }
   
}
I got 2 objects Service_Request__c(Parent) and Service_Line__c(Child). All I'm trying to do is update a field of parent object from child.based on the following condition.
In the following code, I'm not getting how to update the parent.
please suggest how to proceed.
public class StatusClosedHandler {
    public static void statuschange (String RecordId){
        integer count = 0;
        List<Service_Line__c> sLine = new List<Service_Line__c>();
     for(Service_Line__c sl : [Select id, Name, Status__c,Line_Type__c, Service_Request__r.Status__c,Service_Request__r.Name from Service_Line__c WHERE Service_Request__c = :RecordId ]){
         if(sl.Status__c == 'Completed'){
             count++; 
    }
             if(count == 3){  
             sl.Service_Request__r.Status__c = 'Closed';   
    }
             sLine.add(sl);
    }
             update sLine;
    }
  }

 
trigger TriggerNew1Problem on Account(after insert)
{
    Set<String> setacc = new Set<String>();
    for(Account a : Trigger.new)
    {
        setacc.add(a.Name);
    }
    
    List<Account> acclist = [Select Id, Name, (Select Id, Name From Opportunities)
    From Account Where Name In : setacc
    ];
    List<Opportunity> opplist = new List<Opportunity>();
    
    Map<String, Account> nmap = new Map<String, Account>();
    for(Account a : acclist)
    {
        nmap.put(a.Name, a);
    }
    
    for(Account acc : Trigger.new)
    {
        if(nmap.get(acc.Name)!=null)
        {
            opplist.add(new Opportunity(AccountId =acc.Id, Name ='Duplicate Opportunity'+acc.Name, StageName = 'prospecting'
            , CloseDate = System.today()));         
        }
        else if(nmap.get(acc.Name)==null)
        {
             opplist.add(new Opportunity(AccountId =acc.Id, Name ='First Opportunity'+acc.Name, StageName = 'prospecting'
            , CloseDate = System.today()));
        }
    }
    if(opplist.size()>0)
    {
        insert opplist;
    }
}
when i inserted duplicate name in account then print duplicate opportunity name on the bases of account if not a duplicate account name then print first opportunity
But First Opportunity is not printed
Hi,

I am creating a event object using apex trigger

if(eightAM == 'true') {
                                                      DateTime startDateTime = kstartDate;
                                                    DateTime ednDateTime = kendDate;
                                                        Event eventObject = new Event();
                                                        eventObject.OwnerId = userID;
                                                        eventObject.Location = location; 
                                                        eventObject.StartDateTime = startDateTime.addHours(8);
                                                        eventObject.EndDateTime =startDateTime.addHours(9);
insert eventObject;
}

If it is 8 AM, I am adding 8 hours to create event entry and it is getting inserted but Calendar always show time 4 hours less.

I have check the settings , my time zone and company profile time zone is same.How can I resolve this issue ?

Thanks,
Write a trigger on Opportunity LineItem , when Line Item is deletes, delete an opportunity as well.?