From f9f5d773d47117b5a61ef02655c2501c6b0afaef Mon Sep 17 00:00:00 2001 From: "cyril.tsui" Date: Fri, 31 May 2024 14:47:45 +0800 Subject: [PATCH] update task template (check duplicate code) --- .../project/entity/TaskTemplateRepository.kt | 1 + .../modules/project/service/TasksService.kt | 28 ++++++++++++------- .../modules/project/web/TasksController.kt | 3 +- .../web/models/NewTaskTemplateResponse.kt | 8 ++++++ 4 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt diff --git a/src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt b/src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt index 90efb7c..8b0c701 100644 --- a/src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt +++ b/src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt @@ -3,4 +3,5 @@ package com.ffii.tsms.modules.project.entity; import com.ffii.core.support.AbstractRepository interface TaskTemplateRepository : AbstractRepository { + fun findByCode(code: String): TaskTemplate? } \ No newline at end of file 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 98d6247..acebfab 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 @@ -3,10 +3,7 @@ package com.ffii.tsms.modules.project.service import com.ffii.core.support.JdbcDao import com.ffii.tsms.modules.data.entity.GradeRepository import com.ffii.tsms.modules.project.entity.* -import com.ffii.tsms.modules.project.web.models.EditTaskTemplateDetails -import com.ffii.tsms.modules.project.web.models.NewProjectRequest -import com.ffii.tsms.modules.project.web.models.NewTaskTemplateRequest -import com.ffii.tsms.modules.project.web.models.TaskGroupAllocation +import com.ffii.tsms.modules.project.web.models.* import org.springframework.stereotype.Service import kotlin.jvm.optionals.getOrNull @@ -36,6 +33,10 @@ class TasksService( taskTemplateRepository.deleteById(id) } + fun findTaskTemplateByCode(code: String): TaskTemplate? { + return taskTemplateRepository.findByCode(code) + } + fun getTaskTemplateDetails(id: Long): EditTaskTemplateDetails? { val taskTemplate = taskTemplateRepository.findById(id) @@ -63,8 +64,19 @@ class TasksService( } } - fun saveTaskTemplate(request: NewTaskTemplateRequest): TaskTemplate { + fun saveTaskTemplate(request: NewTaskTemplateRequest): NewTaskTemplateResponse { val id = request.id + + val duplicateTaskTemplate = findTaskTemplateByCode(request.code) + + //check duplicate customer + if (duplicateTaskTemplate != null && duplicateTaskTemplate.id?.equals(id) == false) { + return NewTaskTemplateResponse( + taskTemplate = duplicateTaskTemplate, + message = "The task template code has already existed" + ); + } + val taskTemplate = if (id != null && id > 0) findTaskTemplate(id) else TaskTemplate() taskTemplate.apply { this.name = request.name @@ -96,17 +108,13 @@ class TasksService( val savedTaskTemplate = taskTemplateRepository.save(taskTemplate) - - println(taskTemplateGroupAllocationRepository.findAllByTaskTemplate(taskTemplate).size) - println(groupAllocations.size) - println(taskTemplateGroupAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(gradeAllocations.toSet()).size) taskTemplateGradeAllocationRepository.deleteAll(taskTemplateGradeAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(gradeAllocations.toSet())) taskTemplateGroupAllocationRepository.deleteAll(taskTemplateGroupAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(groupAllocations.toSet())) taskTemplateGradeAllocationRepository.saveAll(gradeAllocations) taskTemplateGroupAllocationRepository.saveAll(groupAllocations) - return savedTaskTemplate + return NewTaskTemplateResponse(taskTemplate = savedTaskTemplate, message = "Success"); } fun allTaskGroups(): List { 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 a454bbc..51c68b1 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 @@ -6,6 +6,7 @@ import com.ffii.tsms.modules.project.entity.TaskTemplate import com.ffii.tsms.modules.project.service.TasksService import com.ffii.tsms.modules.project.web.models.EditTaskTemplateDetails import com.ffii.tsms.modules.project.web.models.NewTaskTemplateRequest +import com.ffii.tsms.modules.project.web.models.NewTaskTemplateResponse import jakarta.validation.Valid import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.* @@ -40,7 +41,7 @@ class TasksController(private val tasksService: TasksService) { } @PostMapping("/templates/save") - fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): TaskTemplate { + fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): NewTaskTemplateResponse { return tasksService.saveTaskTemplate(newTaskTemplate) } } \ No newline at end of file diff --git a/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt b/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt new file mode 100644 index 0000000..8fdb123 --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt @@ -0,0 +1,8 @@ +package com.ffii.tsms.modules.project.web.models + +import com.ffii.tsms.modules.project.entity.TaskTemplate + +data class NewTaskTemplateResponse ( + val taskTemplate: TaskTemplate, + val message: String, +) \ No newline at end of file