From 4ebb7705ff765063d0787d7730e4f3c85d9beea0 Mon Sep 17 00:00:00 2001 From: harish Date: Mon, 4 Nov 2024 16:56:21 +0530 Subject: [PATCH] Rename 'updatedFormFields' to 'applicationFormFields' in request and also fix the bug --- .../dao/ApplicationAmendmentRequestDao.java | 74 ++++++++++++++----- .../ApplicationAmendmentRequestBean.java | 2 +- ...pplicationAmendmentRequestServiceImpl.java | 3 +- 3 files changed, 57 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index b5d36dac..921990a7 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -21,6 +21,8 @@ import net.gepafin.tendermanagement.model.response.ApplicationAmendmentRequestRe import net.gepafin.tendermanagement.repositories.*; import net.gepafin.tendermanagement.service.*; import net.gepafin.tendermanagement.util.DateTimeUtil; +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.springframework.beans.factory.annotation.Autowired; @@ -28,7 +30,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; -import java.time.ZoneId; import java.time.temporal.ChronoUnit; @@ -84,6 +85,9 @@ public class ApplicationAmendmentRequestDao { @Autowired private AssignedApplicationsRepository assignedApplicationsRepository; + @Autowired + private Validator validator; + public ApplicationAmendmentRequestResponse getApplicationDataForAmendment(HttpServletRequest request, Long applicationEvaluationId) { log.info("Fetching the application data for the Amendment process {}", applicationEvaluationId); ApplicationEvaluationEntity applicationEvaluationEntity = applicationEvaluationService.validateApplicationEvaluation(applicationEvaluationId); @@ -326,7 +330,14 @@ public class ApplicationAmendmentRequestDao { return response; } - public List getAllApplicationAmendmentRequest(Long userId) { + public List getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId) { + UserEntity user = validator.validateUser(request); + if(validator.checkIsPreInstructor() && userId == null) { + throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.USER_ID_NOT_NULL_MSG)); + } + if(userId != null) { + validator.validatePreInstructor(request, userId); + } Specification spec = search(userId); List applicationAmendmentRequestEntities = applicationAmendmentRequestRepository.findAll(spec); @@ -357,8 +368,8 @@ public class ApplicationAmendmentRequestDao { ApplicationAmendmentRequestEntity existingApplicationAmendment = validateApplicationAmendmentRequest(id); setIfUpdated(existingApplicationAmendment::getNote, existingApplicationAmendment::setNote, updateRequest.getNote()); - if (updateRequest.getUpdatedFormFields() != null) { - updateApplicationFormFields(existingApplicationAmendment, updateRequest.getUpdatedFormFields()); + if (updateRequest.getApplicationFormFields() != null) { + updateApplicationFormFields(existingApplicationAmendment, updateRequest.getApplicationFormFields()); } existingApplicationAmendment.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); @@ -368,27 +379,52 @@ public class ApplicationAmendmentRequestDao { return response; } - private void updateApplicationFormFields(ApplicationAmendmentRequestEntity applicationAmendment, ApplicationFormFieldRequestBean updatedFormField) { + if (updatedFormField.getFieldValue() == null || "".equals(updatedFormField.getFieldValue().toString().trim())) { + List applicationForms = applicationFormRepository.findByApplicationId(applicationAmendment.getApplicationId()); + + boolean fieldUpdated = false; + + for (ApplicationFormEntity applicationForm : applicationForms) { + Optional formFieldEntityOptional = applicationFormFieldRepository + .findByApplicationFormIdAndFieldId(applicationForm.getId(), updatedFormField.getFieldId()); + + if (formFieldEntityOptional.isPresent()) { + ApplicationFormFieldEntity formEntity = formFieldEntityOptional.get(); + formEntity.setFieldValue(null); // Set field value to null + applicationFormFieldRepository.save(formEntity); + log.info("Set field value to null for application ID {} and field ID {}", applicationAmendment.getApplicationId(), updatedFormField.getFieldId()); + fieldUpdated = true; + break; + } + } + + if (!fieldUpdated) { + throw new CustomValidationException(Status.NOT_FOUND, "No ApplicationFormField found for application ID " + applicationAmendment.getApplicationId() + " and field ID " + updatedFormField.getFieldId()); + } + return; + } + List documentIds; - // Check if fieldValue is an array - if (updatedFormField.getFieldValue() instanceof List) { - documentIds = ((List) updatedFormField.getFieldValue()).stream() - .map(Object::toString) - .collect(Collectors.toList()); + if (updatedFormField.getFieldValue() instanceof String && updatedFormField.getFieldValue() != null) { + documentIds = Arrays.asList(((String) updatedFormField.getFieldValue()).split(",")); } else { - log.warn("Expected fieldValue as a list but got: {}", updatedFormField.getFieldValue()); + log.warn("Expected fieldValue as a comma-separated String but got: {}", updatedFormField.getFieldValue()); return; } List validDocumentIds = new ArrayList<>(); for (String documentId : documentIds) { - DocumentEntity documentEntity = documentService.validateDocument(Long.parseLong(documentId)); - if (documentEntity != null) { - validDocumentIds.add(documentId); - } else { - log.warn("Document with ID {} does not exist. Skipping this ID.", documentId); + try { + DocumentEntity documentEntity = documentService.validateDocument(Long.parseLong(documentId.trim())); + if (documentEntity != null) { + validDocumentIds.add(documentId.trim()); + } else { + log.warn("Document with ID {} does not exist. Skipping this ID.", documentId); + } + } catch (NumberFormatException e) { + log.error("Invalid document ID format: {}. Error: {}", documentId, e.getMessage()); } } @@ -413,8 +449,7 @@ public class ApplicationAmendmentRequestDao { } if (!fieldUpdated) { - log.warn("No ApplicationFormFieldEntity found for application ID {} and field ID {}. Skipping update.", - applicationAmendment.getApplicationId(), updatedFormField.getFieldId()); + throw new CustomValidationException(Status.NOT_FOUND,"No ApplicationFormField found for application ID {} and field ID {}. Skipping update."); } } else { log.warn("No valid document IDs found for update. Skipping field ID {}", updatedFormField.getFieldId()); @@ -422,8 +457,9 @@ public class ApplicationAmendmentRequestDao { } - public List getAllAmendmentRequestByBeneficiaryId(Long beneficiaryId) { + public List getAllAmendmentRequestByBeneficiaryId(Long beneficiaryId) { + UserEntity userEntity = userService.validateUser(beneficiaryId); List entities = applicationAmendmentRequestRepository.findByUserId(beneficiaryId); diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationAmendmentRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationAmendmentRequestBean.java index b845fe0e..c3c5aeb5 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationAmendmentRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationAmendmentRequestBean.java @@ -5,5 +5,5 @@ import lombok.Data; @Data public class ApplicationAmendmentRequestBean { private String note; - private ApplicationFormFieldRequestBean updatedFormFields; + private ApplicationFormFieldRequestBean applicationFormFields; } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java index d8a93d36..d00f244a 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java @@ -5,7 +5,6 @@ import net.gepafin.tendermanagement.dao.ApplicationAmendmentRequestDao; import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.ApplicationAmendmentRequestEnum; -import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequest; import net.gepafin.tendermanagement.model.request.ApplicationAmendmentRequestBean; import net.gepafin.tendermanagement.model.request.CloseAmendmentRequest; @@ -50,7 +49,7 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm @Override public List getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId) { - return applicationAmendmentRequestDao.getAllApplicationAmendmentRequest(userId); + return applicationAmendmentRequestDao.getAllApplicationAmendmentRequest(request,userId); } @Override