In my class I have 2 lists and I am displaying the results on a Visualforce component page.
I would like to add a column on my VF page where the value displayed is determined by the first 3 letters of the Salesforce custom object Id (String Id).
If Id startsWith 'a07' ---> replace with "Policy" OR If Id startsWith 'a0Y' ---> replace with "Claim"
public List<CoverageTeamMember> getCoverageTeam() {
Account a = getAccount(this.controller != null ? this.controller.getId() : accountId);
List<CoverageTeamMember> l = getCoverageTeam(a);
return l;
}
//Account query to get Servicer 1 & 2
private Account getAccount( ID account ) {
return [ SELECT Id, Producer__r.Name, Producer__r.Email__c, Producer__r.Work_Phone__c, Servicer_1__c, Serv1__r.Name, Serv1__r.Email__c, Serv1__r.Work_Phone__c, Servicer_2__c FROM Account WHERE Id = :account ];
}
//Policy query to get Active Policy Coverage Team Members
private List<CoverageTeamMember> getCoverageTeam( Account account ) {
List<CoverageTeamMember> result = this.getStaticCoverageTeam( account );
for ( AggregateResult records : [
SELECT Id, Servicer_Department_Name__c role, Servicer__r.Id name, Servicer__r.Name actualname, Servicer__r.Email__c email, Servicer__r.Work_Phone__c phone, Active__c a
FROM Policy__c
WHERE Account__c = :account.Id AND
Servicer_Department_Name__c != null AND
Servicer__c != null AND
Active__c = True
GROUP BY Id, Servicer_Department_Name__c, Servicer__r.Id, Servicer__r.Name, Servicer__r.Email__c, Servicer__r.Work_Phone__c, Active__c
] ) {
result.add( new CoverageTeamMember( records ) );
}
//Claims query to get Active Claims & Policy Coverage Team Members
for ( AggregateResult claims : [
SELECT Id, Servicer_Department_Name__c role, Servicer__r.Id name, Servicer__r.Name actualname, Servicer__r.Email__c email, Servicer__r.Work_Phone__c phone, IsClosed__c a
FROM Claim__c
WHERE Account__c = :account.Id AND
Servicer_Department_Name__c != null AND
Servicer__c != null AND
IsClosed__c = False
GROUP BY Id, Servicer_Department_Name__c, Servicer__r.Id, Servicer__r.Name, Servicer__r.Email__c, Servicer__r.Work_Phone__c, IsClosed__c
] ) {
result.add( new CoverageTeamMember( claims ) );
}
return result;
}
private List<CoverageTeamMember> getStaticCoverageTeam( Account account ) {
List<CoverageTeamMember> result = new List<CoverageTeamMember>();
result.add( new CoverageTeamMember('Client Account', 'Producer', account.Producer__r.Id, account.Producer__r.Name, account.Producer__r.Email__c, account.Producer__r.Work_Phone__c) );
result.add( new CoverageTeamMember('Client Account', 'Client Owner', account.Serv1__r.Id, account.Serv1__r.Name, account.Serv1__r.Email__c,account.Serv1__r.Work_Phone__c ) );
//result.add( new CoverageTeamMember( 'P&C Servicer Coordinator', account.Servicer_1__c ) );
//result.add( new CoverageTeamMember( 'Benefits Coordinator', account.Servicer_2__c ) );
return result;
}
public class CoverageTeamMember {
public final String id { get; set; }
public final String role { get; set; }
public final String name { get; set; }
public final String actualname { get; set; }
public final String email { get; set; }
public final String phone { get; set; }
public CoverageTeamMember( AggregateResult records) {
this(
String.valueOf( records.get( 'id' ) ),
String.valueOf( records.get( 'role' ) ),
String.valueOf( records.get( 'name' ) ),
String.valueOf( records.get( 'actualname' ) ),
String.valueOf( records.get( 'email' ) ),
String.valueOf( records.get( 'phone') ) );
}
public CoverageTeamMember(String id, String role, String name, String actualname, String email, String phone) {
this.id = id;
this.role = role;
this.name = name;
this.actualname = actualname;
this.email = email;
this.phone = phone;
}
}