77 lines
3.4 KiB
Java
77 lines
3.4 KiB
Java
package net.gepafin.tendermanagement.dao;
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import net.gepafin.tendermanagement.config.Translator;
|
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|
import net.gepafin.tendermanagement.entities.LoginAttemptEntity;
|
|
import net.gepafin.tendermanagement.entities.UserEntity;
|
|
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
|
|
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
|
|
import net.gepafin.tendermanagement.model.response.LoginAttemptPageableResponseBean;
|
|
import net.gepafin.tendermanagement.repositories.LoginAttemptRepository;
|
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
|
import net.gepafin.tendermanagement.util.LoggingUtil;
|
|
import net.gepafin.tendermanagement.util.Utils;
|
|
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.PageRequest;
|
|
import org.springframework.data.domain.Sort;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Component
|
|
public class LoginAttemptDao {
|
|
|
|
@Autowired
|
|
LoginAttemptRepository loginAttemptRepository;
|
|
|
|
@Autowired
|
|
private LoggingUtil loggingUtil;
|
|
|
|
@Autowired
|
|
private HttpServletRequest request;
|
|
|
|
public LoginAttemptEntity createLoginAttempt(LoginAttemptEntity loginAttemptEntity) {
|
|
|
|
VersionActionTypeEnum actionType;
|
|
loginAttemptEntity.setAttemptDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
|
|
loginAttemptEntity = loginAttemptRepository.save(loginAttemptEntity);
|
|
|
|
/** This code is responsible for adding a version history log for "Create Login Attempt" operation. **/
|
|
loggingUtil.addVersionHistoryWithoutToken(
|
|
VersionHistoryRequest.builder().actionType(VersionActionTypeEnum.INSERT).request(request).oldData(null).newData(loginAttemptEntity).build());
|
|
|
|
return loginAttemptEntity;
|
|
}
|
|
|
|
public LoginAttemptPageableResponseBean<List<LoginAttemptEntity>> getLoginAttemptsList(UserEntity userEntity, Integer pageNo, Integer pageLimit) {
|
|
if (pageLimit == null || pageLimit <= 0) {
|
|
pageLimit = GepafinConstant.DEFAULT_PAGE_LIMIT;
|
|
}
|
|
|
|
if (pageNo == null || pageNo <= 0) {
|
|
pageNo = GepafinConstant.DEFAULT_PAGE;
|
|
}
|
|
|
|
Page<LoginAttemptEntity> page = loginAttemptRepository.findByHubId(userEntity.getHub().getId(), PageRequest.of(pageNo - 1, pageLimit, Sort.by(GepafinConstant.ATTEMPT_DATE).descending()));
|
|
List<LoginAttemptEntity> list = new ArrayList<>();
|
|
for (LoginAttemptEntity loginAttemptEntity : page.getContent()) {
|
|
list.add(loginAttemptEntity);
|
|
}
|
|
|
|
LoginAttemptPageableResponseBean<List<LoginAttemptEntity>> pageableResponseBean = new LoginAttemptPageableResponseBean<>();
|
|
pageableResponseBean.setBody(list);
|
|
pageableResponseBean.setCurrentPage(page.getNumber() + 1);
|
|
pageableResponseBean.setTotalPages(page.getTotalPages());
|
|
pageableResponseBean.setTotalRecords(page.getTotalElements());
|
|
pageableResponseBean.setPageSize(page.getSize());
|
|
pageableResponseBean.setStatus(Status.SUCCESS);
|
|
pageableResponseBean.setMessage(Translator.toLocale(GepafinConstant.GET_LOGIN_ATTEMPT_MSG));
|
|
return pageableResponseBean;
|
|
}
|
|
}
|