Имеет ли Salesforce возможность отображать таблицу следующим образом:
См. Рисунок
Например, данные - это карта, где ключ - сотрудник, а значение - список.отчетов.
В таблице должно быть указано, какие сотрудники не заполняли отчет за последние 3 месяца.
В отчете есть поле Искать сотрудника и месяц.
Какиспользовать апекс: повторить в этом случае?
КОНТРОЛЛЕР
podchinennie = false;
lastMonths = new List<String>();
lastYears = new List<Integer>();
for (Integer i = 0; i < 3; i++) {
String num = String.valueOf(Date.today().addMonths(-i).Month());
if (num.length() == 1) num = '0' + num;
lastMonths.add(num);
if (!lastYears.contains(date.today().addMonths(-i).year())) {
lastYears.add(date.today().addMonths(-i).year());
}
}
lastMonths.sort();
lastYears.sort();
System.debug(lastMonths);
System.debug(lastYears);
mrlist = [
select Id, Name,CreatedById,
TERF_MR_month__c, TERF_MR_year__c,
TERF_MR_EmployeeFullName__c, TERF_MR_EmployeeEmail__c, TERF_MR_Status__c
from TERF_MR__c
where CreatedById = :UserInfo.getUserId() OR TERF_MR_EmployeeEmail__c = :UserInfo.getUserEmail()
order by CreatedDate desc
];
empsReportList = [
select Id, Name,
TERF_MR_month__c, TERF_MR_year__c,
TERF_MR_EmployeeFullName__c,
TERF_MR_EmployeeEmail__c,
TERF_MR_Status__c,
TERF_MR_EmployeeManagerEmail__c,
TERF_MR_monthNumber__c
from TERF_MR__c
where TERF_MR_EmployeeManagerEmail__c = :UserInfo.getUserEmail() AND TERF_MR_monthNumber__c IN:lastMonths AND TERF_MR_year__c IN:lastYears
order by CreatedDate desc
];
List<TERF_Employee__c> emps = [SELECT Name, TERF_EMP_Manager__r.TERF_EMP_Email__c From TERF_Employee__c WHERE TERF_EMP_Manager__r.TERF_EMP_Email__c =: UserInfo.getUserEmail()];
Set<String> employees = new Set<String>();
if (!emps.isEmpty()) {
for (TERF_Employee__c emp : emps) {
employees.add(emp.Name);
}
}
if (empsReportList.size() > 0 && employees.size() > 0) {
empMap = new Map<String, Id[]>();
for (TERF_MR__c mr : empsReportList) {
for (String emp : employees) {
if (mr.TERF_MR_EmployeeFullname__c == emp) {
if (empMap.keySet().contains(emp)) {
if (mr.TERF_MR_monthNumber__c == lastMonths[0]) {
empMap.get(emp)[0] = mr.Id;
} else if (mr.TERF_MR_monthNumber__c == lastMonths[1]) {
empMap.get(emp)[1] = mr.Id;
} else if (mr.TERF_MR_monthNumber__c == lastMonths[2]) {
empMap.get(emp)[2] = mr.Id;
}
} else {
Id[] arr = new Id[3];
if (mr.TERF_MR_monthNumber__c == lastMonths[0]) {
arr[0] = mr.Id;
} else if (mr.TERF_MR_monthNumber__c == lastMonths[1]) {
arr[1] = mr.Id;
} else if (mr.TERF_MR_monthNumber__c == lastMonths[2]) {
arr[2] = mr.Id;
}
empMap.put(emp, arr);
}
}
}
}
if (empMap.size() > 0) {
podchinennie = true;
}
}
for (String empString: employees) {
if (!empMap.keySet().contains(empString)) {
empMap.put(empString, new Id[3]);
}
}
VF PAGE
<table class="interactiveTable" width="100%">
<thead>
<tr>
<td> Employee / Month </td>
<td>{!lastMonths[0]} </td>
<td>{!lastMonths[1]} </td>
<td> {!lastMonths[2]} </td>
</tr>
</thead>
<apex:repeat value="{!employees}" var="emp">
<tr>
<td>{!emp}</td>
<td>{!empMap[emp][0]}</td>
<td>{!empMap[emp][1]}</td>
<td>{!empMap[emp][2]}</td>
</tr>
</apex:repeat>
</table>