val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
// val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow()
val joinPosition = if (req.joinPositionId != null && req.joinPositionId > 0L) positionRepository.findById(req.joinPositionId).orElseThrow() else null
val company = companyRepository.findById(req.companyId).orElseThrow()
val grade = gradeRepository.findById(req.gradeId).orElseThrow()
val team = if (req.teamId != null && req.teamId > 0L) teamRepository.findById(req.teamId).orElseThrow() else null
val salary = salaryRepository.findBySalaryPoint(req.salaryId).orElseThrow()
// val grade = gradeRepository.findById(req.gradeId).orElseThrow()
// val team = if (req.teamId != null && req.teamId > 0L) teamRepository.findById(req.teamId).orElseThrow() else null
// val salary = salaryRepository.findBySalaryPoint(req.salaryId).orElseThrow()
val department = if (req.departmentId != null && req.departmentId > 0L) departmentRepository.findById(req.departmentId).orElseThrow() else null
val salary = if (!req.salaryEffectiveInfo.isNullOrEmpty()) salaryRepository.findBySalaryPoint(req.salaryEffectiveInfo.last().salaryPoint).orElseThrow() else null
val team = if (!req.teamHistory.isNullOrEmpty()) teamRepository.findById(req.teamHistory.last().team).orElseThrow() else null
val grade = if (!req.gradeHistory.isNullOrEmpty()) gradeRepository.findById(req.gradeHistory.last().grade).orElseThrow() else null
val currentPosition = if (!req.positionHistory.isNullOrEmpty()) positionRepository.findById(req.positionHistory.last().position).orElseThrow() else null
team = teamRepository.findById(req.teamHistory.last().team).orElseThrow()
teamLogService.saveTeamLogs(staff, teamHistory)
}
// val currentPosition = if (!positionHistory.isNullOrEmpty()) positionRepository.findById(req.positionHistory.last().position).orElseThrow() else null
// val grade = if (!gradeHistory.isNullOrEmpty()) gradeRepository.findById(req.gradeHistory.last().grade).orElseThrow() else null
// val team = if (!teamHistory.isNullOrEmpty()) teamRepository.findById(req.teamHistory.last().team).orElseThrow() else null
val joinPosition = if (req.joinPositionId != null && req.joinPositionId > 0L) positionRepository.findById(req.joinPositionId).orElseThrow() else null
val company = companyRepository.findById(req.companyId).orElseThrow()
val grade = gradeRepository.findById(req.gradeId).orElseThrow()
val team = if (req.teamId != null && req.teamId > 0L) teamRepository.findById(req.teamId).orElseThrow() else null
val salaryPoint = checkLatestSalaryPoint(req?.salaryEffectiveInfo) ?: 0
val salary = salaryRepository.findBySalaryPoint(salaryPoint).orElseThrow()
val department = if (req.departmentId != null && req.departmentId > 0L) departmentRepository.findById(req.departmentId).orElseThrow() else null
val latestTeam = teamLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
val latestGrade = gradeLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
val latestPosition = positionLogRepository.findFirstByStaffIdAndDeletedFalseOrderByCreatedDesc(staff.id)
if (latestTeam != null && latestTeam.team.id != req.teamId) {
val teamLog = TeamLog().apply {
this.staff = staff
this.team = team
from = LocalDate.now()
}
val lastRecordTeam = latestTeam.apply {
to = LocalDate.now()
}
teamLogRepository.save(teamLog)
teamLogRepository.save(lastRecordTeam)
}
if (latestGrade != null && latestGrade.grade.id != req.gradeId) {
val gradeLog = GradeLog().apply {
this.staff = staff
this.grade = grade
from = LocalDate.now()
}
val lastRecordGrade = latestGrade.apply {
to = LocalDate.now()
}
gradeLogRepository.save(gradeLog)
gradeLogRepository.save(lastRecordGrade)
}
if (latestPosition != null && latestPosition.position.id != req.currentPositionId) {