From e99926086c6d3a154e603e2657e83ec0d31aa081 Mon Sep 17 00:00:00 2001 From: harish Date: Mon, 28 Oct 2024 16:06:37 +0530 Subject: [PATCH] updated Code --- .../dao/ApplicationAmendmentRequestDao.java | 78 ++++++++++++------- ...ApplicationAmendmentRequestRepository.java | 9 +++ .../ApplicationFormFieldRepository.java | 1 + .../ApplicationAmendmentRequestService.java | 1 + ...pplicationAmendmentRequestServiceImpl.java | 6 ++ .../api/ApplicationAmendmentRequestApi.java | 13 ++++ ...ApplicationAmendmentRequestController.java | 8 ++ 7 files changed, 88 insertions(+), 28 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java index c728adc4..59cc5802 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationAmendmentRequestDao.java @@ -351,46 +351,68 @@ public class ApplicationAmendmentRequestDao { return response; } + private void updateApplicationFormFields(ApplicationAmendmentRequestEntity applicationAmendment, ApplicationFormFieldRequestBean updatedFormField) { - // Convert fieldValue (object) to a comma-separated list of document IDs - List documentIds = Arrays.asList(updatedFormField.getFieldValue().toString().split(",")); + List documentIds; + + // Check if fieldValue is an array + if (updatedFormField.getFieldValue() instanceof List) { + documentIds = ((List) updatedFormField.getFieldValue()).stream() + .map(Object::toString) + .collect(Collectors.toList()); + } else { + log.warn("Expected fieldValue as a list but got: {}", updatedFormField.getFieldValue()); + return; + } + List validDocumentIds = new ArrayList<>(); - for (String documentId : documentIds) { - documentId = documentId.trim(); // Remove any extra spaces - if (documentId.isEmpty()) { - log.warn("Encountered an empty document ID. Skipping."); - continue; - } - - try { - // Parse documentId to Long and validate it - Long documentIdLong = Long.parseLong(documentId); - DocumentEntity documentEntity = documentService.validateDocument(documentIdLong); - - if (documentEntity != null) { - validDocumentIds.add(documentId); - } else { - log.warn("Document with ID {} does not exist. Skipping this ID.", documentId); - } - } catch (NumberFormatException e) { - log.warn("Invalid document ID format: {}. Skipping this ID.", documentId); + 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); } } if (!validDocumentIds.isEmpty()) { - ApplicationFormFieldEntity formEntity = applicationFormFieldRepository.findByFieldId(updatedFormField.getFieldId()); + List applicationForms = applicationFormRepository.findByApplicationId(applicationAmendment.getApplicationId()); - if (formEntity != null) { - formEntity.setFieldValue(String.join(",", validDocumentIds)); - applicationFormFieldRepository.save(formEntity); - log.info("Updated field value for field ID {} with document IDs {}", updatedFormField.getFieldId(), String.join(",", validDocumentIds)); - } else { - log.warn("No ApplicationFormFieldEntity found with field ID {}. Skipping update.", updatedFormField.getFieldId()); + boolean fieldUpdated = false; + + for (ApplicationFormEntity applicationForm : applicationForms) { + Optional formFieldEntityOptional = applicationFormFieldRepository + .findByApplicationFormIdAndFieldId(applicationForm.getId(), updatedFormField.getFieldId()); + + if (formFieldEntityOptional.isPresent()) { + ApplicationFormFieldEntity formEntity = formFieldEntityOptional.get(); + formEntity.setFieldValue(String.join(",", validDocumentIds)); + applicationFormFieldRepository.save(formEntity); + log.info("Updated field value for application ID {} and field ID {} with document IDs {}", + applicationAmendment.getApplicationId(), updatedFormField.getFieldId(), String.join(",", validDocumentIds)); + fieldUpdated = true; + break; + } + } + + if (!fieldUpdated) { + log.warn("No ApplicationFormFieldEntity found for application ID {} and field ID {}. Skipping update.", + applicationAmendment.getApplicationId(), updatedFormField.getFieldId()); } } else { log.warn("No valid document IDs found for update. Skipping field ID {}", updatedFormField.getFieldId()); } } + + public List getAllAmendmentRequestByBeneficiaryId(Long beneficiaryId) { + + List entities = + applicationAmendmentRequestRepository.findByUserId(beneficiaryId); + + return entities.stream() + .map(this::convertEntityToResponse) + .collect(Collectors.toList()); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java index 35ba3282..608786e9 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationAmendmentRequestRepository.java @@ -3,9 +3,18 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.ApplicationAmendmentRequestEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.util.List; import java.util.Optional; public interface ApplicationAmendmentRequestRepository extends JpaRepository, JpaSpecificationExecutor { Optional findByIdAndIsDeletedFalse(Long id); + + @Query(value = "SELECT ar.* FROM application_amendment_request ar " + + "JOIN application app ON ar.application_id = app.id " + + "WHERE app.user_id = :userId AND ar.is_deleted = false", + nativeQuery = true) + List findByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormFieldRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormFieldRepository.java index f8736d1c..b989e2dd 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormFieldRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationFormFieldRepository.java @@ -37,4 +37,5 @@ public interface ApplicationFormFieldRepository extends JpaRepository findByApplicationFormIdAndFieldId(Long id, String fieldId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java index cce56d12..ed4dc5b1 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationAmendmentRequestService.java @@ -16,5 +16,6 @@ public interface ApplicationAmendmentRequestService { List getAllApplicationAmendmentRequest(HttpServletRequest request,Long userId); ApplicationAmendmentRequestResponse updateApplicationAmendment(HttpServletRequest request, Long id, ApplicationAmendmentRequestBean applicationAmendmentRequestBean); ApplicationAmendmentRequestEntity validateApplicationAmendmentRequest(Long applicationAmendmentId); + List getAllAmendmentRequestByBeneficiaryId(HttpServletRequest request,Long beneficiaryId); } 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 34edbb89..23af105f 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationAmendmentRequestServiceImpl.java @@ -63,5 +63,11 @@ public class ApplicationAmendmentRequestServiceImpl implements ApplicationAmendm return applicationAmendmentRequestDao.validateApplicationAmendmentRequest(applicationAmendmentId); } + @Override + public List getAllAmendmentRequestByBeneficiaryId(HttpServletRequest request, Long beneficiaryId) { + return applicationAmendmentRequestDao.getAllAmendmentRequestByBeneficiaryId(beneficiaryId); + } + + } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationAmendmentRequestApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationAmendmentRequestApi.java index e3434b3c..4cd537ae 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationAmendmentRequestApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationAmendmentRequestApi.java @@ -100,4 +100,17 @@ public interface ApplicationAmendmentRequestApi { @Parameter(description = "The Application Amendment id", required = true) @PathVariable("id") Long id, @Parameter(description = "Assigned Application request object", required = true) @Valid @RequestBody ApplicationAmendmentRequestBean applicationAmendmentRequestBean); + @Operation(summary = "Api to get all applications amendment request by beneficary user Id", + responses = { + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.NOTFOUND_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })), + @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { + @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) + @GetMapping(value = "/beneficiary/{id}", produces = "application/json") + ResponseEntity>> getAllAmendmentRequestByBeneficiaryId(HttpServletRequest request, + @Parameter(description = "Id", required = false) @PathVariable(value = "id",required = false) Long beneficiaryId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java index 59e42a1b..635a7244 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationAmendmentRequestController.java @@ -71,4 +71,12 @@ public class ApplicationAmendmentRequestController implements ApplicationAmendme return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(updateApplicationAmendment, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_AMENDMENT_UPDATE_SUCCESSFULLY_MSG))); } + + @Override + public ResponseEntity>> getAllAmendmentRequestByBeneficiaryId(HttpServletRequest request, Long beneficiaryId) { + log.info("Get All Application Amendment Request By Beneficiary ID"); + List applicationAmendmentRequestResponseList = applicationAmendmentRequestService.getAllAmendmentRequestByBeneficiaryId(request, beneficiaryId); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(applicationAmendmentRequestResponseList, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_AMENDMENT_SUCCESS_MSG))); + } }