Added user action and versioning for create flow data

This commit is contained in:
rajesh
2024-11-25 12:57:00 +05:30
parent c0ffe76891
commit fa5faffa58

View File

@@ -6,9 +6,11 @@ import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.FlowDataEntity; import net.gepafin.tendermanagement.entities.FlowDataEntity;
import net.gepafin.tendermanagement.entities.FlowEdgesEntity; import net.gepafin.tendermanagement.entities.FlowEdgesEntity;
import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.CallStatusEnum;
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
import net.gepafin.tendermanagement.model.request.FlowDataRequestBean; import net.gepafin.tendermanagement.model.request.FlowDataRequestBean;
import net.gepafin.tendermanagement.model.request.FlowEdgesRequestBean; import net.gepafin.tendermanagement.model.request.FlowEdgesRequestBean;
import net.gepafin.tendermanagement.model.request.FlowRequestBean; import net.gepafin.tendermanagement.model.request.FlowRequestBean;
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
import net.gepafin.tendermanagement.model.response.FlowDataResponseBean; import net.gepafin.tendermanagement.model.response.FlowDataResponseBean;
import net.gepafin.tendermanagement.model.response.FlowEdgesResponseBean; import net.gepafin.tendermanagement.model.response.FlowEdgesResponseBean;
import net.gepafin.tendermanagement.model.response.FlowResponseBean; import net.gepafin.tendermanagement.model.response.FlowResponseBean;
@@ -19,11 +21,17 @@ import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.service.FormService; import net.gepafin.tendermanagement.service.FormService;
import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.DateTimeUtil;
import net.gepafin.tendermanagement.util.FieldValidator; import net.gepafin.tendermanagement.util.FieldValidator;
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.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;
import jakarta.servlet.http.HttpServletRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -47,7 +55,10 @@ public class FlowDao {
private FormService formService; private FormService formService;
@Autowired @Autowired
private CallDao callDao; private LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
public FlowResponseBean createOrUpdateFlow(FlowRequestBean flowRequestBean, Long callId) { public FlowResponseBean createOrUpdateFlow(FlowRequestBean flowRequestBean, Long callId) {
validateFlowRequestBean(flowRequestBean); validateFlowRequestBean(flowRequestBean);
@@ -76,11 +87,43 @@ public class FlowDao {
List<FlowDataEntity> flowDataEntities = flowDataRepository.findByCallId(call.getId()); List<FlowDataEntity> flowDataEntities = flowDataRepository.findByCallId(call.getId());
List<FlowEdgesEntity> flowEdgesEntities = flowEdgesRepository.findByCallId(call.getId()); List<FlowEdgesEntity> flowEdgesEntities = flowEdgesRepository.findByCallId(call.getId());
if (Boolean.FALSE.equals(flowDataEntities.isEmpty()) || Boolean.FALSE.equals(flowEdgesEntities.isEmpty())) { if (Boolean.FALSE.equals(flowDataEntities.isEmpty()) || Boolean.FALSE.equals(flowEdgesEntities.isEmpty())) {
if (call.getInitialForm() != null || call.getInitialForm() != null) {
CallEntity oldCallEntity = Utils.getClonedEntityForData(call);
call.setInitialForm(null); call.setInitialForm(null);
call.setFinalForm(null); call.setFinalForm(null);
call = callRepository.save(call); call = callRepository.save(call);
/**
* This code is responsible for adding a version history log for the "update
* call for flow" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.UPDATE).oldData(oldCallEntity).newData(call).build());
}
flowDataRepository.deleteAll(flowDataEntities); flowDataRepository.deleteAll(flowDataEntities);
flowEdgesRepository.deleteAll(flowEdgesEntities); flowEdgesRepository.deleteAll(flowEdgesEntities);
flowDataEntities.forEach(data->{
/**
* This code is responsible for adding a version history log for the "update
* call for flow" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.DELETE).oldData(data).newData(null).build());
});
flowEdgesEntities.forEach(data->{
/**
* This code is responsible for adding a version history log for the "update
* call for flow" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.DELETE).oldData(data).newData(null).build());
});
} }
} }
@@ -111,10 +154,19 @@ public class FlowDao {
} }
private CallEntity setInitialAndFinalFormInCall(FlowRequestBean flowRequestBean, CallEntity call) { private CallEntity setInitialAndFinalFormInCall(FlowRequestBean flowRequestBean, CallEntity call) {
CallEntity oldCallEntity = Utils.getClonedEntityForData(call);
call.setInitialForm(flowRequestBean.getInitialForm()); call.setInitialForm(flowRequestBean.getInitialForm());
call.setFinalForm(flowRequestBean.getFinalForm()); call.setFinalForm(flowRequestBean.getFinalForm());
call.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); call.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
call = callRepository.save(call); call = callRepository.save(call);
/**
* This code is responsible for adding a version history log for the "update
* call for flow" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.UPDATE).oldData(oldCallEntity).newData(call).build());
return call; return call;
} }
@@ -123,7 +175,16 @@ public class FlowDao {
List<FlowDataEntity> flowDataEntities = flowRequestBean.getFlowData().stream() List<FlowDataEntity> flowDataEntities = flowRequestBean.getFlowData().stream()
.map(flowDataRequestBean -> createFlowDataEntity(flowDataRequestBean, call)) .map(flowDataRequestBean -> createFlowDataEntity(flowDataRequestBean, call))
.collect(Collectors.toList()); .collect(Collectors.toList());
return flowDataRepository.saveAll(flowDataEntities); flowDataEntities = flowDataRepository.saveAll(flowDataEntities);
flowDataEntities.forEach(data->{
/**
* This code is responsible for adding a version history log for the "delete flow data" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(data).build());
});
return flowDataEntities;
} }
return null; return null;
} }
@@ -145,7 +206,16 @@ public class FlowDao {
List<FlowEdgesEntity> flowEdgesEntities = flowRequestBean.getFlowEdges().stream() List<FlowEdgesEntity> flowEdgesEntities = flowRequestBean.getFlowEdges().stream()
.map(flowEdgesRequestBean -> createFlowEdgesEntity(flowEdgesRequestBean, call)) .map(flowEdgesRequestBean -> createFlowEdgesEntity(flowEdgesRequestBean, call))
.collect(Collectors.toList()); .collect(Collectors.toList());
return flowEdgesRepository.saveAll(flowEdgesEntities); flowEdgesEntities = flowEdgesRepository.saveAll(flowEdgesEntities);
flowEdgesEntities.forEach(data->{
/**
* This code is responsible for adding a version history log for the "update
* call for flow" operation.
**/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request)
.actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(data).build());
});
return flowEdgesEntities;
} }
public FlowEdgesEntity createFlowEdgesEntity(FlowEdgesRequestBean flowEdgesRequestBean,CallEntity call) { public FlowEdgesEntity createFlowEdgesEntity(FlowEdgesRequestBean flowEdgesRequestBean,CallEntity call) {