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.FlowEdgesEntity;
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.FlowEdgesRequestBean;
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.FlowEdgesResponseBean;
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.util.DateTimeUtil;
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.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;
import jakarta.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@@ -47,7 +55,10 @@ public class FlowDao {
private FormService formService;
@Autowired
private CallDao callDao;
private LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
public FlowResponseBean createOrUpdateFlow(FlowRequestBean flowRequestBean, Long callId) {
validateFlowRequestBean(flowRequestBean);
@@ -76,11 +87,43 @@ public class FlowDao {
List<FlowDataEntity> flowDataEntities = flowDataRepository.findByCallId(call.getId());
List<FlowEdgesEntity> flowEdgesEntities = flowEdgesRepository.findByCallId(call.getId());
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.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);
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) {
CallEntity oldCallEntity = Utils.getClonedEntityForData(call);
call.setInitialForm(flowRequestBean.getInitialForm());
call.setFinalForm(flowRequestBean.getFinalForm());
call.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
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;
}
@@ -123,7 +175,16 @@ public class FlowDao {
List<FlowDataEntity> flowDataEntities = flowRequestBean.getFlowData().stream()
.map(flowDataRequestBean -> createFlowDataEntity(flowDataRequestBean, call))
.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;
}
@@ -145,7 +206,16 @@ public class FlowDao {
List<FlowEdgesEntity> flowEdgesEntities = flowRequestBean.getFlowEdges().stream()
.map(flowEdgesRequestBean -> createFlowEdgesEntity(flowEdgesRequestBean, call))
.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) {