diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java index ecfb77bd..63ba57df 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java @@ -59,6 +59,7 @@ public class FaqDao { CallEntity callEntity = callService.validateCall(callId); FaqEntity entity = createOrUpdateFaqEntity(faqRequest, callEntity, userEntity, LookUpDataTypeEnum.FAQ); + FaqEntity oldFaqEntity = Utils.getClonedEntityForData(entity); if (validator.checkIsBeneficiary() && companyId == null) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.COMPANY_ID_MANDATORY)); @@ -68,6 +69,10 @@ public class FaqDao { entity.setCompanyId(companyId); } faqRepository.save(entity); + if(entity.getCompanyId()!=null) { + /** This code is responsible for adding a version history log for the "Create FAQ" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldFaqEntity).newData(entity).build()); + } return convertToFaqResponseBean(entity); } @@ -84,8 +89,11 @@ public class FaqDao { public void deleteFaq(Long id) { FaqEntity faqEntity = validateFaq(id); + FaqEntity oldFaqEntity = Utils.getClonedEntityForData(faqEntity); faqEntity.setIsDeleted(Boolean.TRUE); faqRepository.save(faqEntity); + /** This code is responsible for adding a version history log for the "soft delete faq" operation **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldFaqEntity).newData(faqEntity).build()); } public FaqEntity validateFaq(Long id) { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index e2ffcd99..538a60a3 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -22,7 +22,15 @@ public enum UserActionContextEnum { DELETE_USER("DELETE_USER"), VALIDATE_NEW_USER_WITH_SPID_TOKEN("VALIDATE_NEW_USER_WITH_SPID_TOKEN"), VALIDATE_EXISTING_USER_WITH_SPID_TOKEN("VALIDATE_EXISTING_USER_WITH_SPID_TOKEN"), - GET_VALID_USER_DETAILS("GET_VALID_USER_DETAILS"); + GET_VALID_USER_DETAILS("GET_VALID_USER_DETAILS"), + + /** FAQ action context **/ + + CREATE_FAQ("CREATE_FAQ"), + GET_FAQ("GET_FAQ"), + UPDATE_FAQ_DETAILS("UPDATE_FAQ_DETAILS"), + DELETE_FAQ("DELETE_FAQ") + ; private final String value; diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java index d905e938..bf6ad305 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java @@ -2,10 +2,14 @@ package net.gepafin.tendermanagement.web.rest.api.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.enums.UserActionContextEnum; +import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.FaqReq; +import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.response.FaqResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.FaqService; +import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.web.rest.api.FaqApi; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -20,9 +24,14 @@ public class FaqApiController implements FaqApi { @Autowired private FaqService faqService; + @Autowired + private LoggingUtil loggingUtil; @Override public ResponseEntity> createFaq(HttpServletRequest request, Long callId, Long companyId, FaqReq faqRequest) { + /** This code is responsible for creating user action logs for the "Create FAQ" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT) + .actionContext(UserActionContextEnum.CREATE_FAQ).build()); FaqResponseBean response = faqService.createFaq(request,callId, companyId, faqRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.FAQ_CREATED_SUCCESSFULLY))); @@ -30,6 +39,11 @@ public class FaqApiController implements FaqApi { @Override public ResponseEntity> getFaqById(HttpServletRequest request, Long id) { + + /** This code is responsible for creating user action logs for the "get FAQ by id" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_FAQ).build()); + FaqResponseBean response = faqService.getFaqById(request, id); if (response != null) { return ResponseEntity.status(HttpStatus.OK) @@ -42,6 +56,10 @@ public class FaqApiController implements FaqApi { @Override public ResponseEntity> updateFaq(HttpServletRequest request, Long id, FaqReq faqRequest) { + + /** This code is responsible for "Updating FAQ details" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE) + .actionContext(UserActionContextEnum.UPDATE_FAQ_DETAILS).build()); FaqResponseBean response = faqService.updateFaq(request, id, faqRequest); if (response != null) { return ResponseEntity.status(HttpStatus.OK) @@ -54,6 +72,9 @@ public class FaqApiController implements FaqApi { @Override public ResponseEntity> deleteFaq(HttpServletRequest request, Long id) { + /** This code is responsible for creating user action logs for the "Delete FAQ" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_FAQ).build()); + faqService.deleteFaq(request, id); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FAQ_DELETED_SUCCESSFULLY)));