package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.gepafin.tendermanagement.dao.UserDao; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.UserActionContextEnum; import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.LoginReq; import net.gepafin.tendermanagement.model.request.UpdateUserReq; import net.gepafin.tendermanagement.model.request.UserReq; import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.model.util.JWTToken; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; @Autowired private Validator validator; @Autowired private LoggingUtil loggingUtil; @Override @Transactional(rollbackFor = Exception.class) public JWTToken createUser(HttpServletRequest request, String tempToken, UserReq userReq) { return userDao.createUser(request, tempToken, userReq); } @Override @Transactional(rollbackFor = Exception.class) public UserResponseBean updateUser(HttpServletRequest request, Long userId, UpdateUserReq userReq) { validator.validateUserId(request, userId); return userDao.updateUser(userId, userReq); } @Override @Transactional(readOnly = true) public UserResponseBean getUserById(HttpServletRequest request, Long userId) { validator.validateUserId(request, userId); return userDao.getUserById(userId); } @Override @Transactional(rollbackFor = Exception.class) public void deleteUser(HttpServletRequest request, Long userId) { validator.validateUserId(request, userId); userDao.deleteUser(userId); } @Override public JWTToken login(LoginReq loginReq, HttpServletRequest request) { return userDao.login(loginReq,request); } @Override public UserEntity validateUser(Long userId) { return userDao.validateUser(userId); } @Override public InitiatePasswordResetResponse initiatePasswordReset(InitiatePasswordResetReq resetReq) { return userDao.initiatePasswordReset(resetReq); } @Override public Boolean resetPassword(ResetPasswordReq resetPasswordReq) { return userDao.resetPassword(resetPasswordReq); } @Override public Boolean changePassword(HttpServletRequest httpServletRequest, ChangePasswordRequest request){ return userDao.changePassword(validator.validateUser(httpServletRequest), request); } @Override public void logoutUser(HttpServletRequest request, HttpServletResponse response) { userDao.logout(request,response); } @Override @Transactional(rollbackFor = Exception.class) public UserResponseBean updateUserStatus(Long userId, UserStatusEnum statusReq) { return userDao.updateUserStatus(userId, statusReq); } @Override @Transactional(readOnly = true) public UserResponseBean getValidUser(HttpServletRequest request) { UserEntity user=validator.validateUser(request); return userDao.getUserById(user.getId()); } @Override @Transactional(rollbackFor = Exception.class) public JWTToken validateExistingUserToken(HttpServletRequest request, String token) { return userDao.validateExistingUserToken(request,token); } @Override public UserSamlResponse validateNewUserToken(HttpServletRequest request, String token) { return userDao.validateNewUserToken(token); } @Override public UserEntity getUserByBeneficiaryId(Long beneficiaryId) { return userDao.getUserByBeneficiaryId(beneficiaryId); } @Override public UserEntity getUserEntityById(Long userId) { // Calling DAO Function return userDao.validateUser(userId); } @Override @Transactional(readOnly = true) public List getAllUsers(HttpServletRequest request, List roleIds) { UserEntity user=validator.validateUser(request); return userDao.getAllUsers(user, roleIds); } @Override public PageableResponseBean> getUserByPagination(HttpServletRequest request, UserPaginationRequestBean userPaginationRequestBean) { UserEntity user = validator.validateUser(request); return userDao.getUserByPagination(userPaginationRequestBean, user); } @Override @Transactional(rollbackFor = Exception.class) public UserResponseBean updateUserDetails(HttpServletRequest request, Long userId, UpdateUserReqForBeneficiary userReq) { return userDao.updateUserDetails(request , userId, userReq); } }