Browse Source

update task template (check duplicate code)

tags/Baseline_30082024_BACKEND_UAT
cyril.tsui 1 year ago
parent
commit
f9f5d773d4
4 changed files with 29 additions and 11 deletions
  1. +1
    -0
      src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt
  2. +18
    -10
      src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt
  3. +2
    -1
      src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt
  4. +8
    -0
      src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt

+ 1
- 0
src/main/java/com/ffii/tsms/modules/project/entity/TaskTemplateRepository.kt View File

@@ -3,4 +3,5 @@ package com.ffii.tsms.modules.project.entity;
import com.ffii.core.support.AbstractRepository import com.ffii.core.support.AbstractRepository


interface TaskTemplateRepository : AbstractRepository<TaskTemplate, Long> { interface TaskTemplateRepository : AbstractRepository<TaskTemplate, Long> {
fun findByCode(code: String): TaskTemplate?
} }

+ 18
- 10
src/main/java/com/ffii/tsms/modules/project/service/TasksService.kt View File

@@ -3,10 +3,7 @@ package com.ffii.tsms.modules.project.service
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.tsms.modules.data.entity.GradeRepository import com.ffii.tsms.modules.data.entity.GradeRepository
import com.ffii.tsms.modules.project.entity.* 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 org.springframework.stereotype.Service
import kotlin.jvm.optionals.getOrNull import kotlin.jvm.optionals.getOrNull


@@ -36,6 +33,10 @@ class TasksService(
taskTemplateRepository.deleteById(id) taskTemplateRepository.deleteById(id)
} }


fun findTaskTemplateByCode(code: String): TaskTemplate? {
return taskTemplateRepository.findByCode(code)
}

fun getTaskTemplateDetails(id: Long): EditTaskTemplateDetails? { fun getTaskTemplateDetails(id: Long): EditTaskTemplateDetails? {
val taskTemplate = taskTemplateRepository.findById(id) 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 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() val taskTemplate = if (id != null && id > 0) findTaskTemplate(id) else TaskTemplate()
taskTemplate.apply { taskTemplate.apply {
this.name = request.name this.name = request.name
@@ -96,17 +108,13 @@ class TasksService(


val savedTaskTemplate = taskTemplateRepository.save<TaskTemplate>(taskTemplate) val savedTaskTemplate = taskTemplateRepository.save<TaskTemplate>(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())) taskTemplateGradeAllocationRepository.deleteAll(taskTemplateGradeAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(gradeAllocations.toSet()))
taskTemplateGroupAllocationRepository.deleteAll(taskTemplateGroupAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(groupAllocations.toSet())) taskTemplateGroupAllocationRepository.deleteAll(taskTemplateGroupAllocationRepository.findAllByTaskTemplate(taskTemplate).subtract(groupAllocations.toSet()))


taskTemplateGradeAllocationRepository.saveAll<TaskTemplateGradeAllocation>(gradeAllocations) taskTemplateGradeAllocationRepository.saveAll<TaskTemplateGradeAllocation>(gradeAllocations)
taskTemplateGroupAllocationRepository.saveAll<TaskTemplateGroupAllocation>(groupAllocations) taskTemplateGroupAllocationRepository.saveAll<TaskTemplateGroupAllocation>(groupAllocations)


return savedTaskTemplate
return NewTaskTemplateResponse(taskTemplate = savedTaskTemplate, message = "Success");
} }


fun allTaskGroups(): List<TaskGroup> { fun allTaskGroups(): List<TaskGroup> {


+ 2
- 1
src/main/java/com/ffii/tsms/modules/project/web/TasksController.kt View File

@@ -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.service.TasksService
import com.ffii.tsms.modules.project.web.models.EditTaskTemplateDetails 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.NewTaskTemplateRequest
import com.ffii.tsms.modules.project.web.models.NewTaskTemplateResponse
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.HttpStatus import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
@@ -40,7 +41,7 @@ class TasksController(private val tasksService: TasksService) {
} }


@PostMapping("/templates/save") @PostMapping("/templates/save")
fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): TaskTemplate {
fun saveTaskTemplate(@Valid @RequestBody newTaskTemplate: NewTaskTemplateRequest): NewTaskTemplateResponse {
return tasksService.saveTaskTemplate(newTaskTemplate) return tasksService.saveTaskTemplate(newTaskTemplate)
} }
} }

+ 8
- 0
src/main/java/com/ffii/tsms/modules/project/web/models/NewTaskTemplateResponse.kt View File

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

Loading…
Cancel
Save