0

When the user enters his name from third party application, The user needs to get all the records(Account(name,Phone,email),Contact(firstname,Lastname),Lead(email,mobile number)) matching the text entered by him.

I have used sosl for this purpose.I am able to get name of all accounts,contacts,leads.

I need to show the respective fields(Account(name,Phone,email),Contact(firstname,Lastname),Lead(email,mobile number)) of different objects.

Here follows my Webservice code:

global class exposewsdl{
global class requestKT{
    webservice string inputName;

}
global class responseOfWs{
    webservice String [] accounts = new List<String>();
    webservice String [] contacts = new List<String>();
    webservice String [] leads = new List<String>();
    webservice string errorFound;
}
webservice static responseOfWs getCaseDetailsFromcsNum(requestKT csNum){
    try{
        List<Lead> leadList =New List<Lead>();
         List<contact> conList= New List<contact>();
         List<account> accList=New List<account>();

         String searchStr1 = '*'+csNum.inputName+'*';
         String searchQuery = 'FIND \'' +searchStr1  + '\' IN ALL FIELDS RETURNING  Account (Name),Contact(name),Lead(name)';
        List<List <sObject>> searchList = search.query(searchQuery);
        accList = ((List<Account>)searchList[0]);
        conList  = ((List<contact>)searchList[1]);
        leadList = ((List<Lead>)searchList[2]);
        responseOfWs res = new responseOfWs();
        for (Integer i = 0; i<accList.size(); i++) {
        res.accounts.add(accList[i].name);
        }    
        for (Integer i = 0; i < conList.size(); i++) {
         res.contacts.add(conList[i].name);
        }
        for (Integer i = 0; i < leadList.size(); i++) {
        res.leads.add(leadList[i].name);
        }
        return res;
    }catch(Exception e){
        responseOfWs res = new responseOfWs();
        res.errorFound = e.getMessage();
        return res;
    }
}

}

Please me to show these field values also. Thanks

1
  • Is pojo class or inner class is required for this purpose.
    – Sathish
    Commented Jul 20, 2016 at 11:52

1 Answer 1

0

Your query should read like this:

String searchQuery = 'FIND \'' +searchStr1  + '\' IN ALL FIELDS RETURNING  Account 
    (Name,Phone,Email),Contact(FirstName,Lastname),Lead(Email,MobilePhone)';

You'll then need to make the appropriate adjustments in your code when you iterate on what's returned for each object to pull out each of the fields for each object recordId.

2
  • Yes, I queried these values. How to push the fields of each object to response. Can u please help me. Is pojo class or inner class is required.....
    – Sathish
    Commented Jul 21, 2016 at 4:31
  • You're going to need 1 or more inner classes to return this. You don't say how the return request is defined. But, each list will need a wrapper to combine the results of each record, plus I'd expect you to need a wrapper for the combined lists from each object as well. You're also going to need a method for handling return of errors in the body. This is too much to expect in a single answer. Try doing this first for a single object.
    – crmprogdev
    Commented Jul 21, 2016 at 13:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .