I am trying to sort list x in descending order by Delta__c. I have been told that I should use a wrapper class and use the implements comparable class. I am getting the error even though Delta__c is an integer field:
Return value must be of type: Integer for the compareTO class
global Class Engagement {
public List<Engagement__c> top10 {get;set;}
public Engagement__c[] getDelta(){
List<Engagement__c> x = [SELECT Name, ID,Engagement_Score__c,CreatedDate,Account_ID__c,Delta__c,Account_Name__c,Strategic_Account_Tier__c
FROM Engagement__c
WHERE (CreatedDate2EqualsToday_1__c = TRUE OR CreatedDate2MinusYesterday__c = 0 OR CreatedDate2MinusYesterday2__c=2) AND Account_Sales_Team__c = 'US'
ORDER BY Account_ID__c,CreatedDate ASC];
if(!x.isEmpty())
{
for(Integer i=1; i<x.size();i++)
{
if(x[i].Account_ID__c == x[i-1].Account_ID__c)
{
x[i].Delta__c = x[i].Engagement_Score__c-x[i-1].Engagement_Score__c;
x.remove(i-1);
i++;
}
else system.debug('nothing found');
}
}
EngagementWrapper[] temp = new EngagementWrapper[0];
for(Engagement__c record: x) {
temp.add(new EngagementWrapper(record));
}
temp.sort();
Engagement__c[] y = new Engagement__c[0];
for(EngagementWrapper wrapper: temp) {
y.add(wrapper.record);
}
return y;
}
global class EngagementWrapper implements Comparable {
Engagement__c record;
EngagementWrapper(Engagement__c engagement) {
record = engagement;
}
global Integer compareTo(Object other) {
return ((EngagementWrapper)other).record.Delta__c-record.Delta__c;
}
}
}