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 516c15ed..97730f80 100644
--- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java
+++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java
@@ -292,6 +292,10 @@ 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";
public static final String AUTH = "auth";
//Logging
diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java
index 45e0ab08..9e08c776 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;
@@ -22,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;
@@ -30,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;
@@ -81,26 +83,24 @@ 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;
+
@Autowired
LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
+ @Autowired
+ private AssignedApplicationsDao assignedApplicationsDao;
+
public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(Long applicationEvaluationId) {
log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId);
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
@@ -213,6 +213,8 @@ public class ApplicationAmendmentRequestDao {
applicationAmendmentRequestEntity.setStartDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now()));
applicationAmendmentRequestEntity.setStatus(ApplicationAmendmentRequestEnum.AWAITING.getValue());
ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId);
+ //cloned for old data entity
+ ApplicationEvaluationEntity oldApplicationEvaluationEntity = Utils.getClonedEntityForData(applicationEvaluationEntity);
applicationAmendmentRequestEntity.setApplicationEvaluationEntity(applicationEvaluationEntity);
Long applicationId = applicationEvaluationEntity.getApplicationId();
@@ -220,10 +222,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;
@@ -238,32 +240,41 @@ public class ApplicationAmendmentRequestDao {
applicationEvaluationEntity.getAssignedApplicationsEntity().getApplication(), protocolNumber,
userEntity.getHub().getId());
applicationAmendmentRequestEntity.setProtocol(protocolEntity);
- ApplicationAmendmentRequestEntity applicationAmendment = saveApplicationAmendmentRequestEntity(applicationAmendmentRequestEntity,null,VersionActionTypeEnum.INSERT);
+ ApplicationAmendmentRequestEntity applicationAmendment = saveApplicationAmendmentRequestEntity(applicationAmendmentRequestEntity, null, VersionActionTypeEnum.INSERT);
+ String evaluationStatusType = applicationEvaluationEntity.getStatus();
+ if (Boolean.FALSE.equals(evaluationStatusType.equals((ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue())))){
+ applicationEvaluationEntity.setStatus(ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue());
- //Set Status
- ApplicationEvaluationEntity oldApplicationEvaluationEntity = Utils.getClonedEntityForData(applicationEvaluationEntity);
+ //Set Status
applicationEvaluationEntity.setStatus(ApplicationEvaluationStatusTypeEnum.SOCCORSO.getValue());
applicationEvaluationRepository.save(applicationEvaluationEntity);
- /** This code is responsible for adding a version history log for the "Update Application Evaluation" operation. **/
- loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationEvaluationEntity).newData(applicationEvaluationEntity).build());
-
+ /** This code is responsible for adding a version history log for the "Update Application Evaluation" operation. **/
+ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationEvaluationEntity).newData(applicationEvaluationEntity).build());
+ }
ApplicationEntity applicationEntity = applicationService.validateApplication(applicationId);
ApplicationEntity oldApplicationEntity = Utils.getClonedEntityForData(applicationEntity);
- 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);
+ }
/** This code is responsible for adding a version history log for the "Update Application" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldApplicationEntity).newData(applicationEntity).build());
AssignedApplicationsEntity assignedApplicationsEntity = assignedApplicationsService.validateAssignedApplication(assignedApplicationId);
+ String assignedStatusType = assignedApplicationsEntity.getStatus();
AssignedApplicationsEntity oldAssignedApplication = Utils.getClonedEntityForData(assignedApplicationsEntity);
- assignedApplicationsEntity.setStatus(AssignedApplicationEnum.SOCCORSO.getValue());
- assignedApplicationsRepository.save(assignedApplicationsEntity);
+ if (Boolean.FALSE.equals(assignedStatusType.equals((AssignedApplicationEnum.SOCCORSO.getValue())))) {
+ assignedApplicationsEntity.setStatus(AssignedApplicationEnum.SOCCORSO.getValue());
+ assignedApplicationsRepository.save(assignedApplicationsEntity);
+
+ /** This code is responsible for adding a version history log for the "Update Assigned Application" operation. **/
+ loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAssignedApplication).newData(assignedApplicationsEntity).build());
+ }
- /** This code is responsible for adding a version history log for the "Update Assigned Application" operation. **/
- loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldAssignedApplication).newData(assignedApplicationsEntity).build());
return applicationAmendment;
}
@@ -278,132 +289,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);
- 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 forms = applicationFormRepository.findByApplicationId(applicationAmendmentRequestEntity.getApplicationId());
+ Map fieldIdToLabelMap = extractFieldIdToLabelMap(forms);
- LocalDateTime expirationDate = startDate.plus(expirationDays, ChronoUnit.DAYS);
- applicationAmendmentRequestResponse.setExpirationDate(expirationDate);
+ List amendmentFormFields = Utils.convertJsonStringToList(
+ applicationAmendmentRequestEntity.getFormFields(), AmendmentFormField.class);
+ Map formFieldEntityMap = getApplicationFormFieldEntityMap(applicationAmendmentRequestEntity, amendmentFormFields);
- 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() : "";
+ processFormFields(amendmentFormFields, fieldIdToLabelMap, formFieldEntityMap, response);
- 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