Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/dao/EvaluationFormDao.java

170 lines
8.4 KiB
Java

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.*;
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
import net.gepafin.tendermanagement.model.request.*;
import net.gepafin.tendermanagement.model.response.ContentResponseBean;
import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean;
import net.gepafin.tendermanagement.repositories.*;
import net.gepafin.tendermanagement.service.EvaluationCriteriaService;
import net.gepafin.tendermanagement.util.DateTimeUtil;
import net.gepafin.tendermanagement.util.LoggingUtil;
import net.gepafin.tendermanagement.util.Utils;
import net.gepafin.tendermanagement.util.Validator;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
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;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.List;
@Component
public class EvaluationFormDao {
@Autowired
private EvaluationFormRepository evaluationFormRepository;
@Autowired
private CallDao callDao;
@Autowired
private VatCheckDao vatCheckDao;
@Autowired
private CallRepository callRepository;
@Autowired
private Validator validator;
@Autowired
private CriteriaFormFieldRepository criteriaFormFieldRepository;
@Autowired
private EvaluationCriteriaService evaluationCriteriaService;
@Autowired
private LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
public EvaluationFormEntity saveEvaluationFormEntity(EvaluationFormEntity evaluationFormEntity){
evaluationFormEntity= evaluationFormRepository.save(evaluationFormEntity);
return evaluationFormEntity;
}
public EvaluationFormEntity convertEvaluationFormRequestToEvaluationFormEntity(CallEntity callEntity, EvaluationFormRequest formRequest) {
EvaluationFormEntity evaluationFormEntity = new EvaluationFormEntity();
evaluationFormEntity.setCall(callEntity);
evaluationFormEntity.setLabel(formRequest.getLabel());
evaluationFormEntity.setContent(setContentResponseBean(formRequest.getContent()));
evaluationFormEntity.setIsDeleted(false);
evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity);
/** This code is responsible for adding a version history log for the "Create form" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(evaluationFormEntity).build());
return evaluationFormEntity;
}
public EvaluationFormResponseBean convertEvaluationFormEntityToEvaluationFormResponseBean(EvaluationFormEntity formEntity) {
EvaluationFormResponseBean evaluationFormResponseBean =new EvaluationFormResponseBean();
evaluationFormResponseBean.setId(formEntity.getId());
evaluationFormResponseBean.setContent(setContent(formEntity));
evaluationFormResponseBean.setLabel(formEntity.getLabel());
evaluationFormResponseBean.setCallId(formEntity.getCall().getId());
evaluationFormResponseBean.setCallStatus(formEntity.getCall().getStatus());
return evaluationFormResponseBean;
}
private List<ContentResponseBean> setContent(EvaluationFormEntity formEntity) {
List<ContentResponseBean> contentList = Utils.convertJsonStringToList(formEntity.getContent(),
ContentResponseBean.class);
return contentList;
}
public EvaluationFormResponseBean createEvaluationForm(CallEntity callEntity, EvaluationFormRequest formRequest) {
validateEvaluationForm(formRequest);
EvaluationFormEntity formEntity = convertEvaluationFormRequestToEvaluationFormEntity(callEntity, formRequest);
return convertEvaluationFormEntityToEvaluationFormResponseBean(formEntity);
}
public void validateEvaluationForm(EvaluationFormRequest formRequest){
if(formRequest.getContent()==null || formRequest.getLabel()==null ){
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM));
}
}
public EvaluationFormResponseBean updateEvaluationForm(UserEntity user, Long formId, EvaluationFormRequest formRequest) {
EvaluationFormEntity evaluationFormEntity = validateForm(formId);
//cloned for old form data
EvaluationFormEntity oldFormData = Utils.getClonedEntityForData(evaluationFormEntity);
Utils.setIfUpdated(evaluationFormEntity::getLabel, evaluationFormEntity::setLabel, formRequest.getLabel());
Utils.setIfUpdated(evaluationFormEntity::getContent, evaluationFormEntity::setContent, setContentResponseBean(formRequest.getContent()));
evaluationFormEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity);
/** This code is responsible for adding a version history log for the "Update form data" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldFormData).newData(evaluationFormEntity).build());
return convertEvaluationFormEntityToEvaluationFormResponseBean(evaluationFormEntity);
}
public EvaluationFormEntity validateForm(Long formId) {
EvaluationFormEntity evaluationFormEntity = evaluationFormRepository.findByIdAndIsDeletedFalse(formId);
if (evaluationFormEntity == null) {
throw new ResourceNotFoundException(
Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.EVALUATION_FORM_NOT_FOUND)
);
}
return evaluationFormEntity;
}
public EvaluationFormResponseBean getEvaluationFormById(UserEntity user, Long formId) {
EvaluationFormEntity evaluationFormEntity = validateForm(formId);
validator.validateUserWithCall(user, evaluationFormEntity.getCall().getId());
return convertEvaluationFormEntityToEvaluationFormResponseBean(evaluationFormEntity);
}
public void deleteEvaluationForm(UserEntity user, Long formId){
EvaluationFormEntity evaluationFormEntity = validateForm(formId);
EvaluationFormEntity clonedData = Utils.getClonedEntityForData(evaluationFormEntity);
validator.validateUserWithCall(user, evaluationFormEntity.getCall().getId());
evaluationFormEntity.setIsDeleted(Boolean.TRUE);
evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity);
/** This code is responsible for adding a version history log for the "soft deleting evaluation from field" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(clonedData).newData(evaluationFormEntity).build());
}
public EvaluationFormResponseBean getEvaluationFormByCallId(CallEntity callEntity) {
if (callEntity == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND));
}
EvaluationFormEntity formEntity = evaluationFormRepository
.findByCallIdAndIsDeletedFalse(callEntity.getId());
if(formEntity!=null)
return convertEvaluationFormEntityToEvaluationFormResponseBean(formEntity);
else return null;
}
public String setContentResponseBean(List<ContentRequestBean> contentRequestBeans){
String stringContentRequest = Utils.convertListToJsonString(contentRequestBeans);
List<ContentRequestBean> cloneContentRequestBeans = Utils.convertJsonStringToList(stringContentRequest, ContentRequestBean.class);
cloneContentRequestBeans.forEach(data->data.setCriteria(null));
return Utils.convertListToJsonString(cloneContentRequestBeans);
}
}