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
Pavani Akella 9Pavani Akella 9 

Help modifying the apex trigger and writing a test class to the event trigger

Hi,

I'm a newbee to Development and I'm learning how to write apex coding.

Can someone please help me to modify the apex trigger and help me write a test class to this event trigger

trigger Checkin on Vehicle_Daily_Checkin__e (after insert) {
    List<VIN__c> records = new List<VIN__c>();
    for (Vehicle_Daily_Checkin__e event : Trigger.New) {
        List<VIN__c> existingRecords = Database.query(
            'SELECT VIN_External_ID__c, Odometer__c, Longitude__c, Latitude__c, Last_Signal_Datetime__c ' +
            'FROM VIN__c WHERE VIN_External_ID__c=\'' + event.VIN__c + '\'');
        
        if(existingRecords.size() != 0) {
            existingRecords[0].Odometer__c=event.Odometer__c;
            existingRecords[0].Longitude__c=event.Longitude__c;
            existingRecords[0].Latitude__c=event.Latitude__c;
            existingRecords[0].Last_Signal_Datetime__c=event.Last_Signal_Datetime__c;
            update existingRecords[0];
            records.add(existingRecords[0]);
        }
        else {
            VIN__c record=new VIN__c();
            record.VIN_External_ID__c=event.VIN__c;
            record.Odometer__c=event.Odometer__c;
            record.Longitude__c=event.Longitude__c;
            record.Latitude__c=event.Latitude__c;
            record.Last_Signal_Datetime__c=event.Last_Signal_Datetime__c;
            records.add(record);
        }
        String sc;
        List<Account> acc=Database.query(
            'SELECT Id, Name, Location__c FROM Account '+
            'WHERE (public_service_center__c != \'N/A\' OR public_service_center__c != \'No\')'+
            ' AND DISTANCE(Location__c, GEOLOCATION(' +event.Latitude__c+ ', ' +event.Longitude__c + '), \'mi\') < 2') ; 
        String cId;
        for(Account a:acc){
           
            sc=a.Id;
            List<Case> cas=Database.query('SELECT Id,CaseNumber FROM Case WHERE AccountId =\''+ sc +'\' AND VIN_Entry__c =\''+ event.VIN__c+'\'');
            for (Case c : cas) {
                cId = c.Id;
                break;
            }            
        }
        
        Enhanced_Daily_Checkin__e enchancheck=new Enhanced_Daily_Checkin__e(CaseID__c = cId,Last_Signal_Datetime__c=event.Last_Signal_Datetime__c,Latitude__c=event.Latitude__c,Longitude__c=event.Longitude__c,Odometer__c=event.Odometer__c,VIN__c=event.VIN__c,ServiceCenterID__c=sc); 
            EventBus.publish(enchancheck);
        System.debug('Published enhanced event'+enchancheck);
    }    
 
    upsert records;
}

Thanks in advance!
Pavani