diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 4d2e341c..b6ef828b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -27,6 +27,7 @@ import net.gepafin.tendermanagement.util.Validator; import org.h2.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import net.gepafin.tendermanagement.config.Translator; @@ -219,11 +220,20 @@ public class CallDao { loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldEvaluationCriteriaEntity).newData(evaluationCriteriaEntity).build()); List list = criteriaFormFieldRepository - .findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()) - .stream() - .peek(data -> data.setIsDeleted(Boolean.TRUE)) - .toList(); - criteriaFormFieldRepository.saveAll(list); + .findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()); + + if(Boolean.FALSE.equals(CollectionUtils.isEmpty(list))) { + + list.stream().peek(data->{ + CriteriaFormFieldEntity oldCriteriaFormFieldEntity = Utils.getClonedEntityForData(data); + data.setIsDeleted(Boolean.TRUE); + + /** This code is responsible for adding a version history log for the "soft delete criteria form field" operation **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldCriteriaFormFieldEntity).newData(data).build()); + }); + criteriaFormFieldRepository.saveAll(list); + + } } private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, @@ -630,6 +640,7 @@ public class CallDao { if (Boolean.FALSE.equals(checklistEntity.getLookupData().getId().equals(lookupDataEntity.getId()))) { checklistEntity.setLookupData(lookupDataEntity); } + oldChecklistEntity = Utils.getClonedEntityForData(checklistEntity); actionType = VersionActionTypeEnum.UPDATE; } else { checklistEntity = new CallTargetAudienceChecklistEntity(); diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 41c76a23..4b1f699c 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -3,12 +3,19 @@ package net.gepafin.tendermanagement.enums; import com.fasterxml.jackson.annotation.JsonValue; public enum UserActionContextEnum { + + /** call action context **/ CREATE_CALL_STEP_1("CREATE_CALL_STEP_1"), UPDATE_CALL_STEP_1("UPDATE_CALL_STEP_1"), - UPDATE_CALL_STEP_2("UPDATE_CALL_STEP_2"), + CREATE_UPDATE_CALL_STEP_2("CREATE_UPDATE_CALL_STEP_2"), VALIDATE_CALL("VALIDATE_CALL"), UPDATE_CALL_STATUS("UPDATE_CALL_STATUS"), - GET_CALL("GET_CALL"); + GET_CALL("GET_CALL"), + DOWNLOAD_CALL_DOCUMENT("DOWNLOAD_CALL_DOCUMENT"), + + + /** user action context **/ + CREATE_USER("CREATE_USER"); private final String value; diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionLogsEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionLogsEnum.java index 65f2243d..7e7aebe1 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionLogsEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionLogsEnum.java @@ -3,7 +3,7 @@ package net.gepafin.tendermanagement.enums; import com.fasterxml.jackson.annotation.JsonValue; public enum UserActionLogsEnum { - LOGIN("LOGIN"), LOGOUT("LOGOUT"), UPDATE("UPDATE"), DELETE("DELETE"), VIEW("VIEW"), INSERT("INSERT"); + LOGIN("LOGIN"), LOGOUT("LOGOUT"), UPDATE("UPDATE"), DELETE("DELETE"), VIEW("VIEW"), INSERT("INSERT"), DOWNLOAD("DOWNLOAD"), UPLOAD("UPLOAD"); private final String value; diff --git a/src/main/java/net/gepafin/tendermanagement/util/LoggingUtil.java b/src/main/java/net/gepafin/tendermanagement/util/LoggingUtil.java index fcddb98a..67c8e75b 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/LoggingUtil.java +++ b/src/main/java/net/gepafin/tendermanagement/util/LoggingUtil.java @@ -131,7 +131,12 @@ public class LoggingUtil { public void addVersionHistory(VersionHistoryRequest versionHistoryRequest) { try { Long userActionId = (Long) versionHistoryRequest.getRequest().getAttribute(GepafinConstant.USER_ACTION_ID); - Long recordId = versionHistoryRequest.getNewData().getId(); + Long recordId = null; + if(versionHistoryRequest.getNewData() != null) { + recordId = versionHistoryRequest.getNewData().getId(); + } else if(versionHistoryRequest.getOldData() != null){ + recordId = versionHistoryRequest.getOldData().getId(); + } String tableName = getTableName(versionHistoryRequest.getNewData().getClass()); logVersionHistory(versionHistoryRequest, recordId, userActionId, tableName); } catch (Exception e) { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 4171ef8b..e4a8669d 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -57,7 +57,7 @@ public class CallApiController implements CallApi { /** This code is responsible for creating user action logs for the "Create or update Call step 2" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE) - .actionContext(UserActionContextEnum.UPDATE_CALL_STEP_2).build()); + .actionContext(UserActionContextEnum.CREATE_UPDATE_CALL_STEP_2).build()); CallResponse createCallResponseBean = callService.createCallStep2(request, callId, createCallRequest); return ResponseEntity.status(HttpStatus.CREATED) @@ -130,8 +130,8 @@ public class CallApiController implements CallApi { public ResponseEntity downloadCallDocumentsAsZip(HttpServletRequest request, Long callId) { /** This code is responsible for creating user action logs for the "download Call documents " operation. **/ - loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) - .actionContext(UserActionContextEnum.GET_CALL).build()); + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DOWNLOAD) + .actionContext(UserActionContextEnum.DOWNLOAD_CALL_DOCUMENT).build()); byte[] zipFile = callService.downloadCallDocumentsAsZip(request, callId);