package com.iconplus.smartproc.service; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.model.entity.TokenManagement; import com.iconplus.smartproc.model.request.UsersRequest; import com.iconplus.smartproc.repository.*; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.sql.Timestamp; import java.time.Instant; @Service public class CommonService { private UsersRepository usersRepository; private RolesRepository rolesRepository; private BidangRepository bidangRepository; private InstansiRepository instansiRepository; private TokenManagementRepository tokenManagementRepository; public CommonService(UsersRepository usersRepository, RolesRepository rolesRepository, BidangRepository bidangRepository, InstansiRepository instansiRepository, TokenManagementRepository tokenManagementRepository) { this.usersRepository = usersRepository; this.rolesRepository = rolesRepository; this.bidangRepository = bidangRepository; this.instansiRepository = instansiRepository; this.tokenManagementRepository = tokenManagementRepository; } public void validateUserRequst(UsersRequest input) { var roles= rolesRepository.findByIdAndIsDeleteFalse(input.getRoleId()); if (roles.isEmpty()) { throw new BusinessException("err", "err", "err"); } var bidang= bidangRepository.findByIdAndIsDeleteFalse(input.getBidangId()); if (bidang.isEmpty()) { throw new BusinessException("err", "err", "err"); } var instansi= instansiRepository.findByIdAndIsDeleteFalse(input.getInstansiId()); if (instansi.isEmpty()) { throw new BusinessException("err", "err", "err"); } } public void saveUserToken(TokenManagement tokenManagement, Integer tokenExpiry) { var issuedTime = Timestamp.from(Instant.now()); var expirationTime = Timestamp.from(Instant.now().plusMillis(tokenExpiry * (long) 60000)); if (StringUtils.isNotBlank(tokenManagement.getId())) { tokenManagement.setIssuedTime(issuedTime); tokenManagement.setExpiredTime(expirationTime); tokenManagementRepository.save(tokenManagement); return; } var existToken = tokenManagementRepository.findByUserId(tokenManagement.getUserId()); if (existToken.isPresent()) { existToken.get().setAccessToken(tokenManagement.getAccessToken()); existToken.get().setRefreshToken(tokenManagement.getRefreshToken()); existToken.get().setIsDelete(false); existToken.get().setIssuedTime(issuedTime); existToken.get().setExpiredTime(expirationTime); tokenManagementRepository.save(existToken.get()); } else { tokenManagementRepository.save(TokenManagement.builder() .userId(tokenManagement.getUserId()) .accessToken(tokenManagement.getAccessToken()) .refreshToken(tokenManagement.getRefreshToken()) .issuedTime(issuedTime) .expiredTime(expirationTime) .isDelete(false) .build()); } } }