From 22eb51a041590378b29e8004d9b9fe9cad486250 Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 24 Mar 2026 12:51:31 +0530 Subject: [PATCH] Added NDG field in the application pagination API --- .../tendermanagement/dao/ApplicationDao.java | 9 +- .../entities/ApplicationView.java | 2 + .../model/response/ApplicationResponse.java | 2 + .../web/rest/api/ApplicationApi.java | 2 +- .../db/changelog/db.changelog-1.0.0.xml | 4 + .../update_application_view_23_03_2026.sql | 86 +++++++++++++++++++ 6 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/db/dump/update_application_view_23_03_2026.sql diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 7a351d08..044e78fc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -507,6 +507,7 @@ public class ApplicationDao { responseBean.setAmountRequested(applicationEntity.getAmountRequested()); responseBean.setDateAccepted(applicationEntity.getDateAccepted()); responseBean.setDateRejected(applicationEntity.getDateRejected()); + responseBean.setNdg(applicationEntity.getNdg()); return responseBean; } @@ -2004,8 +2005,13 @@ public class ApplicationDao { searchPattern ); + Predicate ndgPredicate = criteriaBuilder.like( + criteriaBuilder.upper(root.get(GepafinConstant.NDG_STRING)), + searchPattern + ); + // Combine them using a single `or()` - Predicate finalPredicate = criteriaBuilder.or(titlePredicate, callTitlePredicate,callNamePredicate,companyName); + Predicate finalPredicate = criteriaBuilder.or(titlePredicate, callTitlePredicate,callNamePredicate,companyName, ndgPredicate); predicates.add(finalPredicate); } @@ -2071,6 +2077,7 @@ public class ApplicationDao { responseBean.setAmountRequested(applicationView.getAmountRequested()); responseBean.setDateAccepted(applicationView.getDateAccepted()); responseBean.setDateRejected(applicationView.getDateRejected()); + responseBean.setNdg(applicationView.getNdg()); return responseBean; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationView.java b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationView.java index 54593c2e..2a2d11fa 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationView.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationView.java @@ -91,5 +91,7 @@ public class ApplicationView implements Serializable { @Column(name = "CREATED_DATE") private LocalDateTime createdDate; + @Column(name = "NDG") + private String ndg; } 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 559edcc7..abbfd164 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java @@ -52,4 +52,6 @@ public class ApplicationResponse{ private EvaluationVersionEnum evaluationVersion; + private String ndg; + } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java index 989088d5..964418bd 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java @@ -234,7 +234,7 @@ public interface ApplicationApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE)})) }) @GetMapping(value = "/call/{callId}/csv") - @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')|| hasRole('ROLE_INSTRUCTOR_MANAGER')") public ResponseEntity exportCsv( HttpServletRequest request, @Parameter(description = "The call id", required = true) @PathVariable(value = "callId", required = true) Long callId); diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index 8ce255b6..173a6bd4 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -3209,4 +3209,8 @@ + + + + diff --git a/src/main/resources/db/dump/update_application_view_23_03_2026.sql b/src/main/resources/db/dump/update_application_view_23_03_2026.sql new file mode 100644 index 00000000..3d2e97d8 --- /dev/null +++ b/src/main/resources/db/dump/update_application_view_23_03_2026.sql @@ -0,0 +1,86 @@ +DROP VIEW IF EXISTS gepafin_schema.application_view ; + + +CREATE OR REPLACE VIEW application_view AS + +SELECT + a.id, + a.status, + a.submission_date, + a.comments, + a.amount_requested, + a.amount_accepted, + a.date_accepted, + a.date_rejected, + a.is_deleted, + a.hub_id, + a.user_id, + a.ndg, + + a.evaluation_version AS evaluation_version, + a.updated_date AS modified_date, + a.created_date AS created_date, + + + + -- Call Details + a.call_id AS call_id, + cl.name AS call_title, + cl.end_date AS call_end_date, + cl.end_time AS call_end_time, + + -- Company Details + a.COMPANY_ID AS company_id, + c.company_name AS company_name, + + -- Protocol Details + p.protocol_number AS protocol_number, + + + -- Assigned User Details from ASSIGNED_APPLICATION and GEPAFIN_USER + COALESCE(aa.user_id, NULL) AS assigned_user_id, + COALESCE( + NULLIF( + TRIM(CONCAT( + COALESCE(u.first_name, ''), ' ', + COALESCE(u.last_name, '') + )), + '' + ), + '' + ) AS assigned_user_name, + +-- User with Company Details (From Application's User) + COALESCE(uwc.id, NULL) AS user_with_company_id + + +FROM gepafin_schema.APPLICATION a + +-- Join Call Entity +LEFT JOIN gepafin_schema.CALL cl + ON a.CALL_ID = cl.id + +-- Join Company Entity (Ensuring it is not deleted) +LEFT JOIN gepafin_schema.COMPANY c + ON a.COMPANY_ID = c.id + +-- Join Protocol Entity +LEFT JOIN gepafin_schema.PROTOCOL p + ON a.PROTOCOL_NUMBER = p.id + +-- Join Assigned Application Entity (Ensuring it is not deleted) +LEFT JOIN gepafin_schema.assigned_applications aa + ON a.id = aa.APPLICATION_ID + AND (aa.IS_DELETED IS FALSE OR aa.IS_DELETED IS NULL) + + -- Join User Entity (Get First & Last Name Combined) +LEFT JOIN gepafin_schema.GEPAFIN_USER u + ON aa.user_id = u.id + + -- Get User With Company ID (From Application's User & Company) + LEFT JOIN gepafin_schema.USER_WITH_COMPANY uwc + ON a.user_id = uwc.user_id + AND a.COMPANY_ID = uwc.company_id + AND uwc.is_deleted = FALSE -- Ensuring the user is active + +WHERE a.IS_DELETED IS FALSE OR a.IS_DELETED IS NULL; \ No newline at end of file