|
|
@@ -2,6 +2,7 @@ package com.ffii.tsms.modules.data.service |
|
|
|
|
|
|
|
|
import com.ffii.tsms.modules.data.entity.Staff |
|
|
import com.ffii.tsms.modules.data.entity.Staff |
|
|
import com.ffii.tsms.modules.data.entity.StaffRepository |
|
|
import com.ffii.tsms.modules.data.entity.StaffRepository |
|
|
|
|
|
import com.ffii.tsms.modules.user.entity.User |
|
|
import com.ffii.tsms.modules.user.entity.UserRepository |
|
|
import com.ffii.tsms.modules.user.entity.UserRepository |
|
|
import com.ffii.tsms.modules.data.entity.PositionRepository |
|
|
import com.ffii.tsms.modules.data.entity.PositionRepository |
|
|
import com.ffii.tsms.modules.data.entity.CompanyRepository |
|
|
import com.ffii.tsms.modules.data.entity.CompanyRepository |
|
|
@@ -11,14 +12,15 @@ import com.ffii.tsms.modules.data.entity.SkillRepository |
|
|
import com.ffii.tsms.modules.data.entity.SalaryEffectiveRepository |
|
|
import com.ffii.tsms.modules.data.entity.SalaryEffectiveRepository |
|
|
import com.ffii.tsms.modules.data.entity.DepartmentRepository |
|
|
import com.ffii.tsms.modules.data.entity.DepartmentRepository |
|
|
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo |
|
|
import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo |
|
|
import com.ffii.tsms.modules.project.web.models.NewStaffRequest |
|
|
|
|
|
// import com.ffii.tsms.modules.data.web.models.NewStaffRequest |
|
|
|
|
|
|
|
|
import com.ffii.tsms.modules.data.web.models.NewStaffRequest |
|
|
import org.springframework.stereotype.Service |
|
|
import org.springframework.stereotype.Service |
|
|
import com.ffii.core.support.JdbcDao; |
|
|
import com.ffii.core.support.JdbcDao; |
|
|
import com.ffii.core.support.AbstractBaseEntityService; |
|
|
import com.ffii.core.support.AbstractBaseEntityService; |
|
|
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder |
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
|
public final class StaffsService( |
|
|
|
|
|
|
|
|
open class StaffsService( |
|
|
private val staffRepository: StaffRepository, |
|
|
private val staffRepository: StaffRepository, |
|
|
private val userRepository: UserRepository, |
|
|
private val userRepository: UserRepository, |
|
|
private val positionRepository: PositionRepository, |
|
|
private val positionRepository: PositionRepository, |
|
|
@@ -29,17 +31,19 @@ public final class StaffsService( |
|
|
private val salaryEffectiveRepository: SalaryEffectiveRepository, |
|
|
private val salaryEffectiveRepository: SalaryEffectiveRepository, |
|
|
private val departmentRepository: DepartmentRepository, |
|
|
private val departmentRepository: DepartmentRepository, |
|
|
private val jdbcDao: JdbcDao, |
|
|
private val jdbcDao: JdbcDao, |
|
|
) { |
|
|
|
|
|
fun getTeamLeads(): List<StaffSearchInfo> { |
|
|
|
|
|
|
|
|
private val passwordEncoder: PasswordEncoder |
|
|
|
|
|
) |
|
|
|
|
|
: AbstractBaseEntityService<Staff, Long, StaffRepository>(jdbcDao, staffRepository) { |
|
|
|
|
|
open fun getTeamLeads(): List<Staff> { |
|
|
// TODO: Replace with actual logic and make a projection instead of returning all fields |
|
|
// TODO: Replace with actual logic and make a projection instead of returning all fields |
|
|
return staffRepository.findStaffSearchInfoBy() |
|
|
|
|
|
|
|
|
return staffRepository.findAll() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
fun allStaff(): List<StaffSearchInfo> { |
|
|
|
|
|
return staffRepository.findStaffSearchInfoBy(); |
|
|
|
|
|
|
|
|
open fun allStaff(): List<StaffSearchInfo> { |
|
|
|
|
|
return staffRepository.findStaffSearchInfoByAndDeletedFalse(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// fun fetchStaffList(args: Map<String, Any>): List<Map<String, Any>> { |
|
|
|
|
|
|
|
|
// fun allStaff(args: Map<String, Any>): List<Map<String, Any>> { |
|
|
// val sql = StringBuilder("select" |
|
|
// val sql = StringBuilder("select" |
|
|
// + " s.*," |
|
|
// + " s.*," |
|
|
// + " date_format(s.created, '%Y-%m-%d') as created," |
|
|
// + " date_format(s.created, '%Y-%m-%d') as created," |
|
|
@@ -55,8 +59,15 @@ public final class StaffsService( |
|
|
// return jdbcDao.queryForList(sql.toString(), args) |
|
|
// return jdbcDao.queryForList(sql.toString(), args) |
|
|
// } |
|
|
// } |
|
|
|
|
|
|
|
|
fun saveStaff(req: NewStaffRequest): Staff { |
|
|
|
|
|
val user = userRepository.findById(req.userId).orElseThrow() |
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = [Exception::class]) |
|
|
|
|
|
open fun saveStaff(req: NewStaffRequest): Staff { |
|
|
|
|
|
val user = userRepository.saveAndFlush( |
|
|
|
|
|
User().apply { |
|
|
|
|
|
username = req.name |
|
|
|
|
|
password = passwordEncoder.encode("mms1234") |
|
|
|
|
|
name = req.name |
|
|
|
|
|
} |
|
|
|
|
|
) |
|
|
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() |
|
|
val currentPosition = positionRepository.findById(req.currentPositionId).orElseThrow() |
|
|
val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow() |
|
|
val joinPosition = positionRepository.findById(req.joinPositionId).orElseThrow() |
|
|
val company = companyRepository.findById(req.companyId).orElseThrow() |
|
|
val company = companyRepository.findById(req.companyId).orElseThrow() |
|
|
@@ -90,7 +101,6 @@ public final class StaffsService( |
|
|
this.salaryEffective = salaryEffective |
|
|
this.salaryEffective = salaryEffective |
|
|
this.department = department |
|
|
this.department = department |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return staffRepository.save(staff) |
|
|
return staffRepository.save(staff) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |