diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java b/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java index 0056eb2..01ee6ba 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Staff.java @@ -5,6 +5,7 @@ import com.ffii.core.entity.BaseEntity; import com.ffii.tsms.modules.user.entity.User; import jakarta.persistence.*; import jakarta.validation.constraints.NotNull; +import com.fasterxml.jackson.annotation.JsonInclude; import java.time.LocalDate; import java.util.HashSet; @@ -59,7 +60,8 @@ public class Staff extends BaseEntity { // @JoinColumn(name = "salaryEffId") // private SalaryEffective salaryEffective; @OneToMany(mappedBy = "staff", cascade = CascadeType.ALL, orphanRemoval = true) - @JsonManagedReference("staff") + @JsonManagedReference("staff-team") + @JsonInclude(JsonInclude.Include.NON_NULL) private Set skillset = new HashSet<>(); @NotNull diff --git a/src/main/java/com/ffii/tsms/modules/data/entity/Team.java b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java index 784d0c3..0f22ae9 100644 --- a/src/main/java/com/ffii/tsms/modules/data/entity/Team.java +++ b/src/main/java/com/ffii/tsms/modules/data/entity/Team.java @@ -1,5 +1,6 @@ package com.ffii.tsms.modules.data.entity; +import com.fasterxml.jackson.annotation.JsonBackReference; import com.ffii.core.entity.BaseEntity; import com.ffii.tsms.modules.user.entity.User; import jakarta.persistence.*; @@ -21,6 +22,7 @@ public class Team extends BaseEntity { @NotNull @OneToOne + @JsonBackReference("staff-team") @JoinColumn(name = "teamLead", unique = true) private Staff staff; diff --git a/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt b/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt index ad890d5..68678e6 100644 --- a/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt +++ b/src/main/java/com/ffii/tsms/modules/data/service/TeamService.kt @@ -39,6 +39,7 @@ open class TeamService( @Transactional(rollbackFor = [Exception::class]) open fun saveTeam(req: NewTeamRequest): Team { val ids = req.addStaffIds!! + println(ids) val teamLead = staffRepository.findById(ids[0]).orElseThrow() val teamName = "Team " + teamLead.name @@ -46,6 +47,7 @@ open class TeamService( val teamCode = initials.joinToString("") val team = Team().apply { + this.staff = teamLead name = teamName code = teamCode description = req.description @@ -88,7 +90,15 @@ open class TeamService( code = teamCode description = req.description } -// println(!req.deleteStaffIds.isNullOrEmpty()) + + for (id in addIds) { + val staff = staffRepository.findById(id.toLong()).orElseThrow() + staff.apply { + this.team = team + } + staffRepository.save(staff) + } + if (!req.deleteStaffIds.isNullOrEmpty()) { for (id in req.deleteStaffIds) { val staff = staffRepository.findById(id).orElseThrow() @@ -99,13 +109,6 @@ open class TeamService( } } - for (id in addIds) { - val staff = staffRepository.findById(id.toLong()).orElseThrow() - staff.apply { - this.team = team - } - staffRepository.save(staff) - } return team } diff --git a/src/main/java/com/ffii/tsms/modules/data/web/models/NewTeamRequest.kt b/src/main/java/com/ffii/tsms/modules/data/web/models/NewTeamRequest.kt index 98b4df1..224a181 100644 --- a/src/main/java/com/ffii/tsms/modules/data/web/models/NewTeamRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/data/web/models/NewTeamRequest.kt @@ -5,9 +5,9 @@ import jakarta.validation.constraints.NotNull import java.time.LocalDate data class NewTeamRequest ( - @field:NotNull(message = "ids cannot be empty") val addStaffIds: List?, + val deleteStaffIds: List?, - val description: String, + val description: String?, val id: Long? ) \ No newline at end of file