diff --git a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt index e0fc456..501f1c5 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/StaffsService.kt @@ -34,7 +34,8 @@ open class StaffsService( ) : AbstractBaseEntityService(jdbcDao, staffRepository) { open fun getTeamLeads(): List { // TODO: Replace by actual logic - return staffRepository.findAllStaffSearchInfoByIdIn(listOf(1, 2)) + val teamIds = teamRepository.findAll().map { team -> team.staff.id } + return staffRepository.findAllStaffSearchInfoByIdIn(teamIds) } open fun allStaff(): List { diff --git a/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt b/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt index 3e563a5..bf0b9c9 100644 --- a/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt +++ b/src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt @@ -1,13 +1,15 @@ package com.ffii.tsms.modules.project.service +import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.project.entity.* import org.springframework.stereotype.Service @Service class TasksService( - private val taskTemplateRepository: TaskTemplateRepository, - private val taskRepository: TaskRepository, - private val taskGroupRepository: TaskGroupRepository + private val taskTemplateRepository: TaskTemplateRepository, + private val taskRepository: TaskRepository, + private val taskGroupRepository: TaskGroupRepository, + private val jdbcDao: JdbcDao, ) { fun allTasks(): List { return taskRepository.findAll() @@ -17,9 +19,18 @@ class TasksService( return taskTemplateRepository.findAll() } - fun saveTaskTemplate(code: String, name: String, taskIds: List): TaskTemplate { + fun findTaskTemplate(id: Long): TaskTemplate { + return taskTemplateRepository.findById(id).orElse(TaskTemplate()) + } + + fun deleteTaskTemplate(id: Long) { + taskTemplateRepository.deleteById(id) + } + fun saveTaskTemplate(code: String, name: String, taskIds: List, id: Long?): TaskTemplate { + val taskTemplate = if (id != null && id > 0) findTaskTemplate(id) else TaskTemplate() + return taskTemplateRepository.save( - TaskTemplate().apply { + taskTemplate.apply { this.name = name this.code = code this.tasks = taskRepository.findAllById(taskIds) diff --git a/src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt b/src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt index 8de3826..74e4ca1 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt @@ -5,11 +5,8 @@ import com.ffii.tsms.modules.project.entity.TaskTemplate import com.ffii.tsms.modules.project.service.TasksService import com.ffii.tsms.modules.project.web.models.NewTaskTemplateRequest import jakarta.validation.Valid -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.PostMapping -import org.springframework.web.bind.annotation.RequestBody -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.http.HttpStatus +import org.springframework.web.bind.annotation.* @RestController @RequestMapping("/tasks") @@ -24,12 +21,24 @@ class TasksController(private val tasksService: TasksService) { return tasksService.allTaskTemplates() } - @PostMapping("/templates/new") + @GetMapping("/templates/{id}") + fun findTaskTemplate(@PathVariable id: Long): TaskTemplate { + return tasksService.findTaskTemplate(id) + } + + @DeleteMapping("/templates/{id}") + @ResponseStatus(HttpStatus.NO_CONTENT) + fun deleteTaskTemplate(@PathVariable id: Long) { + tasksService.deleteTaskTemplate(id) + } + + @PostMapping("/templates/save") fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): TaskTemplate { return tasksService.saveTaskTemplate( - newTaskTemplate.code, - newTaskTemplate.name, - newTaskTemplate.taskIds + newTaskTemplate.code, + newTaskTemplate.name, + newTaskTemplate.taskIds, + newTaskTemplate.id ) } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateRequest.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateRequest.kt index f6fd3af..f15e73b 100644 --- a/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateRequest.kt @@ -7,5 +7,7 @@ data class NewTaskTemplateRequest( val code: String, @field:NotBlank(message = "name cannot be empty") val name: String, - val taskIds: List = emptyList() + val taskIds: List = emptyList(), + + val id: Long? )