diff --git a/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java b/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java index ee6e0d8a..17143516 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/HubDao.java @@ -1,12 +1,17 @@ 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.HubEntity; +import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; import net.gepafin.tendermanagement.model.request.HubReq; +import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; import net.gepafin.tendermanagement.model.response.HubResponseBean; import net.gepafin.tendermanagement.model.util.NanoIdUtils; import net.gepafin.tendermanagement.repositories.HubRepository; +import net.gepafin.tendermanagement.util.LoggingUtil; +import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -22,15 +27,26 @@ public class HubDao { @Autowired private HubRepository hubRepository; - public HubResponseBean createHub(HubReq hubReq) { + @Autowired + private LoggingUtil loggingUtil; + + public HubResponseBean createHub(HttpServletRequest request,HubReq hubReq) { HubEntity hubEntity = createOrUpdateHubEntity(new HubEntity(), hubReq); hubRepository.save(hubEntity); + + /** This code is responsible for adding a version history log for the "Create Hub" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(hubEntity).build()); + return convertToHubResponseBean(hubEntity); } - public HubResponseBean updateHub(Long hubId, HubReq hubReq) { + public HubResponseBean updateHub(HttpServletRequest request,Long hubId, HubReq hubReq) { HubEntity hubEntity = validateHub(hubId); - createOrUpdateHubEntity(hubEntity, hubReq); + HubEntity oldHubEntity = Utils.getClonedEntityForData(hubEntity); + HubEntity newHubEntity = createOrUpdateHubEntity(hubEntity, hubReq); + + /** This code is responsible for adding a version history log for the "Update Hub" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldHubEntity).newData(newHubEntity).build()); return convertToHubResponseBean(hubEntity); } @@ -43,10 +59,13 @@ public class HubDao { return hubs.stream().map(this::convertToHubResponseBean).toList(); } - public void deleteHub(Long hubId) { + public void deleteHub(HttpServletRequest request,Long hubId) { HubEntity hubEntity = validateHub(hubId); + + /** This code is responsible for adding a version history log for the "Delete Hub" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.DELETE).oldData(hubEntity).build()); + hubRepository.deleteById(hubId); - hubRepository.save(hubEntity); } public HubEntity validateHub(Long hubId) { diff --git a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java index b1faf04c..ceb64f54 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java @@ -3,7 +3,6 @@ package net.gepafin.tendermanagement.dao; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.entities.LookUpDataEntity; import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; -import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataReq; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; @@ -49,6 +48,9 @@ public class LookUpDataDao { entity.setValue(lookUpDataReq.getResponse()); validateLookUpDataEntity(entity); lookUpDataRepository.save(entity); + + /** This code is responsible for adding a version history log for the "Create LoopUpData" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(entity).build()); return entity; } @@ -69,16 +71,27 @@ public class LookUpDataDao { public LookUpDataResponseBean updateLookUpData(Long id, LookUpDataRequest lookUpDataReq) { LookUpDataEntity entity = validateLookUpData(id); + LookUpDataEntity oldLookUpData = Utils.getClonedEntityForData(entity); + setIfUpdated(entity::getTitle, entity::setTitle, lookUpDataReq.getTitle()); setIfUpdated(entity::getValue, entity::setValue, lookUpDataReq.getValue()); setIfUpdated(entity::getResponse, entity::setResponse, lookUpDataReq.getResponse()); lookUpDataRepository.save(entity); + + /** This code is responsible for adding a version history log for the "Update LookUpData" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldLookUpData).newData(entity).build()); + + return convertLookUpDataEntityToResponseBean(entity); } public void deleteLookUpData(Long id) { - LookUpDataEntity entity = validateLookUpData(id); - lookUpDataRepository.deleteById(entity.getId()); + LookUpDataEntity oldLookUpData = validateLookUpData(id); + + /** This code is responsible for adding a version history log for the "Delete LookUpData" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.DELETE).oldData(oldLookUpData).build()); + + lookUpDataRepository.deleteById(id); } private LookUpDataResponseBean convertLookUpDataEntityToResponseBean(LookUpDataEntity entity) { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index b9be7dfa..9f828131 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -45,6 +45,21 @@ public enum UserActionContextEnum { UPDATE_FAQ_DETAILS("UPDATE_FAQ_DETAILS"), DELETE_FAQ("DELETE_FAQ"), + /** LookUpData action context **/ + CREATE_LOOKUP_DATA("CREATE_LOOKUP_DATA"), + DELETE_LOOKUP_DATA("DELETE_LOOKUP_DATA"), + UPDATE_LOOKUP_DATA("UPDATE_LOOKUP_DATA"), + GET_LOOKUP_DATA("GET_LOOKUP_DATA"), + GET_LOOKUP_DATA_BY_TYPE("GET_LOOKUP_DATA_BY_TYPE"), + + /** Hub action context **/ + CREATE_HUB("CREATE_HUB"), + GET_HUB("GET_HUB"), + DELETE_HUB("DELETE_HUB"), + UPDATE_HUB("UPDATE_HUB"), + GET_ALL_HUB("GET_ALL_HUB"), + GET_HUB_BY_UUID(" GET_HUB_BY_UUID"), + /** Assigned Application action context **/ CREATE_ASSIGNED_APPLICATION("CREATE_ASSIGNED_APPLICATION"), DELETE_ASSIGNED_APPLICATION("DELETE_ASSIGNED_APPLICATION"), diff --git a/src/main/java/net/gepafin/tendermanagement/service/HubService.java b/src/main/java/net/gepafin/tendermanagement/service/HubService.java index ad763419..dc2a4272 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/HubService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/HubService.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.service; +import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.model.request.HubReq; import net.gepafin.tendermanagement.model.response.HubResponseBean; @@ -8,11 +9,11 @@ import net.gepafin.tendermanagement.model.response.HubResponseBean; import java.util.List; public interface HubService { - HubResponseBean createHub(HubReq hubReq); - HubResponseBean updateHub(Long hubId, HubReq hubReq); + HubResponseBean createHub(HttpServletRequest request,HubReq hubReq); + HubResponseBean updateHub(HttpServletRequest request,Long hubId, HubReq hubReq); HubResponseBean getHubById(Long hubId); List getAllHubs(); - void deleteHub(Long hubId); + void deleteHub(HttpServletRequest request,Long hubId); HubEntity getHubByUuid(String hubUuid); HubResponseBean getHubByHubUuid(String uuid); HubEntity valdateHub(Long hubId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java index 3490a0e6..c48d7a59 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/HubServiceImpl.java @@ -1,5 +1,6 @@ package net.gepafin.tendermanagement.service.impl; +import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.HubDao; import net.gepafin.tendermanagement.entities.HubEntity; import net.gepafin.tendermanagement.model.request.HubReq; @@ -19,14 +20,14 @@ public class HubServiceImpl implements HubService { @Override @Transactional(rollbackFor = Exception.class) - public HubResponseBean createHub(HubReq hubReq) { - return hubDao.createHub(hubReq); + public HubResponseBean createHub(HttpServletRequest request,HubReq hubReq) { + return hubDao.createHub(request,hubReq); } @Override @Transactional(rollbackFor = Exception.class) - public HubResponseBean updateHub(Long hubId, HubReq hubReq) { - return hubDao.updateHub(hubId, hubReq); + public HubResponseBean updateHub(HttpServletRequest request,Long hubId, HubReq hubReq) { + return hubDao.updateHub(request,hubId, hubReq); } @Override @@ -43,8 +44,8 @@ public class HubServiceImpl implements HubService { @Override @Transactional(rollbackFor = Exception.class) - public void deleteHub(Long hubId) { - hubDao.deleteHub(hubId); + public void deleteHub(HttpServletRequest request,Long hubId) { + hubDao.deleteHub(request,hubId); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/HubApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/HubApiController.java index 7e8828e0..9fcd8455 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/HubApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/HubApiController.java @@ -4,10 +4,14 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; 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.HubReq; +import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.response.HubResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.HubService; +import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.web.rest.api.HubApi; import net.gepafin.tendermanagement.web.rest.api.errors.Status; @@ -24,17 +28,29 @@ public class HubApiController implements HubApi { @Autowired private HubService hubService; + @Autowired + private LoggingUtil loggingUtil; + @Override public ResponseEntity> createHub(HttpServletRequest request, @Valid HubReq hubReq) { - HubResponseBean hubResponse = hubService.createHub(hubReq); + + /** This code is responsible for creating user action logs for the "Create Hub" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT) + .actionContext(UserActionContextEnum.CREATE_HUB).build()); + + HubResponseBean hubResponse = hubService.createHub(request,hubReq); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(hubResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.HUB_CREATE_SUCCESS))); } @Override public ResponseEntity> updateHub(HttpServletRequest request, Long hubId, @Valid HubReq hubReq) { - - HubResponseBean hubResponse = hubService.updateHub(hubId, hubReq); + + /** This code is responsible for "Updating Hub details" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE) + .actionContext(UserActionContextEnum.UPDATE_HUB).build()); + + HubResponseBean hubResponse = hubService.updateHub(request,hubId, hubReq); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(hubResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.HUB_UPDATE_SUCCESS))); @@ -42,7 +58,11 @@ public class HubApiController implements HubApi { @Override public ResponseEntity> getHubById(HttpServletRequest request, Long hubId) { - + + /** This code is responsible for creating user action logs for the "get hub by id" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_HUB).build()); + HubResponseBean hubResponse = hubService.getHubById(hubId); return ResponseEntity.status(HttpStatus.OK) @@ -51,7 +71,11 @@ public class HubApiController implements HubApi { @Override public ResponseEntity>> getAllHubs(HttpServletRequest request) { - + + /** This code is responsible for creating user action logs for the "get all hub" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_ALL_HUB).build()); + List hubs = hubService.getAllHubs(); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(hubs, Status.SUCCESS, Translator.toLocale(GepafinConstant.HUB_GET_ALL_SUCCESS))); @@ -59,13 +83,21 @@ public class HubApiController implements HubApi { @Override public ResponseEntity> deleteHub(HttpServletRequest request, Long hubId) { - - hubService.deleteHub(hubId); + + /** This code is responsible for creating user action logs for the "Delete Hub" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_HUB).build()); + + hubService.deleteHub(request,hubId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.HUB_DELETE_SUCCESS))); } @Override public ResponseEntity> getHubByUuid(HttpServletRequest request, String uuid) { + + /** This code is responsible for creating user action logs for the "get hub by uuid" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_HUB_BY_UUID).build()); + HubResponseBean hubResponse = hubService.getHubByHubUuid(uuid); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(hubResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.HUB_GET_SUCCESS))); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java index 3f79198c..d8e18e32 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java @@ -4,10 +4,14 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; +import net.gepafin.tendermanagement.enums.UserActionContextEnum; +import net.gepafin.tendermanagement.enums.UserActionLogsEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; +import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.LookUpDataService; +import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.web.rest.api.LookUpDataApi; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -25,8 +29,16 @@ public class LookUpDataApiController implements LookUpDataApi { @Autowired private LookUpDataService lookUpDataService; + @Autowired + LoggingUtil loggingUtil; + @Override public ResponseEntity> createLookUpData(HttpServletRequest request, LookUpDataRequest lookUpDataReq) { + + /** This code is responsible for creating user action logs for the "Create LoopUpData" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT) + .actionContext(UserActionContextEnum.CREATE_LOOKUP_DATA).build()); + LookUpDataResponseBean responseBean = lookUpDataService.createLookUpData(lookUpDataReq); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response(responseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_CREATED_SUCCESSFULLY))); @@ -34,6 +46,11 @@ public class LookUpDataApiController implements LookUpDataApi { @Override public ResponseEntity> getLookUpDataById(HttpServletRequest request, Long id) { + + /** This code is responsible for creating user action logs for the "get lookup data by id" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_LOOKUP_DATA).build()); + LookUpDataResponseBean responseBean = lookUpDataService.getLookUpDataById(id); if (responseBean != null) { return ResponseEntity.status(HttpStatus.OK) @@ -46,6 +63,11 @@ public class LookUpDataApiController implements LookUpDataApi { @Override public ResponseEntity> updateLookUpData(HttpServletRequest request, Long id, LookUpDataRequest lookUpDataReq) { + + /** This code is responsible for "Updating LookUp Data details" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE) + .actionContext(UserActionContextEnum.UPDATE_LOOKUP_DATA).build()); + LookUpDataResponseBean responseBean = lookUpDataService.updateLookUpData(id, lookUpDataReq); if (responseBean != null) { return ResponseEntity.status(HttpStatus.OK) @@ -58,12 +80,21 @@ public class LookUpDataApiController implements LookUpDataApi { @Override public ResponseEntity> deleteLookUpData(HttpServletRequest request, Long id) { + + /** This code is responsible for creating user action logs for the "Delete LookUpData" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_LOOKUP_DATA).build()); + lookUpDataService.deleteLookUpData(id); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_DELETED_SUCCESSFULLY))); } @Override public ResponseEntity>> getLookUpDataByType(HttpServletRequest request, List type) { + + /** This code is responsible for creating user action logs for the "get lookup data by type" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_LOOKUP_DATA_BY_TYPE).build()); + List responseBean = lookUpDataService.getLookUpDataByType(type); if (responseBean != null) { return ResponseEntity.status(HttpStatus.OK)