diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/service/LeaveService.kt b/src/main/java/com/ffii/tsms/modules/timesheet/service/LeaveService.kt index 97658ac..73a42ba 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/service/LeaveService.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/service/LeaveService.kt @@ -75,6 +75,17 @@ open class LeaveService( return transformToLeaveEntryMap(leaveRepository.findAllByStaff(memberStaff)) } + open fun deleteMemberLeaveEntry(staffId: Long, entryId: Long): Map> { + val currentStaff = staffsService.currentStaff() ?: throw BadRequestException() + // Make sure current staff is a team lead + teamService.getMyTeamForStaff(currentStaff) ?: throw BadRequestException() + + val memberStaff = staffsService.getStaff(staffId) + + leaveRepository.deleteById(entryId) + return transformToLeaveEntryMap(leaveRepository.findAllByStaff(memberStaff)) + } + open fun getTeamMemberLeave(): Map { val currentStaff = staffsService.currentStaff() ?: return emptyMap() // Get team where current staff is team lead diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt b/src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt index 206daf0..96f9c23 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/service/TimesheetsService.kt @@ -83,6 +83,17 @@ open class TimesheetsService( return transformToTimeEntryMap(timesheetRepository.findAllByStaff(memberStaff)) } + open fun deleteMemberTimeEntry(staffId: Long, entryId: Long): Map> { + val currentStaff = staffsService.currentStaff() ?: throw BadRequestException() + // Make sure current staff is a team lead + teamService.getMyTeamForStaff(currentStaff) ?: throw BadRequestException() + + val memberStaff = staffsService.getStaff(staffId) + + timesheetRepository.deleteById(entryId) + return transformToTimeEntryMap(timesheetRepository.findAllByStaff(memberStaff)) + } + open fun getTimesheet(): Map> { // Need to be associated with a staff val currentStaff = staffsService.currentStaff() ?: return emptyMap() diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/web/TimesheetsController.kt b/src/main/java/com/ffii/tsms/modules/timesheet/web/TimesheetsController.kt index df9bbe3..6f2d4ce 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/web/TimesheetsController.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/web/TimesheetsController.kt @@ -66,6 +66,16 @@ class TimesheetsController(private val timesheetsService: TimesheetsService, pri }.getOrNull()) } + @PostMapping("/deleteMemberEntry") + fun deleteMemberEntry(@Valid @RequestBody request: TeamEntryDelete): Map> { + return timesheetsService.deleteMemberTimeEntry(request.staffId, request.entryId) + } + + @PostMapping("/deleteMemberLeave") + fun deleteMemberLeave(@Valid @RequestBody request: TeamEntryDelete): Map> { + return leaveService.deleteMemberLeaveEntry(request.staffId, request.entryId) + } + @GetMapping("/leaves") fun getLeaveEntry(): Map> { return leaveService.getLeaves() diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamEntryDelete.kt b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamEntryDelete.kt new file mode 100644 index 0000000..a79a278 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamEntryDelete.kt @@ -0,0 +1,6 @@ +package com.ffii.tsms.modules.timesheet.web.models + +data class TeamEntryDelete( + val staffId: Long, + val entryId: Long, +)