diff --git a/pom.xml b/pom.xml
index b443ec18..08c677d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,13 @@
lombok
+
+
+ com.mashape.unirest
+ unirest-java
+ 1.4.9
+
+
com.h2database
diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java
index b1704c6a..e3304967 100644
--- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java
+++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java
@@ -292,5 +292,9 @@ public class GepafinConstant {
public static final String ENCRYPT_KEY = "U2VjdXJlRW5jcnlwdEtleQ==";
public static final String APPLICATION_DOCUMENTS_NOT_FOUND_MSG = "application.documents.not.found";
public static final String DUPLICATE_BENEFICIARY_CALL = "beneficiary.call.duplicate";
+ public static final String USER_MUST_BE_ASSOCIATED_WITH_COMPANY="user.must.be.associated.with.company.to.create.application";
+ public static final String COMPANY_ID_REQUIRED_FOR_PREFERRED_CALL = "company.id.required.for.preferred.call";
+ public static final String SUBMISSION_DATE = "submissionDate";
+ public static final String ASSIGNED_AT = "assignedAt";
}
diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java
index d685796f..c2054ef3 100644
--- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java
+++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java
@@ -1,6 +1,5 @@
package net.gepafin.tendermanagement.dao;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.persistence.criteria.Join;
@@ -11,10 +10,8 @@ import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.*;
import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum;
import net.gepafin.tendermanagement.enums.*;
-import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest;
-import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean;
-import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean;
-import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest;
+import net.gepafin.tendermanagement.model.request.*;
+import net.gepafin.tendermanagement.model.request.AmendmentFormField.AmendmentIsUploadedByEnum;
import net.gepafin.tendermanagement.model.response.*;
import net.gepafin.tendermanagement.repositories.*;
import net.gepafin.tendermanagement.service.*;
@@ -24,6 +21,8 @@ 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.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.jpa.domain.Specification;
@@ -32,6 +31,7 @@ import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
import static net.gepafin.tendermanagement.util.Utils.log;
@@ -83,20 +83,15 @@ public class ApplicationAmendmentRequestDao {
@Autowired
private SystemEmailTemplatesService systemEmailTemplatesService;
- @Autowired
- private CallDao callDao;
-
- @Autowired
- private DocumentRepository documentRepository;
-
@Autowired
private HubService hubService;
-// @Autowired
-// private MailUtil mailUtil;
@Autowired
private Validator validator;
+ @Autowired
+ private EmailLogDao emailLogDao;
+
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(Long applicationEvaluationId) {
log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId);
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
@@ -216,10 +211,10 @@ public class ApplicationAmendmentRequestDao {
applicationAmendmentRequestEntity.setApplicationId(applicationId);
if (applicationAmendmentRequest.getFormFields() != null) {
- List formFieldRequestBean = applicationAmendmentRequest.getFormFields().stream()
+ List formFieldRequestBean = applicationAmendmentRequest.getFormFields().stream()
.filter(AmendmentFormFieldResponse::isSelected)
.map(amendmentFormFieldRequest -> {
- ApplicationFormFieldRequestBean formField = new ApplicationFormFieldRequestBean();
+ AmendmentFormField formField = new AmendmentFormField();
formField.setFieldId(amendmentFormFieldRequest.getFieldId());
formField.setFieldValue(null);
return formField;
@@ -235,19 +230,23 @@ public class ApplicationAmendmentRequestDao {
userEntity.getHub().getId());
applicationAmendmentRequestEntity.setProtocol(protocolEntity);
ApplicationAmendmentRequestEntity applicationAmendment = saveApplicationAmendmentRequestEntity(applicationAmendmentRequestEntity);
-
- //Set Status
- applicationEvaluationEntity.setStatus(ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue());
+ String evaluationStatusType = applicationEvaluationEntity.getStatus();
+ if (Boolean.FALSE.equals(evaluationStatusType.equals((ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue())))){
+ applicationEvaluationEntity.setStatus(ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue());
applicationEvaluationRepository.save(applicationEvaluationEntity);
-
+ }
ApplicationEntity applicationEntity = applicationService.validateApplication(applicationId);
- applicationEntity.setStatus(ApplicationStatusTypeEnum.SOCCORSO.getValue());
- applicationRepository.save(applicationEntity);
-
+ String applicationStatusType = applicationEntity.getStatus();
+ if (Boolean.FALSE.equals(applicationStatusType.equals((ApplicationStatusTypeEnum.SOCCORSO.getValue())))) {
+ applicationEntity.setStatus(ApplicationStatusTypeEnum.SOCCORSO.getValue());
+ applicationRepository.save(applicationEntity);
+ }
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
- assignedApplicationsEntity.setStatus(AssignedApplicationEnum.SOCCORSO.getValue());
- assignedApplicationsRepository.save(assignedApplicationsEntity);
-
+ String assignedStatusType = assignedApplicationsEntity.getStatus();
+ if (Boolean.FALSE.equals(assignedStatusType.equals((AssignedApplicationEnum.SOCCORSO.getValue())))) {
+ assignedApplicationsEntity.setStatus(AssignedApplicationEnum.SOCCORSO.getValue());
+ assignedApplicationsRepository.save(assignedApplicationsEntity);
+ }
return applicationAmendment;
}
@@ -257,132 +256,134 @@ public class ApplicationAmendmentRequestDao {
}
public ApplicationAmendmentRequestResponse convertEntityToResponse(ApplicationAmendmentRequestEntity applicationAmendmentRequestEntity) {
- ApplicationAmendmentRequestResponse applicationAmendmentRequestResponse = new ApplicationAmendmentRequestResponse();
- applicationAmendmentRequestResponse.setId(applicationAmendmentRequestEntity.getId());
- Long applicationId = applicationAmendmentRequestEntity.getApplicationId();
+ ApplicationAmendmentRequestResponse response = initializeBasicResponse(applicationAmendmentRequestEntity);
+
+ List forms = applicationFormRepository.findByApplicationId(applicationAmendmentRequestEntity.getApplicationId());
+ Map fieldIdToLabelMap = extractFieldIdToLabelMap(forms);
- ApplicationEntity application = applicationService.validateApplication(applicationId);
- applicationAmendmentRequestResponse.setApplicationId(applicationId);
- applicationAmendmentRequestResponse.setCallEmail(application.getCall().getEmail());
- applicationAmendmentRequestResponse.setApplicationEvaluationId(applicationAmendmentRequestEntity.getApplicationEvaluationEntity().getId());
- applicationAmendmentRequestResponse.setNote(applicationAmendmentRequestEntity.getNote());
- applicationAmendmentRequestResponse.setStatus(ApplicationAmendmentRequestEnum.valueOf(applicationAmendmentRequestEntity.getStatus()));
- applicationAmendmentRequestResponse.setResponseDays(applicationAmendmentRequestEntity.getResponseDays());
- applicationAmendmentRequestResponse.setInternalNote(applicationAmendmentRequestEntity.getInternalNote());
- LocalDateTime startDate = applicationAmendmentRequestEntity.getStartDate();
- applicationAmendmentRequestResponse.setStartDate(startDate);
+ List amendmentFormFields = Utils.convertJsonStringToList(
+ applicationAmendmentRequestEntity.getFormFields(), AmendmentFormField.class);
+ Map formFieldEntityMap = getApplicationFormFieldEntityMap(applicationAmendmentRequestEntity, amendmentFormFields);
- LocalDateTime expirationDate = startDate.plus(expirationDays, ChronoUnit.DAYS);
- applicationAmendmentRequestResponse.setExpirationDate(expirationDate);
+ processFormFields(amendmentFormFields, fieldIdToLabelMap, formFieldEntityMap, response);
- applicationAmendmentRequestResponse.setIsSendEmail(applicationAmendmentRequestEntity.getIsEmail());
- applicationAmendmentRequestResponse.setIsSendNotification(applicationAmendmentRequestEntity.getIsNotification());
- String callName = application.getCall().getName();
- Long protocolNumber = (applicationAmendmentRequestEntity.getProtocol() != null && applicationAmendmentRequestEntity.getProtocol().getProtocolNumber() != null)
- ? applicationAmendmentRequestEntity.getProtocol().getProtocolNumber()
- : null;
- UserEntity userEntity = userService.validateUser(application.getUserId());
- String firstName = userEntity.getBeneficiary() != null ? userEntity.getBeneficiary().getFirstName() : "";
- String lastName = userEntity.getBeneficiary() != null ? userEntity.getBeneficiary().getLastName() : "";
-
- String beneficiaryName = (!firstName.isBlank() ? firstName : "") +
- (!lastName.isBlank() ? " " + lastName : "");
-
- beneficiaryName = beneficiaryName.isBlank() ? "" : beneficiaryName;
- applicationAmendmentRequestResponse.setCallName(callName);
- applicationAmendmentRequestResponse.setProtocolNumber(protocolNumber);
- applicationAmendmentRequestResponse.setBeneficiaryName(beneficiaryName);
-
- List forms = applicationFormRepository.findByApplicationId(applicationId);
- List allFormFields = new ArrayList<>();
-
- for (ApplicationFormEntity form : forms) {
- String content = form.getForm().getContent();
- List