From 49f5eb08838f21e360395b63508d9a0d502dd348 Mon Sep 17 00:00:00 2001 From: nisha Date: Wed, 25 Sep 2024 12:25:29 +0530 Subject: [PATCH] Updated response of application api --- .../constants/GepafinConstant.java | 3 +- .../tendermanagement/dao/ApplicationDao.java | 32 +++++++++++++++++++ .../tendermanagement/dao/FlowFormDao.java | 28 ++++++++++------ .../model/response/ApplicationResponse.java | 8 +++++ src/main/resources/message_en.properties | 2 ++ src/main/resources/message_it.properties | 3 ++ 6 files changed, 66 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 395d883c..ad8ca5b4 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -155,6 +155,7 @@ public class GepafinConstant { public static final String IS_CAP="isCAP"; public static final String IS_CODICE_FISCALE="isCodiceFiscale"; public static final String IS_PIVA="isPIVA"; - public static final String FAILED_RETAIN_FIELD="failed.retain.field"; + public static final String TOTAL_STEPS_NOT_BE_ZERO="total.steps.not.zero"; + public static final String COMPLETED_STEPS_NOT_VALID="completed.steps.not.valid"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index d153ed5c..8d19b48d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -13,14 +13,17 @@ import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.ApplicationFormFieldRepository; import net.gepafin.tendermanagement.repositories.ApplicationFormRepository; import net.gepafin.tendermanagement.repositories.ApplicationRepository; +import net.gepafin.tendermanagement.repositories.FlowEdgesRepository; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.DocumentService; import net.gepafin.tendermanagement.service.FormService; import net.gepafin.tendermanagement.util.DateTimeUtil; +import net.gepafin.tendermanagement.util.FieldValidator; import net.gepafin.tendermanagement.util.Utils; 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.checkerframework.checker.units.qual.A; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -56,6 +59,12 @@ public class ApplicationDao { @Autowired private CallDao callDao; + @Autowired + private FlowFormDao flowFormDao; + + @Autowired + private FlowEdgesRepository flowEdgesRepository; + public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) { FormEntity formEntity = formService.validateForm(formId); CallEntity call = callService.validatePublishedCall(formEntity.getCall().getId()); @@ -204,7 +213,16 @@ public class ApplicationDao { private ApplicationResponse getApplicationResponse(ApplicationEntity applicationEntity) { ApplicationResponse responseBean = new ApplicationResponse(); + List flowEdgesList = flowEdgesRepository.findByCallId(applicationEntity.getCall().getId()); + Long totalFormSteps = flowFormDao.calculateTotalSteps(flowEdgesList); + List applicationFormList = applicationFormRepository.findByApplicationId(applicationEntity.getId()); + Long completedSteps=(Long.valueOf(applicationFormList.size())); + Integer progress=calculateProgress(totalFormSteps,completedSteps); responseBean.setId(applicationEntity.getId()); + responseBean.setProgress(progress); + responseBean.setCallTitle(applicationEntity.getCall().getName()); + responseBean.setCallEndDate(applicationEntity.getCall().getEndDate()); + responseBean.setModifiedDate(applicationEntity.getCall().getUpdatedDate()); responseBean.setCallId(applicationEntity.getCall().getId()); responseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); responseBean.setStatus(applicationEntity.getStatus()); @@ -451,4 +469,18 @@ public class ApplicationDao { } saveApplicationEntity(applicationEntity); } + + public Integer calculateProgress(Long totalSteps, Long completedSteps) { + if (FieldValidator.isNullOrZero(totalSteps)) { + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.TOTAL_STEPS_NOT_BE_ZERO)); + } + + if (completedSteps < 0 || completedSteps > totalSteps) { + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.COMPLETED_STEPS_NOT_VALID)); + } + + double progress = ((double) completedSteps / totalSteps) * 100; + return (int) Math.round(progress); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java index a6f6a867..63287e0d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java @@ -290,21 +290,31 @@ public class FlowFormDao { nextOrPreviousFormResponse.setCallTitle(applicationEntity.getCall().getName()); List flowEdgesList = flowEdgesRepository.findByCallId(applicationEntity.getCall().getId()); - Long totalFormSteps = 3l; - if (flowEdgesList.size() == 1) { - totalFormSteps = 2l; - } + Long totalFormSteps = calculateTotalSteps(flowEdgesList); + Long currentStep = calculateCurrentStep(formEntity); + List applicationFormList = applicationFormRepository.findByApplicationId(applicationEntity.getId()); + nextOrPreviousFormResponse.setTotalFormSteps(totalFormSteps); + nextOrPreviousFormResponse.setCompletedSteps(Long.valueOf(applicationFormList.size())); + nextOrPreviousFormResponse.setCurrentStep(currentStep); + return nextOrPreviousFormResponse; + } + + public Long calculateCurrentStep(FormEntity formEntity) { Long currentStep = 2l; if (formEntity.getId().equals(formEntity.getCall().getInitialForm())) { currentStep = 1l; } else if (formEntity.getId().equals(formEntity.getCall().getFinalForm())) { currentStep = 3l; } - List applicationFormList = applicationFormRepository.findByApplicationId(applicationEntity.getId()); - nextOrPreviousFormResponse.setTotalFormSteps(totalFormSteps); - nextOrPreviousFormResponse.setCompletedSteps(Long.valueOf(applicationFormList.size())); - nextOrPreviousFormResponse.setCurrentStep(currentStep); - return nextOrPreviousFormResponse; + return currentStep; + } + + public Long calculateTotalSteps(List flowEdgesList) { + Long totalFormSteps = 3l; + if (flowEdgesList.size() == 1) { + totalFormSteps = 2l; + } + return totalFormSteps; } private Long getDefaultForm(ApplicationEntity applicationEntity) { diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java index fdb0f6f3..b5a0fbb2 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java @@ -13,6 +13,14 @@ public class ApplicationResponse{ private Long callId; + private String callTitle; + + private LocalDateTime callEndDate; + + private LocalDateTime modifiedDate; + + private Integer progress; + private LocalDateTime submissionDate; private String status; diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 981ed852..12b06608 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -184,3 +184,5 @@ valid.vat.number=The VAT number is not valid for field {0}. failed.retain.field=Failed to retain specific fields. application.is.incomplete = The application is incomplete. +total.steps.not.zero=Total steps cannot be zero. +completed.steps.not.valid=Completed steps should be between 0 and total steps. \ No newline at end of file diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 5a7899df..a7d9068e 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -176,3 +176,6 @@ validation.marca.da.bollo=Il campo {0} deve essere una Marca Da Bollo valida con validation.piva=Il numero di partita IVA per {0} deve essere lungo fino a 11 cifre. valid.vat.number=Il numero di partita IVA non � valido per il campo {0}. failed.retain.field=Impossibile conservare campi specifici. + +total.steps.not.zero=Il totale dei passaggi non può essere zero. +completed.steps.not.valid=I passaggi completati devono essere compresi tra 0 e il totale dei passaggi.