@@ -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? | |||||
) | ) |