From 7a9ff4c63c42c689ce21b3ec94c6f0e157789401 Mon Sep 17 00:00:00 2001 From: Wayne Date: Sun, 19 May 2024 22:31:53 +0900 Subject: [PATCH] Return full timesheet for team member --- .../timesheet/service/TimesheetsService.kt | 17 ++++++----------- .../timesheet/web/TimesheetsController.kt | 6 ++++-- .../timesheet/web/models/TeamTimeEntry.kt | 3 ++- 3 files changed, 12 insertions(+), 14 deletions(-) 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 48d7621..1324c4b 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 @@ -57,11 +57,13 @@ open class TimesheetsService( } @Transactional - open fun saveMemberTimeEntry(staffId: Long, entry: TimeEntry): TimeEntry { + open fun saveMemberTimeEntry(staffId: Long, entry: TimeEntry, recordDate: LocalDate?): 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) + val timesheet = timesheetRepository.findById(entry.id).getOrDefault(Timesheet()).apply { val task = entry.taskId?.let { taskRepository.findById(it).getOrNull() } val project = entry.projectId?.let { projectRepository.findById(it).getOrNull() } @@ -71,19 +73,12 @@ open class TimesheetsService( this.otConsumed = entry.otHours this.projectTask = projectTask this.remark = entry.remark + this.recordDate = this.recordDate ?: recordDate + this.staff = this.staff ?: memberStaff } timesheetRepository.save(timesheet) - - return TimeEntry( - id = timesheet.id!!, - projectId = timesheet.projectTask?.project?.id, - taskId = timesheet.projectTask?.task?.id, - taskGroupId = timesheet.projectTask?.task?.taskGroup?.id, - inputHours = timesheet.normalConsumed ?: 0.0, - otHours = timesheet.otConsumed ?: 0.0, - remark = timesheet.remark - ) + return transformToTimeEntryMap(timesheetRepository.findAllByStaff(memberStaff)) } open fun getTimesheet(): Map> { 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 a24a4db..be9bbcc 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 @@ -51,8 +51,10 @@ class TimesheetsController(private val timesheetsService: TimesheetsService, pri } @PostMapping("/saveMemberEntry") - fun saveMemberEntry(@Valid @RequestBody request: TeamTimeEntry): TimeEntry { - return timesheetsService.saveMemberTimeEntry(request.staffId, request.entry) + fun saveMemberEntry(@Valid @RequestBody request: TeamTimeEntry): Map> { + return timesheetsService.saveMemberTimeEntry(request.staffId, request.entry, runCatching { + LocalDate.parse(request.recordDate, DateTimeFormatter.ISO_LOCAL_DATE) + }.getOrNull()) } @GetMapping("/leaves") diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamTimeEntry.kt b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamTimeEntry.kt index 75bab5a..9976073 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamTimeEntry.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TeamTimeEntry.kt @@ -2,5 +2,6 @@ package com.ffii.tsms.modules.timesheet.web.models data class TeamTimeEntry( val staffId: Long, - val entry: TimeEntry + val entry: TimeEntry, + val recordDate: String, )