171 lines
8.6 KiB
Java
171 lines
8.6 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.Collections;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Component
|
|
public class EvaluationFormDao {
|
|
|
|
@Autowired
|
|
private EvalualtionFormRepository 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 List<EvaluationFormResponseBean> getEvaluationFormsByCallId(CallEntity callEntity){
|
|
if(callEntity== null){
|
|
throw new CustomValidationException(Status.VALIDATION_ERROR,
|
|
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND));
|
|
}
|
|
List<EvaluationFormEntity> formEntities= evaluationFormRepository.findByCallIdAndIsDeletedFalse(callEntity.getId());
|
|
List<EvaluationFormResponseBean> formResponseBeanList = formEntities.stream()
|
|
.map(req -> convertEvaluationFormEntityToEvaluationFormResponseBean(req))
|
|
.collect(Collectors.toList());
|
|
return formResponseBeanList;
|
|
}
|
|
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);
|
|
}
|
|
|
|
|
|
} |