You need to sign in to do that
Don't have an account?
sumit d
System.TypeException: Invalid date: 2019-05-06T13:33:15Z
Hi All,
i have a batch in which i am updating case field ClosedDate to a field coming from Zendesk Api Solved_at . but when i tried to run the batch its giving me the error :- System.TypeException: Invalid date: 2019-05-06T13:33:15Z
the api response is in this format:-"solved_at": "2019-04-09T17:43:33Z",
my batch is given below:-
public class BatchZendeskClosedDate implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.Stateful {
string query;
public static void run( Set<Id> caseIds ){
List<Case> caseList = [ SELECT Id, Zd_Zendesk_Id__c
FROM Case
WHERE Zd_Zendesk_Id__c != null AND Id IN: caseIds ];
executeHelper(caseList);
}
public Database.querylocator start(Database.BatchableContext BC){
query = 'SELECT Id,Zd_Zendesk_Id__c ' +
'FROM Case ' +
'WHERE Zd_Zendesk_Id__c != null ';
return Database.getQueryLocator(query);
}
//execute method to update Case solvedDate
public void execute( Database.BatchableContext BC, List<Case> caseList){
executeHelper(caseList);
}
public static void executeHelper( List<Case> caseList ){
List<Case> updateCase = new List<Case>();
for( Case cs : caseList ){
HttpRequest req = new HttpRequest();
req.setMethod( 'GET' );
String username = System.Label.Zendesk_UserName;
String password = System.Label.Zendesk_Password;
Blob headerValue = Blob.valueOf( username + ':' + password );
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode( headerValue );
req.setHeader( 'Authorization', authorizationHeader );
req.setHeader( 'Content-Type', 'application/json' );
req.setEndpoint( 'https://timerack.zendesk.com/api/v2/ticket_metrics.json' );
Http binding = new Http();
HttpResponse res = binding.send( req );
Map<String, Object> results = ( Map<String, Object> )JSON.deserializeUntyped( res.getBody() );
List<Object> lstCases = ( List<Object> )results.get( 'ticket_metrics' );
List<Map<String, Object>> casesAtt = new List< Map< String, Object >>();
for ( Object Cases : lstCases ) {
Map<String, Object> casesAttributes = ( Map< String, Object >)Cases;
casesAtt.add( casesAttributes );
}
//List< case > listCasesToUpdate = new List< case >();
for( Map< String, Object> attMap : casesAtt ){
Case ct = new Case();
ct.ClosedDate = Date.valueOf( attMap.get( 'solved_at' ));
updateCase.add(ct);
}
}
if(updateCase.Size()>0){
update updateCase;
}
}
public void finish(Database.BatchableContext BC){
}
}
how to solve this error?
Any suggestions?
i have a batch in which i am updating case field ClosedDate to a field coming from Zendesk Api Solved_at . but when i tried to run the batch its giving me the error :- System.TypeException: Invalid date: 2019-05-06T13:33:15Z
the api response is in this format:-"solved_at": "2019-04-09T17:43:33Z",
my batch is given below:-
public class BatchZendeskClosedDate implements Database.Batchable<sObject>,Database.AllowsCallouts, Database.Stateful {
string query;
public static void run( Set<Id> caseIds ){
List<Case> caseList = [ SELECT Id, Zd_Zendesk_Id__c
FROM Case
WHERE Zd_Zendesk_Id__c != null AND Id IN: caseIds ];
executeHelper(caseList);
}
public Database.querylocator start(Database.BatchableContext BC){
query = 'SELECT Id,Zd_Zendesk_Id__c ' +
'FROM Case ' +
'WHERE Zd_Zendesk_Id__c != null ';
return Database.getQueryLocator(query);
}
//execute method to update Case solvedDate
public void execute( Database.BatchableContext BC, List<Case> caseList){
executeHelper(caseList);
}
public static void executeHelper( List<Case> caseList ){
List<Case> updateCase = new List<Case>();
for( Case cs : caseList ){
HttpRequest req = new HttpRequest();
req.setMethod( 'GET' );
String username = System.Label.Zendesk_UserName;
String password = System.Label.Zendesk_Password;
Blob headerValue = Blob.valueOf( username + ':' + password );
String authorizationHeader = 'BASIC ' + EncodingUtil.base64Encode( headerValue );
req.setHeader( 'Authorization', authorizationHeader );
req.setHeader( 'Content-Type', 'application/json' );
req.setEndpoint( 'https://timerack.zendesk.com/api/v2/ticket_metrics.json' );
Http binding = new Http();
HttpResponse res = binding.send( req );
Map<String, Object> results = ( Map<String, Object> )JSON.deserializeUntyped( res.getBody() );
List<Object> lstCases = ( List<Object> )results.get( 'ticket_metrics' );
List<Map<String, Object>> casesAtt = new List< Map< String, Object >>();
for ( Object Cases : lstCases ) {
Map<String, Object> casesAttributes = ( Map< String, Object >)Cases;
casesAtt.add( casesAttributes );
}
//List< case > listCasesToUpdate = new List< case >();
for( Map< String, Object> attMap : casesAtt ){
Case ct = new Case();
ct.ClosedDate = Date.valueOf( attMap.get( 'solved_at' ));
updateCase.add(ct);
}
}
if(updateCase.Size()>0){
update updateCase;
}
}
public void finish(Database.BatchableContext BC){
}
}
how to solve this error?
Any suggestions?
its still giving me this error:-
Invalid date/time: 2019-05-06T13:33:15Z
Can you help me out with this?
caseObj.ClosedDate = Date.valueOf(s1);
its giving me error that method does not exist.
Any suggestions?