diff --git a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt index fc10e84..01b6aff 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/ProjectsService.kt @@ -88,6 +88,24 @@ open class ProjectsService( } ?: emptyList() } + open fun allProjectWithTasks(): List { + return projectRepository.findAll().map { project -> + ProjectWithTasks( + id = project.id!!, + code = project.code!!, + name = project.name!!, + tasks = projectTaskRepository.findAllByProject(project).mapNotNull { pt -> pt.task }, + milestones = milestoneRepository.findAllByProject(project) + .filter { milestone -> milestone.taskGroup?.id != null } + .associateBy { milestone -> milestone.taskGroup!!.id!! } + .mapValues { (_, milestone) -> MilestoneInfo( + startDate = milestone.startDate?.format(DateTimeFormatter.ISO_LOCAL_DATE), + endDate = milestone.endDate?.format(DateTimeFormatter.ISO_LOCAL_DATE) + ) } + ) + } + } + open fun allProjectCategories(): List { return projectCategoryRepository.findAll() } diff --git a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt index 71e7321..0bf696a 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/ProjectsController.kt @@ -5,10 +5,7 @@ import com.ffii.tsms.modules.data.entity.* import com.ffii.tsms.modules.project.entity.projections.ProjectSearchInfo import com.ffii.tsms.modules.project.entity.ProjectCategory import com.ffii.tsms.modules.project.service.ProjectsService -import com.ffii.tsms.modules.project.web.models.AssignedProject -import com.ffii.tsms.modules.project.web.models.EditProjectDetails -import com.ffii.tsms.modules.project.web.models.NewProjectRequest -import com.ffii.tsms.modules.project.web.models.NewProjectResponse +import com.ffii.tsms.modules.project.web.models.* import jakarta.validation.Valid import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.* @@ -32,6 +29,11 @@ class ProjectsController(private val projectsService: ProjectsService) { return projectsService.allAssignedProjects() } + @GetMapping("/allProjectWithTasks") + fun allProjectsWithTasks(): List { + return projectsService.allProjectWithTasks() + } + @GetMapping("/categories") fun projectCategories(): List { return projectsService.allProjectCategories() diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectWithTasks.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectWithTasks.kt new file mode 100644 index 0000000..83b9922 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/ProjectWithTasks.kt @@ -0,0 +1,11 @@ +package com.ffii.tsms.modules.project.web.models + +import com.ffii.tsms.modules.project.entity.Task + +data class ProjectWithTasks( + val id: Long, + val code: String, + val name: String, + val tasks: List, + val milestones: Map +) 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 474953d..8dbc750 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 @@ -41,6 +41,7 @@ open class LeaveService( this.recordDate = entryDate this.leaveType = leaveTypesMap[leaveEntry.leaveTypeId] this.leaveHours = leaveEntry.inputHours + this.remark = leaveEntry.remark } } } @@ -57,7 +58,8 @@ open class LeaveService( LeaveEntry( id = leave.id!!, inputHours = leave.leaveHours ?: 0.0, - leaveTypeId = leave.leaveType!!.id + leaveTypeId = leave.leaveType!!.id, + remark = leave.remark ) } } } 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 65245e8..bf6960c 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 @@ -42,6 +42,7 @@ open class TimesheetsService( this.recordDate = entryDate this.normalConsumed = timeEntry.inputHours this.projectTask = projectTask + this.remark = timeEntry.remark } } } @@ -66,7 +67,8 @@ open class TimesheetsService( projectId = timesheet.projectTask?.project?.id, taskId = timesheet.projectTask?.task?.id, taskGroupId = timesheet.projectTask?.task?.taskGroup?.id, - inputHours = timesheet.normalConsumed ?: 0.0 + inputHours = timesheet.normalConsumed ?: 0.0, + remark = timesheet.remark ) } } } diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/LeaveEntry.kt b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/LeaveEntry.kt index 315e1a1..af3a0c5 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/LeaveEntry.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/LeaveEntry.kt @@ -3,5 +3,6 @@ package com.ffii.tsms.modules.timesheet.web.models data class LeaveEntry( val id: Long, val leaveTypeId: Long?, - val inputHours: Double + val inputHours: Double, + val remark: String? ) diff --git a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TimeEntry.kt b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TimeEntry.kt index db218f3..e206308 100644 --- a/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TimeEntry.kt +++ b/src/main/java/com/ffii/tsms/modules/timesheet/web/models/TimeEntry.kt @@ -6,5 +6,6 @@ data class TimeEntry( val projectId: Long?, val taskGroupId: Long?, val taskId: Long?, - val inputHours: Double + val inputHours: Double, + val remark: String? ) \ No newline at end of file