diff --git a/src/main/java/com/ffii/tsms/modules/data/service/SkillService.kt b/src/main/java/com/ffii/tsms/modules/data/service/SkillService.kt index 4b4c066..2a2b74b 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/SkillService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/SkillService.kt @@ -2,10 +2,9 @@ package com.ffii.tsms.modules.data.service import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.JdbcDao -import com.ffii.tsms.modules.data.entity.Department -import com.ffii.tsms.modules.data.entity.DepartmentRepository -import com.ffii.tsms.modules.data.entity.Skill -import com.ffii.tsms.modules.data.entity.SkillRepository +import com.ffii.tsms.modules.data.entity.* +import com.ffii.tsms.modules.data.web.models.NewSkillRequest +import com.ffii.tsms.modules.data.web.models.NewTeamRequest import org.springframework.stereotype.Service @@ -15,6 +14,34 @@ open class SkillService( private val jdbcDao: JdbcDao, ) : AbstractBaseEntityService(jdbcDao, skillRepository) { + open fun saveSkill(req: NewSkillRequest): Skill { + val skill = Skill().apply { + name = req.name + code = req.code + description = req.description + } + skillRepository.save(skill) + return skill + } + + open fun saveOrUpdate(req: NewSkillRequest): Skill { + val skill = if(req.id != null) find(req.id).get() else Skill() + if (req.id != null) { +// updateSkill(req, skill) + } else { + saveSkill(req) + } + return skill + } + + open fun list(args: Map): List> { + val sql = StringBuilder("select" + + " * " + + " from skill s " + + " where s.deleted = false " + ) + return jdbcDao.queryForList(sql.toString(), args) + } open fun combo(args: Map): List> { val sql = StringBuilder("select" + " id as id," diff --git a/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt b/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt index 50983ad..a971e65 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/SkillController.kt @@ -2,19 +2,28 @@ package com.ffii.tsms.modules.data.web import com.ffii.core.response.RecordsRes import com.ffii.core.utils.CriteriaArgsBuilder -import com.ffii.tsms.modules.data.service.DepartmentService +import com.ffii.tsms.modules.data.entity.Skill import com.ffii.tsms.modules.data.service.SkillService +import com.ffii.tsms.modules.data.web.models.NewSkillRequest import jakarta.servlet.http.HttpServletRequest +import jakarta.validation.Valid import org.springframework.web.bind.ServletRequestBindingException -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* @RestController @RequestMapping("/skill") -class SkillController(private val skillService: SkillService) { +class SkillController(private val skillService: SkillService) { + @PostMapping("/save") + fun saveSkill(@Valid @RequestBody newSkill: NewSkillRequest): Skill { + return skillService.saveOrUpdate(newSkill) + } + @GetMapping + fun list(): List> { + val args: MutableMap = HashMap() + return skillService.list(args); + } @GetMapping("/combo") @Throws(ServletRequestBindingException::class) fun combo(request: HttpServletRequest?): RecordsRes> { diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewSkillRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewSkillRequest.kt new file mode 100644 index 0000000..8a56e7e --- /dev/null +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewSkillRequest.kt @@ -0,0 +1,15 @@ +package com.ffii.tsms.modules.data.web.models + +import jakarta.validation.constraints.NotBlank + +data class NewSkillRequest ( + + val id: Long?, + + @field: NotBlank(message = "Position code cannot be empty") + val name: String, + @field:NotBlank(message = "Position name cannot be empty") + val code: String, + + val description: String +) \ No newline at end of file