diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java index 57f67694..d2d3cef6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java @@ -3,12 +3,15 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.FormFieldEntity; +import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; import net.gepafin.tendermanagement.model.request.FormFieldRequest; import net.gepafin.tendermanagement.model.request.SettingRequestBean; +import net.gepafin.tendermanagement.model.request.VersionHistoryRequest; import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; import net.gepafin.tendermanagement.model.response.SettingResponseBean; import net.gepafin.tendermanagement.repositories.FormFieldRepository; 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.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -16,6 +19,8 @@ import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import jakarta.servlet.http.HttpServletRequest; + import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; @@ -25,6 +30,12 @@ public class FormFieldDao { @Autowired private FormFieldRepository formFieldRepository; + + @Autowired + private LoggingUtil loggingUtil; + + @Autowired + private HttpServletRequest request; public FormFieldEntity convertFormFieldRequestToFormFieldEntity(FormFieldRequest formFieldRequest) { FormFieldEntity formFieldEntity = new FormFieldEntity(); @@ -34,7 +45,11 @@ public class FormFieldDao { formFieldEntity.setSortOrder(formFieldRequest.getSortOrder()); formFieldEntity.setValidators(Utils.convertMapIntoJsonString(formFieldRequest.getValidators())); formFieldEntity.setSettings(setSettingRequestBean(formFieldRequest.getSettings())); - formFieldEntity = saveFormFieldEntity(formFieldEntity); + formFieldEntity = formFieldRepository.save(formFieldEntity); + + /** This code is responsible for adding a version history log for the "Create FormField" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(formFieldEntity).build()); + return formFieldEntity; } @@ -51,10 +66,10 @@ public class FormFieldDao { return formFieldResponseBean; } - public FormFieldEntity saveFormFieldEntity(FormFieldEntity formFieldEntity) { - formFieldEntity = formFieldRepository.save(formFieldEntity); - return formFieldEntity; - } +// public FormFieldEntity saveFormFieldEntity(FormFieldEntity formFieldEntity) { +// formFieldEntity = formFieldRepository.save(formFieldEntity); +// return formFieldEntity; +// } public void validateFormField(FormFieldRequest formFieldRequest) { if (formFieldRequest.getSettings() == null || formFieldRequest.getLabel() == null) { @@ -71,6 +86,7 @@ public class FormFieldDao { public FormFieldResponseBean updateFormField(Long formFieldId, FormFieldRequest formFieldRequest) { FormFieldEntity formFieldEntity = validateFormField(formFieldId); + FormFieldEntity oldFormFieldEntity = Utils.getClonedEntityForData(formFieldEntity); Utils.setIfUpdated(formFieldEntity::getName, formFieldEntity::setName, formFieldRequest.getName()); Utils.setIfUpdated(formFieldEntity::getLabel, formFieldEntity::setLabel, formFieldRequest.getLabel()); Utils.setIfUpdated(formFieldEntity::getDescription, formFieldEntity::setDescription, formFieldRequest.getDescription()); @@ -80,7 +96,13 @@ public class FormFieldDao { Utils.setIfUpdated(formFieldEntity::getValidators, formFieldEntity::setValidators, Utils.convertMapIntoJsonString(formFieldRequest.getValidators())); formFieldEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); - formFieldEntity = saveFormFieldEntity(formFieldEntity); + + formFieldEntity = formFieldRepository.save(formFieldEntity); + + /** This code is responsible for adding a version history log for the "Update FormField" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldFormFieldEntity).newData(formFieldEntity).build()); + + return convertFormFieldEntityToFormFieldResponseBean(formFieldEntity); } @@ -99,6 +121,11 @@ public class FormFieldDao { public void deleteFormById(Long formFieldId) { FormFieldEntity formEntity = validateFormField(formFieldId); formFieldRepository.delete(formEntity); + + /** This code is responsible for adding a version history log for the "Delete FormField" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.DELETE).oldData(formEntity).newData(null).build()); + + } public String setSettingRequestBean(List settingRequestBeans) { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index fbee7cf3..cd567918 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -89,6 +89,12 @@ public enum UserActionContextEnum { DELETE_ASSIGNED_APPLICATION("DELETE_ASSIGNED_APPLICATION"), GET_ASSIGNED_APPLICATION("GET_ASSIGNED_APPLICATION"), UPDATE_ASSIGNED_APPLICATION_DETAILS("UPDATE_ASSIGNED_APPLICATION_DETAILS"), + + /** Assigned form field context **/ + CREATE_FORM_FIELD("CREATE_FORM_FIELD"), + UPDATE_FORM_FIELD("UPDATE_FORM_FIELD"), + GET_FORM_FIELD("GET_FORM_FIELD"), + DELETE_FORM_FIELD("DELETE_FORM_FIELD"), /** Document action context **/ UPLOAD_CALL_DOCUMENT("UPLOAD_CALL_DOCUMENT"), @@ -99,6 +105,10 @@ public enum UserActionContextEnum { UPDATE_DOCUMENT("UPDATE_DOCUEMENT"), UPDATE_IMAGES("UPDATE_IMAGES"), GET_DOCUMENT("GET_DOCUMENT"), + + /** Assigned flow context **/ + CREATE_UPDATE_FLOW("CREATE_UPDATE_FLOW"), + GET_FLOW("GET_FLOW"), /** Login attempt action context **/ GET_LOGIN_ATTEMPT_LIST("GET_LOGIN_ATTEMPT_LIST"), diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FlowApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FlowApiController.java index 68cb183b..11fc5aad 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FlowApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FlowApiController.java @@ -3,10 +3,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.FlowRequestBean; +import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.response.FlowResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.FlowService; +import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.web.rest.api.FlowApi; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -22,16 +26,29 @@ public class FlowApiController implements FlowApi { @Autowired private FlowService flowService; + + @Autowired + private LoggingUtil loggingUtil; @Override - public ResponseEntity> createOrUpdateFlow(HttpServletRequest httpServletRequest, FlowRequestBean flowRequestBean, Long callId) { - FlowResponseBean flowResponseBean=flowService.createOrUpdateFlow(httpServletRequest,flowRequestBean,callId); + public ResponseEntity> createOrUpdateFlow(HttpServletRequest request, FlowRequestBean flowRequestBean, Long callId) { + + /** This code is responsible for creating user action logs for the "Create or update Flow" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT) + .actionContext(UserActionContextEnum.CREATE_UPDATE_FLOW).build()); + + FlowResponseBean flowResponseBean=flowService.createOrUpdateFlow(request,flowRequestBean,callId); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(flowResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FLOW_CREATED_SUCCESSFULLY))); } @Override public ResponseEntity> getFlowByCallId(HttpServletRequest request, Long callId) { + + /** This code is responsible for creating user action logs for the "Create or update Flow" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_FLOW).build()); + FlowResponseBean flowResponseBean=flowService.getFlowByCallId(request,callId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(flowResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FLOW_FETCHED_SUCCESSFULLY))); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java index e491d498..485d9387 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java @@ -3,10 +3,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.FormFieldRequest; +import net.gepafin.tendermanagement.model.request.UserActionRequest; import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.FormFieldService; +import net.gepafin.tendermanagement.util.LoggingUtil; import net.gepafin.tendermanagement.web.rest.api.FormFieldApi; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -23,9 +27,17 @@ public class FormFieldApiController implements FormFieldApi { @Autowired private FormFieldService formFieldService; + + @Autowired + private LoggingUtil loggingUtil; @Override public ResponseEntity> createFormField(HttpServletRequest request, FormFieldRequest formFieldRequest) { + + /** This code is responsible for creating user action logs for the "Create Form field" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT) + .actionContext(UserActionContextEnum.CREATE_FORM_FIELD).build()); + FormFieldResponseBean formFieldResponseBean=formFieldService.createFormField(request,formFieldRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_CREATED_SUCCESSFULLY))); @@ -33,6 +45,11 @@ public class FormFieldApiController implements FormFieldApi { @Override public ResponseEntity> updateFormField(HttpServletRequest request, Long formFieldId, FormFieldRequest formFieldRequest) { + + /** This code is responsible for creating user action logs for the "Update Form field" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE) + .actionContext(UserActionContextEnum.UPDATE_FORM_FIELD).build()); + FormFieldResponseBean formFieldResponseBean=formFieldService.updateFormField(request,formFieldId,formFieldRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_UPDATED_SUCCESSFULLY))); @@ -40,6 +57,11 @@ public class FormFieldApiController implements FormFieldApi { @Override public ResponseEntity> getFormFieldById(HttpServletRequest request, Long formFieldId) { + + /** This code is responsible for creating user action logs for the "Get Form field" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_FORM_FIELD).build()); + FormFieldResponseBean formFieldResponseBean=formFieldService.getFormFieldById(request,formFieldId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_FETCHED_SUCCESSFULLY))); @@ -47,6 +69,11 @@ public class FormFieldApiController implements FormFieldApi { @Override public ResponseEntity> deleteForm(HttpServletRequest request, Long formFieldId) { + + /** This code is responsible for creating user action logs for the "Get Form field" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE) + .actionContext(UserActionContextEnum.DELETE_FORM_FIELD).build()); + formFieldService.deleteFormField(request,formFieldId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_DELETED_SUCCESSFULLY))); @@ -54,6 +81,11 @@ public class FormFieldApiController implements FormFieldApi { @Override public ResponseEntity>> getAllFormField(HttpServletRequest request) { + + /** This code is responsible for creating user action logs for the "Get all Form field" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_FORM_FIELD).build()); + List formFieldResponseBeans=formFieldService.getAllFormField(request); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(formFieldResponseBeans, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_FETCHED_SUCCESSFULLY)));