You need to sign in to do that
Don't have an account?
Pavani 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
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