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
Mukesh Kumar 470Mukesh Kumar 470 

How can I get only subject records from these apex code.

public with sharing class HTMLEmailStatusController {
    @TestVisible
    private static Boolean doNotApplyRecordId = false;
    
    @AuraEnabled(cacheable=true)
    public static List<Map<String, Object>> getEmailStatuses(String objectName, String recordId){
        
        // Get list of all the EmailStatus records 
        // associated with the passed recordId
        
        System.debug( ' Querying ' + objectName + ' with id = ' + recordId );
        
        // Build SOQL query
        String query = 'SELECT';
                query += ' ( SELECT';
                query += ' Id,'; 
                query += ' TaskId,'; 
                query += ' Task.Subject,'; 
                query += ' CreatedDate,'; 
                query += ' FirstOpenDate,'; 
                query += ' LastOpenDate,'; 
                query += ' TimesOpened,'; 
                query += ' EmailTemplateName'; 
                query += ' FROM'; 
                query += ' EmailStatuses'; 
                query += ' ) ';
                
            query += ' FROM';
            query +=  ' ' + objectName;
            
            if( !doNotApplyRecordId )  // Added to bypass the test because of platform limitations
                query += ' WHERE Id = \'' + recordId + '\'';
        
        System.debug( ' Constructed Query ' + query );
        
        List<Map<String, Object>> emailStatuses = new List<Map<String, Object>>();
        
        // Query records
        for( sObject s : Database.query( query ) ) {
            
            if( s.getSObjects( 'EmailStatuses' ) != null ) {
            
                for( EmailStatus es : (List<EmailStatus>) s.getSObjects( 'EmailStatuses' ) ) {
                     
                    emailStatuses.add( new Map<String, Object> {
                        'Id' => es.Id,
                        'TaskId' => es.Task.Id,
                        'Subject' => es.Task.Subject,
                        'CreatedDate' => es.CreatedDate,
                        'CreatedDateTimestamp' => es.CreatedDate != null ? es.CreatedDate.getTime() : null,
                        'FirstOpenDate' => es.FirstOpenDate,
                        'FirstOpenDateTimestamp' => es.FirstOpenDate != null ? es.FirstOpenDate.getTime() : null,
                        'LastOpenDate' => es.LastOpenDate,
                        'LastOpenDateTimestamp' => es.LastOpenDate != null ? es.LastOpenDate.getTime() : null,
                        'TimesOpened' => es.TimesOpened
                    });
                    
                }
            }
        }
        
        return emailStatuses;
        
    }
    
}
AbhinavAbhinav (Salesforce Developers) 
Not able to understand the requirement .Please elaborate.

Thanks!
Mukesh Kumar 470Mukesh Kumar 470
how to return only subject recods