Added user action and versoining for evaluation criteria.
This commit is contained in:
@@ -1,17 +1,22 @@
|
||||
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.CallEntity;
|
||||
import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity;
|
||||
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
|
||||
import net.gepafin.tendermanagement.entities.LookUpDataEntity;
|
||||
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
|
||||
import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest;
|
||||
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
|
||||
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
|
||||
import net.gepafin.tendermanagement.repositories.CriteriaFormFieldRepository;
|
||||
import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository;
|
||||
import net.gepafin.tendermanagement.service.CallService;
|
||||
import net.gepafin.tendermanagement.service.LookUpDataService;
|
||||
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;
|
||||
|
||||
@@ -35,72 +40,109 @@ public class EvaluationCriteriaDao {
|
||||
@Autowired
|
||||
private CriteriaFormFieldRepository criteriaFormFieldRepository;
|
||||
|
||||
public EvaluationCriteriaResponseBean createEvaluationCriteria(
|
||||
EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
EvaluationCriteriaEntity entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(
|
||||
evaluationCriteriaRequest);
|
||||
return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity);
|
||||
}
|
||||
@Autowired
|
||||
private LoggingUtil loggingUtil;
|
||||
|
||||
private EvaluationCriteriaEntity convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(
|
||||
EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
EvaluationCriteriaEntity entity = new EvaluationCriteriaEntity();
|
||||
CallEntity callEntity = callService.validateCall(evaluationCriteriaRequest.getCallId());
|
||||
LookUpDataEntity looDataEntity = lookUpDataService
|
||||
.validateLookUpData(evaluationCriteriaRequest.getLookUpDataId());
|
||||
entity.setCall(callEntity);
|
||||
entity.setLookupData(looDataEntity);
|
||||
entity.setScore(0L);
|
||||
if (evaluationCriteriaRequest.getScore() != null) {
|
||||
entity.setScore(evaluationCriteriaRequest.getScore());
|
||||
}
|
||||
entity = evaluationCriteriaRepository.save(entity);
|
||||
return entity;
|
||||
}
|
||||
@Autowired
|
||||
private HttpServletRequest request;
|
||||
|
||||
public EvaluationCriteriaResponseBean getEvaluationCriteriaById(Long id) {
|
||||
return evaluationCriteriaRepository.findById(id)
|
||||
.map(this::convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
}
|
||||
public EvaluationCriteriaResponseBean createEvaluationCriteria(EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
|
||||
public EvaluationCriteriaEntity validateEvaluationCriteria(Long id) {
|
||||
return evaluationCriteriaRepository.findById(id)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
}
|
||||
EvaluationCriteriaEntity entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(evaluationCriteriaRequest, VersionActionTypeEnum.INSERT, null);
|
||||
return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity);
|
||||
}
|
||||
|
||||
public EvaluationCriteriaResponseBean updateEvaluationCriteria(Long id, EvaluationCriteriaRequest request) {
|
||||
EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
||||
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(request);
|
||||
return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity);
|
||||
}
|
||||
private EvaluationCriteriaEntity convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(EvaluationCriteriaRequest evaluationCriteriaRequest,
|
||||
VersionActionTypeEnum actionType, EvaluationCriteriaEntity evaluationCriteriaEntity) {
|
||||
|
||||
public void deleteEvaluationCriteria(Long id) {
|
||||
evaluationCriteriaRepository.deleteById(id);
|
||||
EvaluationCriteriaEntity evaluationCriteriaEntity = validateEvaluationCriteria(id);
|
||||
evaluationCriteriaEntity.setIsDeleted(Boolean.TRUE);
|
||||
evaluationCriteriaRepository.save(evaluationCriteriaEntity);
|
||||
List<CriteriaFormFieldEntity> list = criteriaFormFieldRepository.findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId())
|
||||
.stream()
|
||||
.peek(data -> data.setIsDeleted(Boolean.TRUE))
|
||||
.toList();;
|
||||
criteriaFormFieldRepository.saveAll(list);
|
||||
}
|
||||
EvaluationCriteriaEntity entity;
|
||||
if (evaluationCriteriaEntity != null && evaluationCriteriaEntity.getId() != null) {
|
||||
entity = evaluationCriteriaEntity;
|
||||
} else {
|
||||
entity = new EvaluationCriteriaEntity();
|
||||
}
|
||||
//cloned for old data
|
||||
EvaluationCriteriaEntity oldEvaluationCriteriaData = Utils.getClonedEntityForData(entity);
|
||||
|
||||
private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(
|
||||
EvaluationCriteriaEntity entity) {
|
||||
EvaluationCriteriaResponseBean response = new EvaluationCriteriaResponseBean();
|
||||
response.setId(entity.getId());
|
||||
response.setScore(entity.getScore());
|
||||
response.setCreatedDate(entity.getCreatedDate());
|
||||
response.setUpdatedDate(entity.getUpdatedDate());
|
||||
response.setLookUpDataId(entity.getLookupData().getId());
|
||||
response.setTitle(entity.getLookupData().getTitle());
|
||||
response.setValue(entity.getLookupData().getValue());
|
||||
return response;
|
||||
}
|
||||
CallEntity callEntity = callService.validateCall(evaluationCriteriaRequest.getCallId());
|
||||
LookUpDataEntity lookupDataEntity = lookUpDataService.getOrCreateLookUpDataEntity(evaluationCriteriaRequest, LookUpDataEntity.LookUpDataTypeEnum.EVALUATION_CRITERIA);
|
||||
entity.setCall(callEntity);
|
||||
entity.setLookupData(lookupDataEntity);
|
||||
entity.setScore(0L);
|
||||
if (evaluationCriteriaRequest.getScore() != null) {
|
||||
entity.setScore(evaluationCriteriaRequest.getScore());
|
||||
}
|
||||
entity = evaluationCriteriaRepository.save(entity);
|
||||
|
||||
/** This code is responsible for adding a version history log for the "updating or creating evaluation criteria" operation. **/
|
||||
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(actionType).oldData(oldEvaluationCriteriaData).newData(entity).build());
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public EvaluationCriteriaResponseBean getEvaluationCriteriaById(Long id) {
|
||||
|
||||
return evaluationCriteriaRepository.findById(id).map(this::convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
}
|
||||
|
||||
public EvaluationCriteriaEntity validateEvaluationCriteria(Long id) {
|
||||
|
||||
return evaluationCriteriaRepository.findById(id)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
}
|
||||
|
||||
public EvaluationCriteriaResponseBean updateEvaluationCriteria(Long id, EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
|
||||
EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id)
|
||||
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
|
||||
|
||||
entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(evaluationCriteriaRequest, VersionActionTypeEnum.UPDATE, entity);
|
||||
return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity);
|
||||
}
|
||||
|
||||
public void deleteEvaluationCriteria(Long id) {
|
||||
// evaluationCriteriaRepository.deleteById(id); // Not needed if setting isDeleted TRUE in the next line after fetching evaluation criteria
|
||||
EvaluationCriteriaEntity evaluationCriteriaEntity = validateEvaluationCriteria(id);
|
||||
|
||||
// Clone the evaluation criteria entity for old data
|
||||
EvaluationCriteriaEntity oldEvaluationCriteriaData = Utils.getClonedEntityForData(evaluationCriteriaEntity);
|
||||
|
||||
List<CriteriaFormFieldEntity> oldList = criteriaFormFieldRepository.findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()).stream()
|
||||
.map(Utils::getClonedEntityForData).toList();
|
||||
|
||||
evaluationCriteriaEntity.setIsDeleted(Boolean.TRUE);
|
||||
evaluationCriteriaEntity = evaluationCriteriaRepository.save(evaluationCriteriaEntity);
|
||||
|
||||
/** This code is responsible for adding a version history log for the "updating evaluation criteria" operation. **/
|
||||
loggingUtil.addVersionHistory(
|
||||
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldEvaluationCriteriaData).newData(evaluationCriteriaEntity)
|
||||
.build());
|
||||
|
||||
List<CriteriaFormFieldEntity> updatedList = criteriaFormFieldRepository.findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()).stream()
|
||||
.peek(data -> data.setIsDeleted(Boolean.TRUE)).toList();
|
||||
|
||||
List<CriteriaFormFieldEntity> softDeletingSavedList = criteriaFormFieldRepository.saveAll(updatedList);
|
||||
|
||||
softDeletingSavedList.forEach(data -> {
|
||||
CriteriaFormFieldEntity oldFieldData = oldList.stream().filter(old -> old.getId().equals(data.getId())).findFirst().orElse(null);
|
||||
|
||||
/** This code is responsible for adding a version history log for the "Soft deleting criteria form field" operation. **/
|
||||
loggingUtil.addVersionHistory(
|
||||
VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(oldFieldData).newData(data).build());
|
||||
});
|
||||
}
|
||||
|
||||
private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(EvaluationCriteriaEntity entity) {
|
||||
|
||||
EvaluationCriteriaResponseBean response = new EvaluationCriteriaResponseBean();
|
||||
response.setId(entity.getId());
|
||||
response.setScore(entity.getScore());
|
||||
response.setCreatedDate(entity.getCreatedDate());
|
||||
response.setUpdatedDate(entity.getUpdatedDate());
|
||||
response.setLookUpDataId(entity.getLookupData().getId());
|
||||
response.setTitle(entity.getLookupData().getTitle());
|
||||
response.setValue(entity.getLookupData().getValue());
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,13 @@ public enum UserActionContextEnum {
|
||||
|
||||
/** Dashboard action context **/
|
||||
GET_DASHBOARD_WIDGET_FOR_SUPER_ADMIN("GET_DASHBOARD_WIDGET_FOR_SUPER_ADMIN"),
|
||||
GET_DASHBOARD_WIDGET_FOR_BENEFICIARY("GET_DASHBOARD_WIDGET_FOR_BENEFICIARY");
|
||||
GET_DASHBOARD_WIDGET_FOR_BENEFICIARY("GET_DASHBOARD_WIDGET_FOR_BENEFICIARY"),
|
||||
|
||||
/** Evaluation criteria action context **/
|
||||
GET_EVALUATION_CRITERIA("GET_EVALUATION_CRITERIA"),
|
||||
UPDATE_EVALUATION_CRITERIA("UPDATE_EVALUATION_CRITERIA"),
|
||||
DELETE_EVALUATION_CRITERIA("DELETE_EVALUATION_CRITERIA"),
|
||||
CREATE_EVALUATION_CRITERIA("CREATE_EVALUATION_CRITERIA");
|
||||
|
||||
private final String value;
|
||||
|
||||
|
||||
@@ -2,10 +2,14 @@ package net.gepafin.tendermanagement.web.rest.api.impl;
|
||||
|
||||
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.EvaluationCriteriaRequest;
|
||||
import net.gepafin.tendermanagement.model.request.UserActionRequest;
|
||||
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
|
||||
import net.gepafin.tendermanagement.model.util.Response;
|
||||
import net.gepafin.tendermanagement.service.EvaluationCriteriaService;
|
||||
import net.gepafin.tendermanagement.util.LoggingUtil;
|
||||
import net.gepafin.tendermanagement.web.rest.api.EvaluationCriteriaApi;
|
||||
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -24,8 +28,15 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi {
|
||||
@Autowired
|
||||
private EvaluationCriteriaService service;
|
||||
|
||||
@Autowired
|
||||
private LoggingUtil loggingUtil;
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Response<EvaluationCriteriaResponseBean>> createEvaluationCriteria(HttpServletRequest request, EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
|
||||
/** This code is responsible for creating user action logs for the "create evaluation criteria" operation. **/
|
||||
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT).actionContext(UserActionContextEnum.CREATE_EVALUATION_CRITERIA).build());
|
||||
|
||||
EvaluationCriteriaResponseBean responseBean = service.createEvaluationCriteria(request,evaluationCriteriaRequest);
|
||||
return ResponseEntity.status(HttpStatus.CREATED)
|
||||
.body(new Response<>(responseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_CREATED_SUCCESSFULLY)));
|
||||
@@ -33,6 +44,10 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi {
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Response<EvaluationCriteriaResponseBean>> getEvaluationCriteriaById(HttpServletRequest request, Long id) {
|
||||
|
||||
/** This code is responsible for creating user action logs for the "get evaluation criteria" operation. **/
|
||||
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_EVALUATION_CRITERIA).build());
|
||||
|
||||
EvaluationCriteriaResponseBean responseBean = service.getEvaluationCriteria(request,id);
|
||||
if (responseBean != null) {
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
@@ -46,6 +61,10 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi {
|
||||
@Override
|
||||
@Transactional(rollbackFor=Exception.class)
|
||||
public ResponseEntity<Response<EvaluationCriteriaResponseBean>> updateEvaluationCriteria(HttpServletRequest request, Long id, EvaluationCriteriaRequest evaluationCriteriaRequest) {
|
||||
|
||||
/** This code is responsible for creating user action logs for the "Update evaluation criteria" operation. **/
|
||||
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.UPDATE_EVALUATION_CRITERIA).build());
|
||||
|
||||
EvaluationCriteriaResponseBean responseBean = service.updateEvaluationCriteria(request,id, evaluationCriteriaRequest);
|
||||
if (responseBean != null) {
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
@@ -58,6 +77,10 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi {
|
||||
|
||||
@Override
|
||||
public ResponseEntity<Response<Void>> deleteEvaluationCriteria(HttpServletRequest request, Long id) {
|
||||
|
||||
/** This code is responsible for creating user action logs for the "deleting evaluation criteria" operation. **/
|
||||
loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_EVALUATION_CRITERIA).build());
|
||||
|
||||
service.deleteEvaluationCriteria(request,id);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
|
||||
Reference in New Issue
Block a user