|
|
@@ -129,29 +129,37 @@ open class TimesheetsService( |
|
|
|
|
|
|
|
open fun getTeamMemberTimesheet(): Map<Long, TeamMemberTimeEntries> { |
|
|
|
val authorities = staffsService.currentAuthorities() ?: return emptyMap() |
|
|
|
|
|
|
|
if (authorities.stream().anyMatch { it.authority.equals("MAINTAIN_TIMESHEET") }) { |
|
|
|
val currentStaff = staffsService.currentStaff() |
|
|
|
// Get team where current staff is team lead |
|
|
|
|
|
|
|
val myTeam = if (currentStaff != null) teamService.getMyTeamForStaff(currentStaff) else null |
|
|
|
val teamMembers = if (myTeam != null) { |
|
|
|
staffsService.findAllByTeamId(myTeam.id!!).getOrDefault(emptyList()) |
|
|
|
} else { |
|
|
|
staffsService.findAll().getOrDefault(emptyList()) |
|
|
|
} |
|
|
|
if (currentStaff != null) { |
|
|
|
val isTeamLead = currentStaff.team.staff.id?.equals(currentStaff.id) |
|
|
|
// Get team where current staff is team lead |
|
|
|
|
|
|
|
val myTeam = teamService.getMyTeamForStaff(currentStaff) |
|
|
|
val teamMembers = if (myTeam != null && isTeamLead == true) { |
|
|
|
staffsService.findAllByTeamId(myTeam.id!!).getOrDefault(emptyList()) |
|
|
|
} else if (isTeamLead != true) { |
|
|
|
staffsService.findAllByIdIn(listOf(currentStaff.id!!)).getOrDefault(emptyList()) |
|
|
|
} else { |
|
|
|
staffsService.findAll().getOrDefault(emptyList()) |
|
|
|
} |
|
|
|
|
|
|
|
return teamMembers.filter { it.departDate == null }.associate { member -> |
|
|
|
Pair( |
|
|
|
member.id!!, |
|
|
|
TeamMemberTimeEntries( |
|
|
|
staffId = member.staffId, |
|
|
|
name = member.name, |
|
|
|
timeEntries = transformToTimeEntryMap(timesheetRepository.findAllByStaff(member)), |
|
|
|
employType = member.employType |
|
|
|
return teamMembers.filter { it.departDate == null || it.departDate > LocalDate.now() }.sortedBy { it.staffId }.associate { member -> |
|
|
|
Pair( |
|
|
|
member.id!!, |
|
|
|
TeamMemberTimeEntries( |
|
|
|
staffId = member.staffId, |
|
|
|
name = member.name, |
|
|
|
timeEntries = transformToTimeEntryMap(timesheetRepository.findAllByStaff(member)), |
|
|
|
employType = member.employType |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
} else return emptyMap() |
|
|
|
} |
|
|
|
|
|
|
|
return emptyMap() |
|
|
|
} |
|
|
|
|
|
|
|
private fun transformToTimeEntryMap(timesheets: List<Timesheet>): Map<String, List<TimeEntry>> { |
|
|
|