Вызывая мой метод apex в триггере apex, получая ошибку
public static void insertInboundJive(Map<Id, String> mapCases){
try{
system.debug('Aditya');
Map<Id, String> mapCases1 = new Map<Id, String>();
Map<Id, Integer> mapIncrements = new Map<Id, Integer>();
//List<ICS_Case_Interaction__c> lstCaseInteraction;
if(mapCases != null && mapCases.size() > 0) {
List<ICS_Case_Interaction__c> lstCaseInteraction = [ SELECT Id,case__r.origin FROM ICS_Case_Interaction__c Where case__r.Id =:mapCases.keySet()];
for(ICS_Case_Interaction__c caseInteracts :lstCaseInteraction ){
if(caseInteracts.case__r.Id != null && caseInteracts.case__r.Status == 'New Customer Message'){
system.debug('**AdityaDebug**' +caseInteracts.case__r.Id);
system.debug('**AdityaDebug**' +caseInteracts.case__r.Status);
mapcases1.put(caseInteracts.case__r.Id , TYPE_JIVE_INBOUND);
Integer intIncrement = mapIncrements.get(caseInteracts.case__r.Id);
system.debug('Increment' +intIncrement);
if(intIncrement != null){
intIncrement++;
system.debug('Increment++' +intIncrement);
}
else {
intIncrement = 1;
}
mapIncrements.put(caseInteracts.case__r.Id, intIncrement);
}
}
if(mapCases.size() > 0) {
insertByCaseAsync(mapCases, mapIncrements);
}
}
}
catch(Exception ex){
Core_Log_Entry.logEntryWithException('Case Interaction Metrics', 'CaseInteraction','insertInboundEmail', 'Error', null, null, ex);
}
}
Это мой метод в классе. Я пытаюсь вызвать метод apex в триггере. Но он выдает ошибку. Не могли бы вы помочь мне и попытаться найти лучшее.
Ошибка, которую я получаю, была строка 188, столбец 106. Метод не существует или неверная подпись: void insertInboundJive(List) из типа ICS_Case_Interactions_Trigger_Handler
if(trigger.isUpdate) {
if (Label.ICS_Case_Interaction_Metrics.equals ('1')) {ICS_Case_Interactions_Trigger_Handler.insertInboundJive (trigger.new);}}
1 ответ
Вы пытаетесь передать неправильные параметры. В методе, который вы определили, при вызове вам нужно передать карту, где значения - String, однако вы передаете Trigger.new, который является списком объектов. Мой подход состоит в том, чтобы обработать отображение в триггере, а затем манипулировать данными в контроллере:
В этом случае вы можете сделать следующее, чтобы передать записи и получить строку данных, которую вы хотите в контроллере... или сделать это в триггере, чтобы вы не меняли контроллер.
Map<Id,Contact> map = new Map<Id,ICS_Case_Interaction__c>(); // new map
for(ICS_Case_Interaction__c con :trigger.new){
map.put(con.Id, con); // enter the records you need for the method
}
if(trigger.isUpdate) {
if(Label.ICS_Case_Interaction_Metrics.equals('1')) {
ICS_Case_Interactions_Trigger_Handler.insertInboundJive(map);
}
}
и в контроллере вы должны иметь
public static void insertInboundJive(Map<Id, ICS_Case_Interaction__c> mapCases){
}