| @@ -34,7 +34,8 @@ open class StaffsService( | |||||
| ) : AbstractBaseEntityService<Staff, Long, StaffRepository>(jdbcDao, staffRepository) { | ) : AbstractBaseEntityService<Staff, Long, StaffRepository>(jdbcDao, staffRepository) { | ||||
| open fun getTeamLeads(): List<StaffSearchInfo> { | open fun getTeamLeads(): List<StaffSearchInfo> { | ||||
| // TODO: Replace by actual logic | // 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<StaffSearchInfo> { | open fun allStaff(): List<StaffSearchInfo> { | ||||
| @@ -1,13 +1,15 @@ | |||||
| package com.ffii.tsms.modules.project.service | package com.ffii.tsms.modules.project.service | ||||
| import com.ffii.core.support.JdbcDao | |||||
| import com.ffii.tsms.modules.project.entity.* | import com.ffii.tsms.modules.project.entity.* | ||||
| import org.springframework.stereotype.Service | import org.springframework.stereotype.Service | ||||
| @Service | @Service | ||||
| class TasksService( | 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<Task> { | fun allTasks(): List<Task> { | ||||
| return taskRepository.findAll() | return taskRepository.findAll() | ||||
| @@ -17,9 +19,18 @@ class TasksService( | |||||
| return taskTemplateRepository.findAll() | return taskTemplateRepository.findAll() | ||||
| } | } | ||||
| fun saveTaskTemplate(code: String, name: String, taskIds: List<Long>): 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<Long>, id: Long?): TaskTemplate { | |||||
| val taskTemplate = if (id != null && id > 0) findTaskTemplate(id) else TaskTemplate() | |||||
| return taskTemplateRepository.save<TaskTemplate>( | return taskTemplateRepository.save<TaskTemplate>( | ||||
| TaskTemplate().apply { | |||||
| taskTemplate.apply { | |||||
| this.name = name | this.name = name | ||||
| this.code = code | this.code = code | ||||
| this.tasks = taskRepository.findAllById(taskIds) | this.tasks = taskRepository.findAllById(taskIds) | ||||
| @@ -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.service.TasksService | ||||
| import com.ffii.tsms.modules.project.web.models.NewTaskTemplateRequest | import com.ffii.tsms.modules.project.web.models.NewTaskTemplateRequest | ||||
| import jakarta.validation.Valid | 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 | @RestController | ||||
| @RequestMapping("/tasks") | @RequestMapping("/tasks") | ||||
| @@ -24,12 +21,24 @@ class TasksController(private val tasksService: TasksService) { | |||||
| return tasksService.allTaskTemplates() | 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 { | fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): TaskTemplate { | ||||
| return tasksService.saveTaskTemplate( | return tasksService.saveTaskTemplate( | ||||
| newTaskTemplate.code, | |||||
| newTaskTemplate.name, | |||||
| newTaskTemplate.taskIds | |||||
| newTaskTemplate.code, | |||||
| newTaskTemplate.name, | |||||
| newTaskTemplate.taskIds, | |||||
| newTaskTemplate.id | |||||
| ) | ) | ||||
| } | } | ||||
| } | } | ||||
| @@ -7,5 +7,7 @@ data class NewTaskTemplateRequest( | |||||
| val code: String, | val code: String, | ||||
| @field:NotBlank(message = "name cannot be empty") | @field:NotBlank(message = "name cannot be empty") | ||||
| val name: String, | val name: String, | ||||
| val taskIds: List<Long> = emptyList() | |||||
| val taskIds: List<Long> = emptyList(), | |||||
| val id: Long? | |||||
| ) | ) | ||||