Done ticket GEPAFINBE-59

This commit is contained in:
harish
2024-10-17 16:01:38 +05:30
parent edd9c1cb1a
commit 4412e447fb
12 changed files with 281 additions and 90 deletions

View File

@@ -1,6 +1,5 @@
package net.gepafin.tendermanagement.dao; package net.gepafin.tendermanagement.dao;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@@ -23,10 +22,6 @@ import net.gepafin.tendermanagement.util.Utils;
import org.h2.util.IOUtils; import org.h2.util.IOUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@@ -34,6 +29,7 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.CallTargetAudienceChecklistEntity; import net.gepafin.tendermanagement.entities.CallTargetAudienceChecklistEntity;
import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity;
import net.gepafin.tendermanagement.entities.DocumentEntity; import net.gepafin.tendermanagement.entities.DocumentEntity;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import net.gepafin.tendermanagement.entities.FaqEntity; import net.gepafin.tendermanagement.entities.FaqEntity;
@@ -52,6 +48,7 @@ import net.gepafin.tendermanagement.model.request.LookUpDataReq;
import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1;
import net.gepafin.tendermanagement.repositories.CallRepository; import net.gepafin.tendermanagement.repositories.CallRepository;
import net.gepafin.tendermanagement.repositories.CallTargetAudienceChecklistRepository; import net.gepafin.tendermanagement.repositories.CallTargetAudienceChecklistRepository;
import net.gepafin.tendermanagement.repositories.CriteriaFormFieldRepository;
import net.gepafin.tendermanagement.repositories.DocumentRepository; import net.gepafin.tendermanagement.repositories.DocumentRepository;
import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository; import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository;
import net.gepafin.tendermanagement.repositories.FaqRepository; import net.gepafin.tendermanagement.repositories.FaqRepository;
@@ -93,14 +90,21 @@ public class CallDao {
@Autowired @Autowired
private FaqService faqService; private FaqService faqService;
@Autowired @Autowired
private FlowDao flowDao; private FlowDao flowDao;
@Autowired @Autowired
private FormDao formDao; private FormDao formDao;
@Value("${aws.s3.url.folder}") @Value("${aws.s3.url.folder}")
private String s3Folder; private String s3Folder;
@Autowired @Autowired
private AmazonS3Service amazonS3Service; private AmazonS3Service amazonS3Service;
@Autowired
private CriteriaFormFieldRepository criteriaFormFieldRepository;
public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) {
UserEntity userEntity = userService.validateUser(userId); UserEntity userEntity = userService.validateUser(userId);
@@ -208,6 +212,8 @@ public class CallDao {
private void softDeleteEvaluationCriteria(EvaluationCriteriaEntity evaluationCriteriaEntity) { private void softDeleteEvaluationCriteria(EvaluationCriteriaEntity evaluationCriteriaEntity) {
evaluationCriteriaEntity.setIsDeleted(true); evaluationCriteriaEntity.setIsDeleted(true);
evaluationCriteriaRepository.save(evaluationCriteriaEntity); evaluationCriteriaRepository.save(evaluationCriteriaEntity);
List<CriteriaFormFieldEntity> list = criteriaFormFieldRepository.findByEvaluationCriteriaId(evaluationCriteriaEntity.getId());
criteriaFormFieldRepository.deleteAll(list);
} }
private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq,
@@ -255,6 +261,7 @@ public class CallDao {
private void softDeleteDocument(DocumentEntity documentEntity) { private void softDeleteDocument(DocumentEntity documentEntity) {
documentEntity.setIsDeleted(true); documentEntity.setIsDeleted(true);
documentRepository.save(documentEntity); documentRepository.save(documentEntity);
} }
private DocumentEntity convertToDocumentEntity(DocumentReq documentReq,Long sourceId) { private DocumentEntity convertToDocumentEntity(DocumentReq documentReq,Long sourceId) {

View File

@@ -3,17 +3,21 @@ package net.gepafin.tendermanagement.dao;
import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import net.gepafin.tendermanagement.entities.LookUpDataEntity; import net.gepafin.tendermanagement.entities.LookUpDataEntity;
import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest;
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
import net.gepafin.tendermanagement.repositories.CriteriaFormFieldRepository;
import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository; import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.service.LookUpDataService; import net.gepafin.tendermanagement.service.LookUpDataService;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@@ -27,6 +31,9 @@ public class EvaluationCriteriaDao {
@Autowired @Autowired
private LookUpDataService lookUpDataService; private LookUpDataService lookUpDataService;
@Autowired
private CriteriaFormFieldRepository criteriaFormFieldRepository;
public EvaluationCriteriaResponseBean createEvaluationCriteria( public EvaluationCriteriaResponseBean createEvaluationCriteria(
EvaluationCriteriaRequest evaluationCriteriaRequest) { EvaluationCriteriaRequest evaluationCriteriaRequest) {
@@ -54,6 +61,12 @@ public class EvaluationCriteriaDao {
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_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 request) { public EvaluationCriteriaResponseBean updateEvaluationCriteria(Long id, EvaluationCriteriaRequest request) {
EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id) EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id)
@@ -64,12 +77,12 @@ public class EvaluationCriteriaDao {
} }
public void deleteEvaluationCriteria(Long id) { public void deleteEvaluationCriteria(Long id) {
try {
evaluationCriteriaRepository.deleteById(id); evaluationCriteriaRepository.deleteById(id);
} catch (EmptyResultDataAccessException e) { EvaluationCriteriaEntity evaluationCriteriaEntity = validateEvaluationCriteria(id);
throw new ResourceNotFoundException(Status.NOT_FOUND, evaluationCriteriaEntity.setIsDeleted(Boolean.TRUE);
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)); evaluationCriteriaRepository.save(evaluationCriteriaEntity);
} List<CriteriaFormFieldEntity> list = criteriaFormFieldRepository.findByEvaluationCriteriaId(evaluationCriteriaEntity.getId());
criteriaFormFieldRepository.deleteAll(list);
} }
private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean( private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(

View File

@@ -6,9 +6,9 @@ import net.gepafin.tendermanagement.entities.*;
import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.request.*;
import net.gepafin.tendermanagement.model.response.ContentResponseBean; import net.gepafin.tendermanagement.model.response.ContentResponseBean;
import net.gepafin.tendermanagement.model.response.FormResponseBean; import net.gepafin.tendermanagement.model.response.FormResponseBean;
import net.gepafin.tendermanagement.model.response.VatNumberResponseBean;
import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.repositories.*;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
import net.gepafin.tendermanagement.service.EvaluationCriteriaService;
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.Utils; import net.gepafin.tendermanagement.util.Utils;
@@ -22,9 +22,12 @@ import org.springframework.util.CollectionUtils;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
@@ -53,13 +56,19 @@ public class FormDao {
@Autowired @Autowired
private CallRepository callRepository; private CallRepository callRepository;
@Autowired
private CriteriaFormFieldRepository criteriaFormFieldRepository;
@Autowired
private EvaluationCriteriaService evaluationCriteriaService;
public FormEntity saveFormEntity(FormEntity formEntity){ public FormEntity saveFormEntity(FormEntity formEntity){
formEntity=formRepository.save(formEntity); formEntity=formRepository.save(formEntity);
return formEntity; return formEntity;
} }
public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest){ public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest) {
FormEntity formEntity=new FormEntity(); FormEntity formEntity=new FormEntity();
CallEntity callEntity=callService.getCallEntityById(callId); CallEntity callEntity=callService.getCallEntityById(callId);
formEntity.setCall(callEntity); formEntity.setCall(callEntity);
@@ -68,16 +77,29 @@ public class FormDao {
formEntity=saveFormEntity(formEntity); formEntity=saveFormEntity(formEntity);
return formEntity; return formEntity;
} }
public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity){ public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity) {
FormResponseBean formResponseBean=new FormResponseBean(); FormResponseBean formResponseBean=new FormResponseBean();
formResponseBean.setId(formEntity.getId()); formResponseBean.setId(formEntity.getId());
formResponseBean.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class)); formResponseBean.setContent(setContent(formEntity));
formResponseBean.setLabel(formEntity.getLabel()); formResponseBean.setLabel(formEntity.getLabel());
formResponseBean.setCallId(formEntity.getCall().getId()); formResponseBean.setCallId(formEntity.getCall().getId());
formResponseBean.setCallStatus(formEntity.getCall().getStatus()); formResponseBean.setCallStatus(formEntity.getCall().getStatus());
return formResponseBean; return formResponseBean;
} }
public FormResponseBean createForm(Long callId,FormRequest formRequest){
private List<ContentResponseBean> setContent(FormEntity formEntity) {
List<ContentResponseBean> contentList = Utils.convertJsonStringToList(formEntity.getContent(),
ContentResponseBean.class);
contentList.forEach(data -> {
List<Long> criteriaIds = criteriaFormFieldRepository
.findByCallIdAndFormIdAndFormFieldId(formEntity.getCall().getId(), formEntity.getId(), data.getId())
.stream().map(CriteriaFormFieldEntity::getEvaluationCriteriaId).toList();
data.setCriteria(criteriaIds);
});
return contentList;
}
public FormResponseBean createForm(Long callId,FormRequest formRequest){
validateForm(formRequest); validateForm(formRequest);
CallEntity callEntity=callService.validateCall(callId); CallEntity callEntity=callService.validateCall(callId);
List<FlowDataEntity> flowDataEntities=flowDataRepository.findByCallId(callId); List<FlowDataEntity> flowDataEntities=flowDataRepository.findByCallId(callId);
@@ -90,80 +112,139 @@ public class FormDao {
callRepository.save(callEntity); callRepository.save(callEntity);
} }
FormEntity formEntity=convertFormRequestToFormEntity(callId,formRequest); FormEntity formEntity=convertFormRequestToFormEntity(callId,formRequest);
validateAndSaveCriteriaFormField(callEntity, formEntity, formRequest.getContent());
return convertFormEntityToFormResponseBean(formEntity); return convertFormEntityToFormResponseBean(formEntity);
} }
public void validateForm(FormRequest formRequest){
private void validateAndSaveCriteriaFormField(CallEntity callEntity, FormEntity formEntity,
List<ContentRequestBean> contentResponseBeans) {
contentResponseBeans.forEach(content -> {
// Fetch existing records from the repository based on the call, form, and field ID
List<CriteriaFormFieldEntity> existingCriteriaFields = criteriaFormFieldRepository
.findByCallIdAndFormIdAndFormFieldId(callEntity.getId(), formEntity.getId(), content.getId());
// Extract existing evaluation criteria IDs into a set for quick lookup
Set<Long> existingEvaluationCriteriaIds = existingCriteriaFields.stream()
.map(CriteriaFormFieldEntity::getEvaluationCriteriaId)
.collect(Collectors.toSet());
// Get the criteria list (handling null as an empty list for uniformity)
List<Long> criteriaList = Optional.ofNullable(content.getCriteria()).orElse(Collections.emptyList());
// Filter and create new entries for criteria that are not already present
criteriaList.stream()
.filter(criteriaId -> !existingEvaluationCriteriaIds.contains(criteriaId))
.forEach(criteriaId -> createCriteriaFormField(callEntity, formEntity, content.getId(), criteriaId));
List<CriteriaFormFieldEntity> toBeDeleted = existingCriteriaFields.stream()
.filter(criteriaFormField -> !criteriaList.contains(criteriaFormField.getEvaluationCriteriaId()))
.collect(Collectors.toList());
if (!toBeDeleted.isEmpty()) {
criteriaFormFieldRepository.deleteAll(toBeDeleted);
}
});
}
private void createCriteriaFormField(CallEntity callEntity, FormEntity formEntity,
String formFieldId,Long evaluationCriteriaId) {
evaluationCriteriaService.validateEvaluationCriteria(evaluationCriteriaId);
CriteriaFormFieldEntity criteriaFormField = new CriteriaFormFieldEntity();
criteriaFormField.setCallId(callEntity.getId());
criteriaFormField.setFormId(formEntity.getId());
criteriaFormField.setFormFieldId(formFieldId);
criteriaFormField.setEvaluationCriteriaId(evaluationCriteriaId);
criteriaFormFieldRepository.save(criteriaFormField);
}
public void validateForm(FormRequest formRequest){
if(formRequest.getContent()==null || formRequest.getLabel()==null ){ if(formRequest.getContent()==null || formRequest.getLabel()==null ){
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM)); throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM));
} }
} }
public FormResponseBean updateForm(Long formId, FormRequest formRequest,Boolean forceDeleteFlow){
ContentRequestBean contentRequestBean2=null; public FormResponseBean updateForm(Long formId, FormRequest formRequest, Boolean forceDeleteFlow) {
String choosenField=null; ContentRequestBean contentRequestBean2 = null;
FormEntity formEntity = validateForm(formId); String choosenField = null;
callDao.validateUpdate(formEntity.getCall()); FormEntity formEntity = validateForm(formId);
List<ContentRequestBean> contentRequestBean = Utils.convertJsonStringToList(formEntity.getContent(), ContentRequestBean.class); callDao.validateUpdate(formEntity.getCall());
for (ContentRequestBean contentRequestBean1 : contentRequestBean) { List<ContentRequestBean> contentRequestBean = Utils.convertJsonStringToList(formEntity.getContent(),
FlowDataEntity flowDataEntity = flowDataRepository.findByFormIdAndChoosenField(formEntity.getId(), contentRequestBean1.getId()); ContentRequestBean.class);
if (flowDataEntity != null) { for (ContentRequestBean contentRequestBean1 : contentRequestBean) {
choosenField = flowDataEntity.getChoosenField(); FlowDataEntity flowDataEntity = flowDataRepository.findByFormIdAndChoosenField(formEntity.getId(),
if (Boolean.TRUE.equals(contentRequestBean1.getId().equals(choosenField))) { contentRequestBean1.getId());
contentRequestBean2 = contentRequestBean1; if (flowDataEntity != null) {
break; choosenField = flowDataEntity.getChoosenField();
} if (Boolean.TRUE.equals(contentRequestBean1.getId().equals(choosenField))) {
} contentRequestBean2 = contentRequestBean1;
} break;
if (contentRequestBean2 != null) { }
List<SettingRequestBean> settingRequestBeansDB = contentRequestBean2.getSettings(); }
for (ContentRequestBean contentRequestBeanRequest : formRequest.getContent()) { }
if (contentRequestBeanRequest.getId().equals(contentRequestBean2.getId())) { if (contentRequestBean2 != null) {
for (SettingRequestBean settingRequestBeanRequest : contentRequestBeanRequest.getSettings()) { List<SettingRequestBean> settingRequestBeansDB = contentRequestBean2.getSettings();
for (SettingRequestBean settingRequestBeanDB : settingRequestBeansDB) { for (ContentRequestBean contentRequestBeanRequest : formRequest.getContent()) {
if (settingRequestBeanRequest.getName().equals(settingRequestBeanDB.getName())) { if (contentRequestBeanRequest.getId().equals(contentRequestBean2.getId())) {
if (!settingRequestBeanRequest.getValue().equals(settingRequestBeanDB.getValue())) { for (SettingRequestBean settingRequestBeanRequest : contentRequestBeanRequest
if (Boolean.TRUE.equals(forceDeleteFlow)) { .getSettings()) {
Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel, formRequest.getLabel()); for (SettingRequestBean settingRequestBeanDB : settingRequestBeansDB) {
Utils.setIfUpdated(formEntity::getContent, formEntity::setContent, setContentResponseBean(formRequest.getContent())); if (settingRequestBeanRequest.getName().equals(settingRequestBeanDB.getName())) {
formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); if (!settingRequestBeanRequest.getValue()
formEntity = saveFormEntity(formEntity); .equals(settingRequestBeanDB.getValue())) {
List<FlowDataEntity> flowDataEntities = flowDataRepository.findByCallId(formEntity.getCall().getId()); if (Boolean.TRUE.equals(forceDeleteFlow)) {
List<FlowEdgesEntity> flowEdgesEntities = flowEdgesRepository.findByCallId(formEntity.getCall().getId()); Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel,
flowDataRepository.deleteAll(flowDataEntities); formRequest.getLabel());
flowEdgesRepository.deleteAll(flowEdgesEntities); Utils.setIfUpdated(formEntity::getContent, formEntity::setContent,
CallEntity callEntity = formEntity.getCall(); setContentResponseBean(formRequest.getContent()));
callEntity.setInitialForm(null); formEntity.setUpdatedDate(
callEntity.setFinalForm(null); DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
callRepository.save(callEntity); formEntity = saveFormEntity(formEntity);
return convertFormEntityToFormResponseBean(formEntity); List<FlowDataEntity> flowDataEntities = flowDataRepository
} else { .findByCallId(formEntity.getCall().getId());
throw new CustomValidationException( List<FlowEdgesEntity> flowEdgesEntities = flowEdgesRepository
Status.BAD_REQUEST, .findByCallId(formEntity.getCall().getId());
Translator.toLocale(GepafinConstant.UPDATING_FORM_VALUE_IMPACT_ON_FLOW, choosenField) flowDataRepository.deleteAll(flowDataEntities);
); flowEdgesRepository.deleteAll(flowEdgesEntities);
} CallEntity callEntity = formEntity.getCall();
} callEntity.setInitialForm(null);
else { callEntity.setFinalForm(null);
Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel, formRequest.getLabel()); callRepository.save(callEntity);
Utils.setIfUpdated(formEntity::getContent, formEntity::setContent, setContentResponseBean(formRequest.getContent())); return convertFormEntityToFormResponseBean(formEntity);
formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); } else {
formEntity = saveFormEntity(formEntity); throw new CustomValidationException(Status.BAD_REQUEST,
return convertFormEntityToFormResponseBean(formEntity); Translator.toLocale(
} GepafinConstant.UPDATING_FORM_VALUE_IMPACT_ON_FLOW,
} choosenField));
} }
} } else {
} Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel,
} formRequest.getLabel());
} Utils.setIfUpdated(formEntity::getContent, formEntity::setContent,
else { setContentResponseBean(formRequest.getContent()));
Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel, formRequest.getLabel()); formEntity
Utils.setIfUpdated(formEntity::getContent, formEntity::setContent, setContentResponseBean(formRequest.getContent())); .setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); formEntity = saveFormEntity(formEntity);
formEntity = saveFormEntity(formEntity); return convertFormEntityToFormResponseBean(formEntity);
return convertFormEntityToFormResponseBean(formEntity); }
} }
return convertFormEntityToFormResponseBean(formEntity); }
} }
}
}
} else {
Utils.setIfUpdated(formEntity::getLabel, formEntity::setLabel, formRequest.getLabel());
Utils.setIfUpdated(formEntity::getContent, formEntity::setContent,
setContentResponseBean(formRequest.getContent()));
formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
formEntity = saveFormEntity(formEntity);
validateAndSaveCriteriaFormField(formEntity.getCall(), formEntity, formRequest.getContent());
return convertFormEntityToFormResponseBean(formEntity);
}
return convertFormEntityToFormResponseBean(formEntity);
}
public FormEntity validateForm(Long formId) { public FormEntity validateForm(Long formId) {
FormEntity formEntity = formRepository.findById(formId) FormEntity formEntity = formRepository.findById(formId)
@@ -200,7 +281,10 @@ public class FormDao {
return formResponseBeanList; return formResponseBeanList;
} }
public String setContentResponseBean(List<ContentRequestBean> contentRequestBeans){ public String setContentResponseBean(List<ContentRequestBean> contentRequestBeans){
return Utils.convertListToJsonString(contentRequestBeans); String stringContentRequest = Utils.convertListToJsonString(contentRequestBeans);
List<ContentRequestBean> cloneContentRequestBeans = Utils.convertJsonStringToList(stringContentRequest, ContentRequestBean.class);
cloneContentRequestBeans.forEach(data->data.setCriteria(null));
return Utils.convertListToJsonString(cloneContentRequestBeans);
} }
public void validateFormField(List<ApplicationFormFieldRequestBean> applicationFormFieldRequestList, ApplicationEntity applicationEntity, FormEntity formEntity) { public void validateFormField(List<ApplicationFormFieldRequestBean> applicationFormFieldRequestList, ApplicationEntity applicationEntity, FormEntity formEntity) {

View File

@@ -0,0 +1,20 @@
package net.gepafin.tendermanagement.entities;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.Data;
@Entity
@Table(name = "criteria_form_field")
@Data
public class CriteriaFormFieldEntity extends BaseEntity {
private Long callId;
private Long formId;
private String formFieldId;
private Long evaluationCriteriaId;
}

View File

@@ -13,6 +13,8 @@ public class ContentRequestBean {
private String label; private String label;
private List<SettingRequestBean> settings; private List<SettingRequestBean> settings;
private Map<String,Object> validators; private Map<String,Object> validators;
private List<Long> criteria;
private String dynamicData;
private Integer dbId; private Integer dbId;
} }

View File

@@ -13,5 +13,7 @@ public class ContentResponseBean {
private String label; private String label;
private List<SettingResponseBean> settings; private List<SettingResponseBean> settings;
private Map<String,Object> validators; private Map<String,Object> validators;
private List<Long> criteria;
private String dynamicData;
private Integer dbId; private Integer dbId;
} }

View File

@@ -0,0 +1,17 @@
package net.gepafin.tendermanagement.repositories;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity;
@Repository
public interface CriteriaFormFieldRepository extends JpaRepository<CriteriaFormFieldEntity, Long>{
List<CriteriaFormFieldEntity> findByCallIdAndFormIdAndFormFieldId(Long callId, Long formId, String formFieldId);
List<CriteriaFormFieldEntity> findByEvaluationCriteriaId(Long evaluationCriteriaId);
}

View File

@@ -1,6 +1,7 @@
package net.gepafin.tendermanagement.service; package net.gepafin.tendermanagement.service;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest;
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
@@ -13,4 +14,6 @@ public interface EvaluationCriteriaService {
public EvaluationCriteriaResponseBean updateEvaluationCriteria(HttpServletRequest request,Long id, EvaluationCriteriaRequest evaluationCriteriaRequest); public EvaluationCriteriaResponseBean updateEvaluationCriteria(HttpServletRequest request,Long id, EvaluationCriteriaRequest evaluationCriteriaRequest);
public void deleteEvaluationCriteria(HttpServletRequest request,Long id); public void deleteEvaluationCriteria(HttpServletRequest request,Long id);
public EvaluationCriteriaEntity validateEvaluationCriteria(Long id);
} }

View File

@@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.service.impl;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.dao.EvaluationCriteriaDao; import net.gepafin.tendermanagement.dao.EvaluationCriteriaDao;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest;
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
import net.gepafin.tendermanagement.service.EvaluationCriteriaService; import net.gepafin.tendermanagement.service.EvaluationCriteriaService;
@@ -33,4 +34,9 @@ public class EvaluationCriteriaServiceImpl implements EvaluationCriteriaService
public void deleteEvaluationCriteria(HttpServletRequest request,Long id) { public void deleteEvaluationCriteria(HttpServletRequest request,Long id) {
evaluationCriteriaDao.deleteEvaluationCriteria(id); evaluationCriteriaDao.deleteEvaluationCriteria(id);
} }
@Override
public EvaluationCriteriaEntity validateEvaluationCriteria(Long id) {
return evaluationCriteriaDao.validateEvaluationCriteria(id);
}
} }

View File

@@ -72,7 +72,7 @@ public interface EvaluationCriteriaApi {
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })) @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) }))
}) })
@DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<Void> deleteEvaluationCriteria(HttpServletRequest request, ResponseEntity<Response<Void>> deleteEvaluationCriteria(HttpServletRequest request,
@Parameter(description = "evaluation criteria id", required = true) @Parameter(description = "evaluation criteria id", required = true)
@PathVariable("id") Long id); @PathVariable("id") Long id);
} }

View File

@@ -57,10 +57,10 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi {
} }
@Override @Override
public ResponseEntity<Void> deleteEvaluationCriteria(HttpServletRequest request, Long id) { public ResponseEntity<Response<Void>> deleteEvaluationCriteria(HttpServletRequest request, Long id) {
service.deleteEvaluationCriteria(request,id); service.deleteEvaluationCriteria(request,id);
return ResponseEntity.status(HttpStatus.OK) return ResponseEntity.status(HttpStatus.OK)
.header("Message", Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_DELETED_SUCCESSFULLY)) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_DELETED_SUCCESSFULLY)));
.build();
} }
} }

View File

@@ -1101,4 +1101,41 @@
<column name="country" value="Italy"/> <column name="country" value="Italy"/>
</insert> </insert>
</changeSet> </changeSet>
<changeSet id="16-10-2024_2" author="Rajesh Khore">
<createTable tableName="criteria_form_field">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true"
primaryKeyName="criteria_form_field_pkey" />
</column>
<column name="call_id" type="INTEGER" />
<column name="form_id" type="INTEGER" />
<column name="form_field_id" type="varchar(255)" />
<column name="evaluation_criteria_id" type="INTEGER" />
<column name="created_date" type="TIMESTAMP WITHOUT TIME ZONE" />
<column name="updated_date" type="TIMESTAMP WITHOUT TIME ZONE" />
</createTable>
<addForeignKeyConstraint baseTableName="criteria_form_field"
baseColumnNames="call_id"
referencedTableName="call"
referencedColumnNames="id"
constraintName="fk_criteria_form_field_call_id"
onDelete="CASCADE"/>
<addForeignKeyConstraint baseTableName="criteria_form_field"
baseColumnNames="form_id"
referencedTableName="form"
referencedColumnNames="id"
constraintName="fk_criteria_form_field_form_id"
onDelete="CASCADE"/>
<addForeignKeyConstraint baseTableName="criteria_form_field"
baseColumnNames="evaluation_criteria_id"
referencedTableName="evaluation_criteria"
referencedColumnNames="id"
constraintName="fk_criteria_form_field_evaluation_criteria_id"
onDelete="CASCADE"/>
</changeSet>
</databaseChangeLog> </databaseChangeLog>