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
Ashu sharma 38Ashu sharma 38 

how to get the list of records using workbench

Hi,

I am trying to get response using workbench via creted custom api url mapping,but how to use this into workbench. 


@RestResource(urlMapping='/LeadActivity/*')
global with sharing class myActivityTask {
        @HttpGet
    global static list<lead> doGetLead(){
        
        list<task> activityLog=new list<task> ();
        List<id> leadsId = new List<id>();
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        String TaskId = req.requestURI.substring(req.requestURI.lastIndexOf('/')+1);
        list<Task> taskList=[SELECT CallObject,CallType,CompletedDateTime,CreatedById,CreatedDate FROM Task];
        for(task str:taskList){
            leadsId.add(str.WhoId);
        }
        list<Lead> result = [SELECT Id, Name, Phone, Website FROM Lead WHERE Id = :leadsId];
        return result;
    }
}
Rounak SharmaRounak Sharma
Hello satish,

Is it necessary to have it from workbench? Can you try it with Postman?

 
Ashu sharma 38Ashu sharma 38
Hi Rounak,

No its not required(I know only workbench).
 
Ashu sharma 38Ashu sharma 38
Hi Rounak,

@RestResource(urlMapping='/leadactivity/getlist/*')
global with sharing  class myActivityTask {
    
    @HttpGet
    global static  list<cust_map> doGetLead(){
        
        list<task> activityLog=new list<task> ();
        Map<Task,Id> CombinedItems=new Map<Task,Id>();
        
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        map<string,string> paramsMap=RestContext.request.params;
        string actdate=paramsMap.get('actdate');
        system.debug('Result' +actdate);
        Datetime dt1 = Datetime.valueOf(actdate);
        list<cust_map> results = new list<cust_map>();        
        list<Task> taskList=[SELECT Subject,CallType,CompletedDateTime,CreatedById,CreatedDate,WhoId,who.type FROM Task where CreatedDate>:dt1];
        
        for(task str:taskList){
            cust_map obj = new cust_map();
            if(str.who.type!='Lead')
                continue;
            
            Lead result = [SELECT ID FROM Lead WHERE Id = :str.WhoId];

            obj.CallObject =     str.Subject;
            obj.CallType = str.CallType;
            obj.CompletedDateTime = str.CompletedDateTime;
            obj.lId = result.ID;
            results.add(obj);
        }
       
        return results;
    }
    global class cust_map{
        Global String CallObject=null;
        Global String CallType=null;
        Global Datetime CompletedDateTime=null;
        Global String lId = null;
    }

        
}

Thanks
Rounak SharmaRounak Sharma
hello sathish,
Can you try it with apex execute in workbench from
list<task> activityLog=new list<task> ();
        Map<Task,Id> CombinedItems=new Map<Task,Id>();
        
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        map<string,string> paramsMap=RestContext.request.params;
        string actdate=paramsMap.get('actdate');
        system.debug('Result' +actdate);
        Datetime dt1 = Datetime.valueOf(actdate);
        list<cust_map> results = new list<cust_map>();        
        list<Task> taskList=[SELECT Subject,CallType,CompletedDateTime,CreatedById,CreatedDate,WhoId,who.type FROM Task where CreatedDate>:dt1];
        
        for(task str:taskList){
            cust_map obj = new cust_map();
            if(str.who.type!='Lead')
                continue;
            
            Lead result = [SELECT ID FROM Lead WHERE Id = :str.WhoId];

            obj.CallObject =     str.Subject;
            obj.CallType = str.CallType;
            obj.CompletedDateTime = str.CompletedDateTime;
            obj.lId = result.ID;
            results.add(obj);
Ashu sharma 38Ashu sharma 38
Hi Rounak..

Its working fine.
Now  I have check while deploy.Will connect you.
Thanks
Ashu sharma 38Ashu sharma 38
Hi,
Getting 50% code coverage.

Main class


@RestResource(urlMapping='/leadactivity/getlist/*')
global with sharing  class myActivityTask {
    
    @HttpGet
    global static  list<cust_map> doGetLead(){
        
        list<task> activityLog=new list<task> ();
        
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        map<string,string> paramsMap=RestContext.request.params;
        string actdate=paramsMap.get('actdate');
        Datetime dt1 = Datetime.valueOf(actdate);
        list<cust_map> results = new list<cust_map>();        
        list<Task> taskList=[SELECT WhoId,CompletedDateTime,Id,who.type FROM Task where CreatedDate>:dt1];
        for(task str:taskList){
            cust_map obj = new cust_map();
            if(str.who.type!='Lead')
                continue;
           
            Lead result = [SELECT id FROM Lead WHERE Id = :str.WhoId];

            obj.LeadID =     str.WhoId;
         
            obj.CallDateTime = str.CompletedDateTime;
         
            results.add(obj);
        }
       
        return results;
    }
    global class cust_map{
        Global String LeadID=null;
        Global String CallCenterAgent=null;
        Global Datetime CallDateTime=null;
        Global String LMSID = null;
    }
    }
    

Test Class
=====
@isTest
private class MyActivityTask_Test{
   
   public testmethod static void MyActivityTask(){
       
       // insert lead data
       lead l = new lead();
       l.LastName = 'Test Lead';
       l.Company = 'Test Company';
       l.Status = 'Closed - Converted';
       insert l;
       
       task t = new task();
       t.Subject = 'Test Subject';
       t.Status = 'new';
       t.Priority = 'Normal';
       t.CallType = 'Outbound';
       t.WhoId = l.Id;
       insert t;
       
   system.Test.startTest();
       
       // call custom controller
       myActivityTask mat = new myActivityTask();
       myActivityTask.cust_map wrap = new myActivityTask.cust_map();
       wrap.LeadID = t.WhoId;
       wrap.CallDateTime = t.CompletedDateTime;
     
       RestResponse res = new RestResponse();
       RestRequest req = new RestRequest();
       
       req.params.put('actdate', 'my_actdate');
       
       req.httpMethod = 'Get';
       req.addHeader('Content-Type', 'application/json'); // Add a JSON Header as it is validated
       req.requestURI = '/services/apexrest/https:/veditechnologies-dev-ed.my.salesforce.com/leadactivity/getlist' ;  
       RestContext.request = req;
       RestContext.response = res;
       
       List<myActivityTask.cust_map> results = myActivityTask.doGetLead();
       
       system.Test.stopTest();
     
   }
   
}


Thanks
Rounak SharmaRounak Sharma
hi sathish,

how it worked? what u did?

Can you please tell me which lines not covered?
thanks
Ashu sharma 38Ashu sharma 38
Hi Rounak..

Using wrapper and make object for that.

Below lines not covering

    Datetime dt1 = Datetime.valueOf(actdate);
        list<cust_map> results = new list<cust_map>();        
        list<Task> taskList=[SELECT WhoId,CompletedDateTime,Id,who.type FROM Task where CreatedDate>:dt1];
        for(task str:taskList){
            cust_map obj = new cust_map();
            if(str.who.type!='Lead')
}

Thank you for your response.Kindly if possible.