diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 38121a98..2ffb9604 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -233,5 +233,6 @@ public class GepafinConstant { public static final String CANNOT_DELETE_COMPANY_WITH_APPLICATION_SUBMITT = "application.in.submit.status.cannot.delete.company"; public static final String GET_USERS_SUCCESS_MSG = "get.users.success.msg"; public static final String CANNOT_CREATE_BENEFICIARY_USER="cannot.create.beneficiary.user"; + public static final String EVALUATIONCRITERIA_INVALID = "evaluationCriteria.invalid"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 13101423..3bba946a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -1,6 +1,5 @@ package net.gepafin.tendermanagement.dao; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -23,10 +22,6 @@ import net.gepafin.tendermanagement.util.Utils; import org.h2.util.IOUtils; import org.springframework.beans.factory.annotation.Autowired; 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.util.StringUtils; @@ -34,6 +29,7 @@ import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.CallTargetAudienceChecklistEntity; +import net.gepafin.tendermanagement.entities.CriteriaFormFieldEntity; import net.gepafin.tendermanagement.entities.DocumentEntity; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; 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.repositories.CallRepository; import net.gepafin.tendermanagement.repositories.CallTargetAudienceChecklistRepository; +import net.gepafin.tendermanagement.repositories.CriteriaFormFieldRepository; import net.gepafin.tendermanagement.repositories.DocumentRepository; import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository; import net.gepafin.tendermanagement.repositories.FaqRepository; @@ -93,14 +90,21 @@ public class CallDao { @Autowired private FaqService faqService; + @Autowired private FlowDao flowDao; + @Autowired private FormDao formDao; + @Value("${aws.s3.url.folder}") private String s3Folder; + @Autowired private AmazonS3Service amazonS3Service; + + @Autowired + private CriteriaFormFieldRepository criteriaFormFieldRepository; public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { UserEntity userEntity = userService.validateUser(userId); @@ -208,6 +212,12 @@ public class CallDao { private void softDeleteEvaluationCriteria(EvaluationCriteriaEntity evaluationCriteriaEntity) { evaluationCriteriaEntity.setIsDeleted(true); evaluationCriteriaRepository.save(evaluationCriteriaEntity); + List list = criteriaFormFieldRepository + .findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()) + .stream() + .peek(data -> data.setIsDeleted(Boolean.TRUE)) + .toList(); + criteriaFormFieldRepository.saveAll(list); } private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, @@ -255,6 +265,7 @@ public class CallDao { private void softDeleteDocument(DocumentEntity documentEntity) { documentEntity.setIsDeleted(true); documentRepository.save(documentEntity); + } private DocumentEntity convertToDocumentEntity(DocumentReq documentReq,Long sourceId) { diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java index f747d38f..b865121e 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java @@ -3,17 +3,21 @@ package net.gepafin.tendermanagement.dao; 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.model.request.EvaluationCriteriaRequest; 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.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; + +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Component; @Component @@ -27,6 +31,9 @@ public class EvaluationCriteriaDao { @Autowired private LookUpDataService lookUpDataService; + + @Autowired + private CriteriaFormFieldRepository criteriaFormFieldRepository; public EvaluationCriteriaResponseBean createEvaluationCriteria( EvaluationCriteriaRequest evaluationCriteriaRequest) { @@ -54,6 +61,12 @@ public class EvaluationCriteriaDao { .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 request) { EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id) @@ -64,12 +77,15 @@ public class EvaluationCriteriaDao { } public void deleteEvaluationCriteria(Long id) { - try { evaluationCriteriaRepository.deleteById(id); - } catch (EmptyResultDataAccessException e) { - throw new ResourceNotFoundException(Status.NOT_FOUND, - Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)); - } + EvaluationCriteriaEntity evaluationCriteriaEntity = validateEvaluationCriteria(id); + evaluationCriteriaEntity.setIsDeleted(Boolean.TRUE); + evaluationCriteriaRepository.save(evaluationCriteriaEntity); + List list = criteriaFormFieldRepository.findByEvaluationCriteriaIdAndIsDeletedFalse(evaluationCriteriaEntity.getId()) + .stream() + .peek(data -> data.setIsDeleted(Boolean.TRUE)) + .toList();; + criteriaFormFieldRepository.saveAll(list); } private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean( diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java index 84c9d9b1..5c43855e 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java @@ -6,9 +6,9 @@ import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.response.ContentResponseBean; import net.gepafin.tendermanagement.model.response.FormResponseBean; -import net.gepafin.tendermanagement.model.response.VatNumberResponseBean; import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.CallService; +import net.gepafin.tendermanagement.service.EvaluationCriteriaService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.FieldValidator; import net.gepafin.tendermanagement.util.Utils; @@ -22,9 +22,12 @@ import org.springframework.util.CollectionUtils; import java.text.MessageFormat; import java.time.LocalDateTime; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; @Component @@ -53,13 +56,19 @@ public class FormDao { @Autowired private CallRepository callRepository; + + @Autowired + private CriteriaFormFieldRepository criteriaFormFieldRepository; + + @Autowired + private EvaluationCriteriaService evaluationCriteriaService; public FormEntity saveFormEntity(FormEntity formEntity){ formEntity=formRepository.save(formEntity); return formEntity; } - - public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest){ + + public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest) { FormEntity formEntity=new FormEntity(); CallEntity callEntity=callService.getCallEntityById(callId); formEntity.setCall(callEntity); @@ -68,16 +77,29 @@ public class FormDao { formEntity=saveFormEntity(formEntity); return formEntity; } - public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity){ + public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity) { FormResponseBean formResponseBean=new FormResponseBean(); formResponseBean.setId(formEntity.getId()); - formResponseBean.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class)); + formResponseBean.setContent(setContent(formEntity)); formResponseBean.setLabel(formEntity.getLabel()); formResponseBean.setCallId(formEntity.getCall().getId()); formResponseBean.setCallStatus(formEntity.getCall().getStatus()); return formResponseBean; } - public FormResponseBean createForm(Long callId,FormRequest formRequest){ + + private List setContent(FormEntity formEntity) { + List contentList = Utils.convertJsonStringToList(formEntity.getContent(), + ContentResponseBean.class); + contentList.forEach(data -> { + List criteriaIds = criteriaFormFieldRepository + .findByCallIdAndFormIdAndFormFieldIdAndIsDeletedFalse(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); CallEntity callEntity=callService.validateCall(callId); List flowDataEntities=flowDataRepository.findByCallId(callId); @@ -90,80 +112,145 @@ public class FormDao { callRepository.save(callEntity); } FormEntity formEntity=convertFormRequestToFormEntity(callId,formRequest); + validateAndSaveCriteriaFormField(callEntity, formEntity, formRequest.getContent()); return convertFormEntityToFormResponseBean(formEntity); } - public void validateForm(FormRequest formRequest){ + + private void validateAndSaveCriteriaFormField(CallEntity callEntity, FormEntity formEntity, + List contentResponseBeans) { + + contentResponseBeans.forEach(content -> { + // Fetch existing records from the repository based on the call, form, and field ID + List existingCriteriaFields = criteriaFormFieldRepository + .findByCallIdAndFormIdAndFormFieldIdAndIsDeletedFalse(callEntity.getId(), formEntity.getId(), content.getId()); + + // Extract existing evaluation criteria IDs into a set for quick lookup + Set existingEvaluationCriteriaIds = existingCriteriaFields.stream() + .map(CriteriaFormFieldEntity::getEvaluationCriteriaId) + .collect(Collectors.toSet()); + + // Get the criteria list (handling null as an empty list for uniformity) + List 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 toBeDeleted = existingCriteriaFields.stream() + .filter(criteriaFormField -> !criteriaList.contains(criteriaFormField.getEvaluationCriteriaId())) + .peek(data->data.setIsDeleted(Boolean.TRUE)) + .collect(Collectors.toList()); + + if (!toBeDeleted.isEmpty()) { + criteriaFormFieldRepository.saveAll(toBeDeleted); + } + }); + } + + + private void createCriteriaFormField(CallEntity callEntity, FormEntity formEntity, + String formFieldId,Long evaluationCriteriaId) { + EvaluationCriteriaEntity evaluationCriteria = evaluationCriteriaService.validateEvaluationCriteria(evaluationCriteriaId); + if (Boolean.FALSE.equals(evaluationCriteria.getCall().getId().equals(callEntity.getId()))) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.EVALUATIONCRITERIA_INVALID)); + } + CriteriaFormFieldEntity criteriaFormField = new CriteriaFormFieldEntity(); + criteriaFormField.setCallId(callEntity.getId()); + criteriaFormField.setFormId(formEntity.getId()); + criteriaFormField.setFormFieldId(formFieldId); + criteriaFormField.setIsDeleted(Boolean.FALSE); + criteriaFormField.setEvaluationCriteriaId(evaluationCriteriaId); + criteriaFormFieldRepository.save(criteriaFormField); + + } + + public void validateForm(FormRequest formRequest){ if(formRequest.getContent()==null || formRequest.getLabel()==null ){ 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; - String choosenField=null; - FormEntity formEntity = validateForm(formId); - callDao.validateUpdate(formEntity.getCall()); - List contentRequestBean = Utils.convertJsonStringToList(formEntity.getContent(), ContentRequestBean.class); - for (ContentRequestBean contentRequestBean1 : contentRequestBean) { - FlowDataEntity flowDataEntity = flowDataRepository.findByFormIdAndChoosenField(formEntity.getId(), contentRequestBean1.getId()); - if (flowDataEntity != null) { - choosenField = flowDataEntity.getChoosenField(); - if (Boolean.TRUE.equals(contentRequestBean1.getId().equals(choosenField))) { - contentRequestBean2 = contentRequestBean1; - break; - } - } - } - if (contentRequestBean2 != null) { - List settingRequestBeansDB = contentRequestBean2.getSettings(); - for (ContentRequestBean contentRequestBeanRequest : formRequest.getContent()) { - if (contentRequestBeanRequest.getId().equals(contentRequestBean2.getId())) { - for (SettingRequestBean settingRequestBeanRequest : contentRequestBeanRequest.getSettings()) { - for (SettingRequestBean settingRequestBeanDB : settingRequestBeansDB) { - if (settingRequestBeanRequest.getName().equals(settingRequestBeanDB.getName())) { - if (!settingRequestBeanRequest.getValue().equals(settingRequestBeanDB.getValue())) { - if (Boolean.TRUE.equals(forceDeleteFlow)) { - 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); - List flowDataEntities = flowDataRepository.findByCallId(formEntity.getCall().getId()); - List flowEdgesEntities = flowEdgesRepository.findByCallId(formEntity.getCall().getId()); - flowDataRepository.deleteAll(flowDataEntities); - flowEdgesRepository.deleteAll(flowEdgesEntities); - CallEntity callEntity = formEntity.getCall(); - callEntity.setInitialForm(null); - callEntity.setFinalForm(null); - callRepository.save(callEntity); - return convertFormEntityToFormResponseBean(formEntity); - } else { - throw new CustomValidationException( - Status.BAD_REQUEST, - 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, setContentResponseBean(formRequest.getContent())); - formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); - formEntity = saveFormEntity(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); - return convertFormEntityToFormResponseBean(formEntity); - } - return convertFormEntityToFormResponseBean(formEntity); - } + + public FormResponseBean updateForm(Long formId, FormRequest formRequest, Boolean forceDeleteFlow) { + ContentRequestBean contentRequestBean2 = null; + String choosenField = null; + FormEntity formEntity = validateForm(formId); + callDao.validateUpdate(formEntity.getCall()); + List contentRequestBean = Utils.convertJsonStringToList(formEntity.getContent(), + ContentRequestBean.class); + for (ContentRequestBean contentRequestBean1 : contentRequestBean) { + FlowDataEntity flowDataEntity = flowDataRepository.findByFormIdAndChoosenField(formEntity.getId(), + contentRequestBean1.getId()); + if (flowDataEntity != null) { + choosenField = flowDataEntity.getChoosenField(); + if (Boolean.TRUE.equals(contentRequestBean1.getId().equals(choosenField))) { + contentRequestBean2 = contentRequestBean1; + break; + } + } + } + if (contentRequestBean2 != null) { + List settingRequestBeansDB = contentRequestBean2.getSettings(); + for (ContentRequestBean contentRequestBeanRequest : formRequest.getContent()) { + if (contentRequestBeanRequest.getId().equals(contentRequestBean2.getId())) { + for (SettingRequestBean settingRequestBeanRequest : contentRequestBeanRequest + .getSettings()) { + for (SettingRequestBean settingRequestBeanDB : settingRequestBeansDB) { + if (settingRequestBeanRequest.getName().equals(settingRequestBeanDB.getName())) { + if (!settingRequestBeanRequest.getValue() + .equals(settingRequestBeanDB.getValue())) { + if (Boolean.TRUE.equals(forceDeleteFlow)) { + 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); + List flowDataEntities = flowDataRepository + .findByCallId(formEntity.getCall().getId()); + List flowEdgesEntities = flowEdgesRepository + .findByCallId(formEntity.getCall().getId()); + flowDataRepository.deleteAll(flowDataEntities); + flowEdgesRepository.deleteAll(flowEdgesEntities); + CallEntity callEntity = formEntity.getCall(); + callEntity.setInitialForm(null); + callEntity.setFinalForm(null); + callRepository.save(callEntity); + return convertFormEntityToFormResponseBean(formEntity); + } else { + throw new CustomValidationException(Status.BAD_REQUEST, + 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, + setContentResponseBean(formRequest.getContent())); + formEntity + .setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); + formEntity = saveFormEntity(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) { FormEntity formEntity = formRepository.findById(formId) @@ -200,7 +287,10 @@ public class FormDao { return formResponseBeanList; } public String setContentResponseBean(List contentRequestBeans){ - return Utils.convertListToJsonString(contentRequestBeans); + String stringContentRequest = Utils.convertListToJsonString(contentRequestBeans); + List cloneContentRequestBeans = Utils.convertJsonStringToList(stringContentRequest, ContentRequestBean.class); + cloneContentRequestBeans.forEach(data->data.setCriteria(null)); + return Utils.convertListToJsonString(cloneContentRequestBeans); } public void validateFormField(List applicationFormFieldRequestList, ApplicationEntity applicationEntity, FormEntity formEntity) { diff --git a/src/main/java/net/gepafin/tendermanagement/entities/CriteriaFormFieldEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/CriteriaFormFieldEntity.java new file mode 100644 index 00000000..1177bbd2 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/entities/CriteriaFormFieldEntity.java @@ -0,0 +1,24 @@ +package net.gepafin.tendermanagement.entities; + +import jakarta.persistence.Column; +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; + + @Column(name ="IS_DELETED", nullable = false) + private Boolean isDeleted = false; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java index f0399ead..bd6fa7d7 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java @@ -13,6 +13,8 @@ public class ContentRequestBean { private String label; private List settings; private Map validators; + private List criteria; + private String dynamicData; private Integer dbId; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java index 6ee1367d..8fa685b0 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java @@ -13,5 +13,7 @@ public class ContentResponseBean { private String label; private List settings; private Map validators; + private List criteria; + private String dynamicData; private Integer dbId; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CriteriaFormFieldRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CriteriaFormFieldRepository.java new file mode 100644 index 00000000..7f63d5e2 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CriteriaFormFieldRepository.java @@ -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{ + + List findByCallIdAndFormIdAndFormFieldIdAndIsDeletedFalse(Long callId, Long formId, String formFieldId); + + List findByEvaluationCriteriaIdAndIsDeletedFalse(Long evaluationCriteriaId); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/EvaluationCriteriaService.java b/src/main/java/net/gepafin/tendermanagement/service/EvaluationCriteriaService.java index 3c1e2b85..5853b97a 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/EvaluationCriteriaService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/EvaluationCriteriaService.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; @@ -13,4 +14,6 @@ public interface EvaluationCriteriaService { public EvaluationCriteriaResponseBean updateEvaluationCriteria(HttpServletRequest request,Long id, EvaluationCriteriaRequest evaluationCriteriaRequest); public void deleteEvaluationCriteria(HttpServletRequest request,Long id); + + public EvaluationCriteriaEntity validateEvaluationCriteria(Long id); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationCriteriaServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationCriteriaServiceImpl.java index 2aef9e5f..f597dcfe 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationCriteriaServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationCriteriaServiceImpl.java @@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.EvaluationCriteriaDao; +import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.service.EvaluationCriteriaService; @@ -33,4 +34,9 @@ public class EvaluationCriteriaServiceImpl implements EvaluationCriteriaService public void deleteEvaluationCriteria(HttpServletRequest request,Long id) { evaluationCriteriaDao.deleteEvaluationCriteria(id); } + + @Override + public EvaluationCriteriaEntity validateEvaluationCriteria(Long id) { + return evaluationCriteriaDao.validateEvaluationCriteria(id); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java index 4274cccb..df527940 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java @@ -72,7 +72,7 @@ public interface EvaluationCriteriaApi { @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })) }) @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) - ResponseEntity deleteEvaluationCriteria(HttpServletRequest request, + ResponseEntity> deleteEvaluationCriteria(HttpServletRequest request, @Parameter(description = "evaluation criteria id", required = true) @PathVariable("id") Long id); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java index 6c6286ae..37e8b7a6 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java @@ -57,10 +57,10 @@ public class EvaluationCriteriaApiController implements EvaluationCriteriaApi { } @Override - public ResponseEntity deleteEvaluationCriteria(HttpServletRequest request, Long id) { + public ResponseEntity> deleteEvaluationCriteria(HttpServletRequest request, Long id) { service.deleteEvaluationCriteria(request,id); + return ResponseEntity.status(HttpStatus.OK) - .header("Message", Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_DELETED_SUCCESSFULLY)) - .build(); + .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_DELETED_SUCCESSFULLY))); } } diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index ca567baa..5aada016 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -1101,6 +1101,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 683e335c..4ba49d72 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -253,6 +253,8 @@ get_login_attempt_se_msg=Login attempts fetched successfully. application.in.submit.status.cannot.delete.company=The company cannot be deleted because there are active applications in the SUBMITTED status. get.users.success.msg = Successfully fetched users. cannot.create.beneficiary.user = Creation of a Beneficiary user is not allowed. Please assign the appropriate role. +evaluationCriteria.invalid=This evaluation criterion does not belong to the current call. + diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 4731e451..7c9dd9bc 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -250,4 +250,6 @@ application.in.submit.status.cannot.delete.company=Non get.users.success.msg = Utenti recuperati con successo cannot.create.beneficiary.user = La creazione di un utente beneficiario non è consentita. Si prega di assegnare il ruolo appropriato. +evaluationCriteria.invalid=Questo criterio di valutazione non appartiene alla chiamata corrente. +