From 36d74f1c84521f3114cba2bc1981c8b339d6dd26 Mon Sep 17 00:00:00 2001 From: Piyush Date: Tue, 25 Feb 2025 14:40:41 +0530 Subject: [PATCH 1/8] Done ticket GEPAFINBE-173 --- .../constants/GepafinConstant.java | 19 +++- .../tendermanagement/dao/ApplicationDao.java | 100 ++++++++++++++++-- .../ApplicationPageableRequestBean.java | 3 + .../model/request/FilterCriteria.java | 10 ++ 4 files changed, 125 insertions(+), 7 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 8e469734..1c31a2c7 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -426,7 +426,24 @@ public class GepafinConstant { public static final String APPOINTMENT_CANNOT_BE_CREATED = "appointment.cannot.be.created"; public static final String APPOINTMENT_NOT_CREATED = "appointment.not.created"; -} + public static final String CONTAINS = "contains"; + public static final String EQUALS = "equals"; + public static final String STARTS_WITH = "starts_with"; + public static final String ENDS_WITH = "ends_with"; + public static final String CALL_TITLE = "callTitle"; + public static final String CALL_ID="callId"; + public static final String CALL_END_DATE="callEndDate"; + public static final String END_DATE="endDate"; + public static final String PROTOCOL="protocol"; + public static final String PROTOCOL_NUMBER="protocolNumber"; + public static final String MODIFIED_DATE="modifiedDate"; + public static final String CALL_END_TIME="callEndTime"; + public static final String END_TIME="endTime"; + public static final String UPDATED_DATE="updatedDate"; + public static final String BEFORE="before"; + public static final String AFTER="after"; + + } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index a8e1ca8d..d749897b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -1,7 +1,6 @@ package net.gepafin.tendermanagement.dao; -import jakarta.persistence.criteria.CriteriaBuilder; -import jakarta.persistence.criteria.Root; +import jakarta.persistence.criteria.*; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.constants.GepafinConstant; @@ -42,7 +41,6 @@ import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import jakarta.persistence.criteria.Predicate; import jakarta.servlet.http.HttpServletRequest; import java.io.ByteArrayOutputStream; @@ -55,6 +53,7 @@ import java.text.ParseException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -1444,7 +1443,7 @@ public class ApplicationDao { Integer pageLimit = null; UserWithCompanyEntity userWithCompany= userWithCompanyRepository.findByUserIdAndCompanyIdAndIsDeletedFalse(userEntity.getId(), companyId).orElse(null); - + Long userWithCompanyId = userWithCompany!=null?userWithCompany.getId():null; if (applicationPageableRequestBean.getGlobalFilters() != null) { pageNo = applicationPageableRequestBean.getGlobalFilters().getPage(); pageLimit = applicationPageableRequestBean.getGlobalFilters().getLimit(); @@ -1455,7 +1454,7 @@ public class ApplicationDao { if (pageNo == null || pageNo <= 0) { pageNo = GepafinConstant.DEFAULT_PAGE; } - Specification spec = search(callId,companyId, userWithCompany.getId(), applicationPageableRequestBean, userEntity); + Specification spec = search(callId,companyId, userWithCompanyId, applicationPageableRequestBean, userEntity); Page entityPage = applicationRepository.findAll(spec, PageRequest.of(pageNo - 1, pageLimit)); // Prepare the response @@ -1510,11 +1509,15 @@ public class ApplicationDao { Integer year = null; String search = null; Integer daysRange = null; + Map filters = new HashMap<>(); if (applicationPageableRequestBean.getGlobalFilters() != null) { year = applicationPageableRequestBean.getGlobalFilters().getYear(); search = applicationPageableRequestBean.getGlobalFilters().getSearch(); daysRange = applicationPageableRequestBean.getDaysRange(); } + if (applicationPageableRequestBean.getFilters() != null) { + filters = applicationPageableRequestBean.getFilters(); + } List predicates = new ArrayList<>(); Boolean isBeneficiary = validator.checkIsBeneficiary(); @@ -1567,13 +1570,98 @@ public class ApplicationDao { LocalDateTime pastDate = today.minusDays(daysRange); predicates.add(criteriaBuilder.between(root.get(GepafinConstant.CREATED_DATE), pastDate, today)); } - predicates.add(criteriaBuilder.isFalse(root.get(GepafinConstant.IS_DELETED))); + applyFilters(root, criteriaBuilder, predicates, filters); + + predicates.add(criteriaBuilder.isFalse(root.get(GepafinConstant.IS_DELETED))); predicates.add(criteriaBuilder.equal(root.get(GepafinConstant.HUB_ID), userEntity.getHub().getId())); return predicates; } + private void applyFilters(Root root, CriteriaBuilder criteriaBuilder, List predicates, Map filters) { + if (Boolean.FALSE.equals(filters.isEmpty())) { + for (Map.Entry entry : filters.entrySet()) { + String fieldName = entry.getKey(); + FilterCriteria filterCriteria = entry.getValue(); + Object value = filterCriteria.getValue(); + String matchMode = filterCriteria.getMatchMode(); + + if (value != null && matchMode != null) { + Path fieldPath = getFieldPath(root, fieldName); + if (fieldPath != null) { + applyStringFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); + applyNumberFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); + // applyDateFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); // Date filter is commented + } + } + } + } + } + + private void applyStringFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { + if (value instanceof String) { + String valueStr = (String) value; + if (fieldPath.getJavaType().equals(String.class)) { + switch (matchMode.toLowerCase()) { + case GepafinConstant.CONTAINS -> + predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase() + "%")); + case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, valueStr)); + case GepafinConstant.STARTS_WITH -> + predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), valueStr.toLowerCase() + "%")); + case GepafinConstant.ENDS_WITH -> + predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase())); + } + } + } + } + + private void applyNumberFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { + if (Number.class.isAssignableFrom(fieldPath.getJavaType())) { + Number numberValue = null; + if (value instanceof Number) { + numberValue = (Number) value; + } + switch (matchMode.toLowerCase()) { + case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue)); + } + } + } + +/* +private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { + if (fieldPath.getJavaType().equals(LocalDateTime.class)) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + LocalDateTime dateValue = LocalDateTime.parse(value.toString(), formatter); + + Expression fieldAsString = criteriaBuilder.function("TO_CHAR", String.class, fieldPath, criteriaBuilder.literal("YYYY-MM-DD HH24:MI:SS.MS")); + + switch (matchMode.toLowerCase()) { + case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString())); + case GepafinConstant.BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue)); + case GepafinConstant.AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue)); + } + } +} +*/ + + private Path getFieldPath(Root root, String fieldName) { + try { + return switch (fieldName) { + case GepafinConstant.CALL_ID -> root.get(GepafinConstant.CALL).get(GepafinConstant.ID); + case GepafinConstant.CALL_TITLE -> root.get(GepafinConstant.CALL).get(GepafinConstant.NAME); + case GepafinConstant.CALL_END_DATE -> root.get(GepafinConstant.CALL).get(GepafinConstant.END_DATE); + case GepafinConstant.CALL_END_TIME -> root.get(GepafinConstant.CALL).get(GepafinConstant.END_TIME); + case GepafinConstant.MODIFIED_DATE -> root.get(GepafinConstant.CALL).get(GepafinConstant.UPDATED_DATE); + case GepafinConstant.PROTOCOL_NUMBER-> root.get(GepafinConstant.PROTOCOL).get(GepafinConstant.PROTOCOL_NUMBER); + default -> root.get(fieldName); + }; + } catch (IllegalArgumentException e) { + return null; + } + } + + public void checkCallEndDate(CallEntity call) { LocalDateTime now = DateTimeUtil.DateServerToUTC(LocalDateTime.now()); diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationPageableRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationPageableRequestBean.java index 153164d6..d6468973 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationPageableRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationPageableRequestBean.java @@ -4,6 +4,7 @@ import lombok.Data; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import java.util.List; +import java.util.Map; @Data public class ApplicationPageableRequestBean { @@ -13,4 +14,6 @@ public class ApplicationPageableRequestBean { private Integer daysRange; private List status; + + private Map filters; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java b/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java new file mode 100644 index 00000000..df7eaf69 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java @@ -0,0 +1,10 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +@Data +public class FilterCriteria { + + private Object value; + private String matchMode; +} From 10afb623a730bb9a5193e5ec0d669bc0ac7f1339 Mon Sep 17 00:00:00 2001 From: Piyush Date: Tue, 25 Feb 2025 16:08:01 +0530 Subject: [PATCH 2/8] Updated code --- .../constants/GepafinConstant.java | 8 ++--- .../tendermanagement/dao/ApplicationDao.java | 34 +++++++++++-------- .../tendermanagement/enums/MatchModeEnum.java | 25 ++++++++++++++ .../model/request/FilterCriteria.java | 3 +- 4 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 1c31a2c7..efd6bcda 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -426,10 +426,7 @@ public class GepafinConstant { public static final String APPOINTMENT_CANNOT_BE_CREATED = "appointment.cannot.be.created"; public static final String APPOINTMENT_NOT_CREATED = "appointment.not.created"; - public static final String CONTAINS = "contains"; - public static final String EQUALS = "equals"; - public static final String STARTS_WITH = "starts_with"; - public static final String ENDS_WITH = "ends_with"; + public static final String CALL_TITLE = "callTitle"; public static final String CALL_ID="callId"; public static final String CALL_END_DATE="callEndDate"; @@ -440,8 +437,7 @@ public class GepafinConstant { public static final String CALL_END_TIME="callEndTime"; public static final String END_TIME="endTime"; public static final String UPDATED_DATE="updatedDate"; - public static final String BEFORE="before"; - public static final String AFTER="after"; + } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index d749897b..205ff89a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -1585,7 +1585,7 @@ public class ApplicationDao { String fieldName = entry.getKey(); FilterCriteria filterCriteria = entry.getValue(); Object value = filterCriteria.getValue(); - String matchMode = filterCriteria.getMatchMode(); + MatchModeEnum matchMode = filterCriteria.getMatchMode(); if (value != null && matchMode != null) { Path fieldPath = getFieldPath(root, fieldName); @@ -1599,47 +1599,51 @@ public class ApplicationDao { } } - private void applyStringFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { + private void applyStringFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode) { if (value instanceof String) { String valueStr = (String) value; if (fieldPath.getJavaType().equals(String.class)) { - switch (matchMode.toLowerCase()) { - case GepafinConstant.CONTAINS -> + MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); + switch (mode) { + case CONTAINS -> predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase() + "%")); - case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, valueStr)); - case GepafinConstant.STARTS_WITH -> + case EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, valueStr)); + case STARTSWITH -> predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), valueStr.toLowerCase() + "%")); - case GepafinConstant.ENDS_WITH -> + case ENDSWITH -> predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase())); } } } } - private void applyNumberFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { + private void applyNumberFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode) { if (Number.class.isAssignableFrom(fieldPath.getJavaType())) { Number numberValue = null; if (value instanceof Number) { numberValue = (Number) value; } - switch (matchMode.toLowerCase()) { - case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue)); + MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); + switch (mode) { + case EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue)); } } } /* -private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, String matchMode) { +private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode) { if (fieldPath.getJavaType().equals(LocalDateTime.class)) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); LocalDateTime dateValue = LocalDateTime.parse(value.toString(), formatter); Expression fieldAsString = criteriaBuilder.function("TO_CHAR", String.class, fieldPath, criteriaBuilder.literal("YYYY-MM-DD HH24:MI:SS.MS")); - switch (matchMode.toLowerCase()) { - case GepafinConstant.EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString())); - case GepafinConstant.BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue)); - case GepafinConstant.AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue)); + MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); + switch (mode) { + + case EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString())); + case BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue)); + case AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue)); } } } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java new file mode 100644 index 00000000..dc2383c0 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java @@ -0,0 +1,25 @@ +package net.gepafin.tendermanagement.enums; + +import com.fasterxml.jackson.annotation.JsonValue; + + +public enum MatchModeEnum { + STARTSWITH("STARTSWITH"), + ENDSWITH("ENDSWITH"), + CONTAINS("CONTAINS"), + EQUALS("EQUALS"), + BEFORE("BEFORE"), + AFTER("AFTER"), + EXPIRED("EXPIRED"); + + private String value; + + MatchModeEnum(String value) { + this.value = value; + } + + @JsonValue + public String getValue() { + return value; + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java b/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java index df7eaf69..25690086 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FilterCriteria.java @@ -1,10 +1,11 @@ package net.gepafin.tendermanagement.model.request; import lombok.Data; +import net.gepafin.tendermanagement.enums.MatchModeEnum; @Data public class FilterCriteria { private Object value; - private String matchMode; + private MatchModeEnum matchMode; } From 73e5eca44c6201ef5a2e6c2179844f7ba1e6e347 Mon Sep 17 00:00:00 2001 From: Piyush Date: Tue, 25 Feb 2025 16:18:43 +0530 Subject: [PATCH 3/8] Updated code --- .../java/net/gepafin/tendermanagement/enums/MatchModeEnum.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java index dc2383c0..836eb592 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java @@ -9,8 +9,7 @@ public enum MatchModeEnum { CONTAINS("CONTAINS"), EQUALS("EQUALS"), BEFORE("BEFORE"), - AFTER("AFTER"), - EXPIRED("EXPIRED"); + AFTER("AFTER"); private String value; From a8beb632485e365c99693e523ec407b3366e5bf3 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 26 Feb 2025 16:37:44 +0530 Subject: [PATCH 4/8] Added get all document category api --- .../dao/DocumentCategoryDao.java | 9 +++++++++ .../enums/UserActionContextEnum.java | 1 + .../service/DocumentCategoryService.java | 3 +++ .../impl/DocumentCategoryServiceImpl.java | 8 ++++++++ .../web/rest/api/DocumentCategoryApi.java | 14 ++++++++++++++ .../impl/DocumentCategoryApiController.java | 18 ++++++++++++++++++ 6 files changed, 53 insertions(+) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DocumentCategoryDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DocumentCategoryDao.java index 5dc799fb..1b17e888 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DocumentCategoryDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DocumentCategoryDao.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.dao; import jakarta.servlet.http.HttpServletRequest; +import jdk.jfr.Category; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.DocumentCategoryEntity; @@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; +import java.util.stream.Collectors; import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; @@ -108,4 +110,11 @@ public class DocumentCategoryDao { return entity; } + + public List getAllDocumentCategory(){ + List documentCategoryEntityList = categoryRepository.findAll(); + return documentCategoryEntityList.stream() + .map(this::convertToResponseBean) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 1029d9b1..64a43904 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -207,6 +207,7 @@ public enum UserActionContextEnum { DELETE_DOCUMENT_CATEGORY("DELETE_DOCUMENT_CATEGORY"), UPDATE_DOCUMENT_CATEGORY("UPDATE_DOCUMENT_CATEGORY"), COMPANY_DOCUMENT_EXPIRATION_SCHEDULER("COMPANY_DOCUMENT_EXPIRATION_SCHEDULER"), + GET_ALL_DOCUMENT_CATEGORY("GET_ALL_DOCUMENT_CATEGORY"), GET_ALL_ASSIGNED_APPLICATION_BY_PAGINATION("GET_ALL_ASSIGNED_APPLICATION_BY_PAGINATION"), GET_ALL_APPLICATION_AMENDMENT_BY_PAGINATION("GET_ALL_APPLICATION_AMENDMENT_BY_PAGINATION"), diff --git a/src/main/java/net/gepafin/tendermanagement/service/DocumentCategoryService.java b/src/main/java/net/gepafin/tendermanagement/service/DocumentCategoryService.java index f742c5f2..1b936239 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/DocumentCategoryService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/DocumentCategoryService.java @@ -4,10 +4,13 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.model.request.DocumentCategoryRequest; import net.gepafin.tendermanagement.model.response.DocumentCategoryResponse; +import java.util.List; + public interface DocumentCategoryService { DocumentCategoryResponse createDocumentCategory(HttpServletRequest request, DocumentCategoryRequest categoryRequest); DocumentCategoryResponse getDocumentCategoryById(HttpServletRequest request, Long id); void deleteDocumentCategory(HttpServletRequest request,Long id); DocumentCategoryResponse updateDocumentCategory(HttpServletRequest request, Long id, DocumentCategoryRequest categoryRequest); + List getAllDocumentCategory(HttpServletRequest request); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/DocumentCategoryServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/DocumentCategoryServiceImpl.java index bbb757e7..8242263b 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/DocumentCategoryServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/DocumentCategoryServiceImpl.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service public class DocumentCategoryServiceImpl implements DocumentCategoryService { @@ -47,5 +49,11 @@ public class DocumentCategoryServiceImpl implements DocumentCategoryService { return categoryDao.updateDocumentCategory(request,id,categoryRequest); } + @Override + public List getAllDocumentCategory(HttpServletRequest request) { + validator.validateUser(request); + return categoryDao.getAllDocumentCategory(); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentCategoryApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentCategoryApi.java index 11d571bb..9d302a15 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentCategoryApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentCategoryApi.java @@ -16,6 +16,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Validated public interface DocumentCategoryApi { @@ -79,4 +81,16 @@ public interface DocumentCategoryApi { @PathVariable("id") Long id, @Parameter(description = "Category request object", required = true) @Valid @RequestBody DocumentCategoryRequest categoryRequest); + + @Operation(summary = "Api to get all document category", + 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 = "", produces = "application/json") + ResponseEntity>> getAllDocumentCategory(HttpServletRequest request); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DocumentCategoryApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DocumentCategoryApiController.java index f1e99706..9a81d672 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DocumentCategoryApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/DocumentCategoryApiController.java @@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.web.rest.api.impl; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; +import lombok.extern.log4j.Log4j2; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.enums.UserActionContextEnum; @@ -20,8 +21,11 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("${openapi.gepafin.base-path:/v1/documentCategory}") +@Log4j2 public class DocumentCategoryApiController implements DocumentCategoryApi { @Autowired @@ -79,4 +83,18 @@ public class DocumentCategoryApiController implements DocumentCategoryApi { return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(categoryResponse, Status.SUCCESS, Translator.toLocale(GepafinConstant.DOCUMENT_CATEGORY_UPDATE_SUCCESS))); } + + @Override + public ResponseEntity>> getAllDocumentCategory(HttpServletRequest request) { + log.info("Get All Document Category"); + + /** This code is responsible for creating user action logs for the "get all document category" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW) + .actionContext(UserActionContextEnum.GET_ALL_DOCUMENT_CATEGORY).build()); + + List documentCategoryResponseList = categoryService.getAllDocumentCategory(request); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(documentCategoryResponseList, Status.SUCCESS, Translator.toLocale(GepafinConstant.DOCUMENT_CATEGORY_GET_SUCCESS))); + + } } From 28137422db9bfe4fd42ae00e4fa6ca6701c8028f Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 27 Feb 2025 11:50:14 +0530 Subject: [PATCH 5/8] Added date filter in pagination endpoint --- .../tendermanagement/dao/ApplicationDao.java | 41 +++++++++++-------- .../tendermanagement/enums/MatchModeEnum.java | 27 +++++++++--- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 205ff89a..63e399b0 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -2,7 +2,6 @@ package net.gepafin.tendermanagement.dao; import jakarta.persistence.criteria.*; import net.gepafin.tendermanagement.config.Translator; -import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.entities.SystemEmailTemplatesEntity.SystemEmailTemplatesEntityTypeEnum; @@ -47,6 +46,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; +import java.sql.Timestamp; import java.text.MessageFormat; import java.text.NumberFormat; import java.text.ParseException; @@ -54,6 +54,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -63,6 +64,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import static org.apache.commons.lang3.StringUtils.isEmpty; +import static org.hibernate.validator.internal.engine.messageinterpolation.el.RootResolver.FORMATTER; @Component public class ApplicationDao { @@ -1592,7 +1594,7 @@ public class ApplicationDao { if (fieldPath != null) { applyStringFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); applyNumberFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); - // applyDateFilter(fieldPath, criteriaBuilder, predicates, value, matchMode); // Date filter is commented + applyDateFilter(fieldPath, criteriaBuilder, predicates, value, matchMode,root); } } } @@ -1603,7 +1605,7 @@ public class ApplicationDao { if (value instanceof String) { String valueStr = (String) value; if (fieldPath.getJavaType().equals(String.class)) { - MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); + MatchModeEnum mode = MatchModeEnum.fromObject(matchMode.getValue()); switch (mode) { case CONTAINS -> predicates.add(criteriaBuilder.like(criteriaBuilder.lower(fieldPath.as(String.class)), "%" + valueStr.toLowerCase() + "%")); @@ -1623,31 +1625,36 @@ public class ApplicationDao { if (value instanceof Number) { numberValue = (Number) value; } - MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); + MatchModeEnum mode = MatchModeEnum.fromObject(matchMode.getValue()); switch (mode) { case EQUALS -> predicates.add(criteriaBuilder.equal(fieldPath, numberValue)); } } } -/* -private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode) { - if (fieldPath.getJavaType().equals(LocalDateTime.class)) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - LocalDateTime dateValue = LocalDateTime.parse(value.toString(), formatter); - Expression fieldAsString = criteriaBuilder.function("TO_CHAR", String.class, fieldPath, criteriaBuilder.literal("YYYY-MM-DD HH24:MI:SS.MS")); + public static LocalDateTime parseStringToLocalDateTime(String timestampStr) { + // Use ISO_LOCAL_DATE_TIME to parse the input string + return LocalDateTime.parse(timestampStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } - MatchModeEnum mode = MatchModeEnum.valueOf(matchMode.getValue()); - switch (mode) { + private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode, Root root) { + if (fieldPath.getJavaType().equals(LocalDateTime.class)) { + LocalDateTime testDateTime = parseStringToLocalDateTime(value.toString()); + MatchModeEnum mode = MatchModeEnum.fromObject(matchMode.getValue()); - case EQUALS -> predicates.add(criteriaBuilder.equal(fieldAsString, value.toString())); - case BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(LocalDateTime.class), dateValue)); - case AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(LocalDateTime.class), dateValue)); + + switch (mode) { +// case DATEIS -> predicates.add(criteriaBuilder.equal(fieldPath.as(Timestamp.class), Timestamp.valueOf(testDateTime))); + case DATEISNOT -> predicates.add(criteriaBuilder.notEqual(fieldPath.as(Timestamp.class), Timestamp.valueOf(testDateTime))); + case BEFORE -> predicates.add(criteriaBuilder.lessThan(fieldPath.as(Timestamp.class), Timestamp.valueOf(testDateTime))); + case AFTER -> predicates.add(criteriaBuilder.greaterThan(fieldPath.as(Timestamp.class), Timestamp.valueOf(testDateTime))); + } } } -} -*/ + + + private Path getFieldPath(Root root, String fieldName) { try { diff --git a/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java index 836eb592..f3ee252c 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/MatchModeEnum.java @@ -4,18 +4,33 @@ import com.fasterxml.jackson.annotation.JsonValue; public enum MatchModeEnum { - STARTSWITH("STARTSWITH"), - ENDSWITH("ENDSWITH"), - CONTAINS("CONTAINS"), - EQUALS("EQUALS"), - BEFORE("BEFORE"), - AFTER("AFTER"); + STARTSWITH("Starts with"), + ENDSWITH("Ends with"), + CONTAINS("Contains"), + EQUALS("Equals"), + DATEIS("Date is"), + DATEISNOT("Date is not"), + BEFORE("Date is before"), + AFTER("Date is after"); private String value; MatchModeEnum(String value) { this.value = value; } + public static MatchModeEnum fromObject(Object value) { + if (value instanceof String) { + String strValue = ((String) value).trim(); + for (MatchModeEnum mode : MatchModeEnum.values()) { + if (mode.getValue().equalsIgnoreCase(strValue)) { + return mode; + } + } + } + throw new IllegalArgumentException("Invalid MatchModeEnum: " + value); + } + + @JsonValue public String getValue() { From bc2a546012da148c52e7de26539ad816b3632753 Mon Sep 17 00:00:00 2001 From: Piyush Date: Thu, 27 Feb 2025 12:17:47 +0530 Subject: [PATCH 6/8] Updated code --- .../net/gepafin/tendermanagement/dao/ApplicationDao.java | 7 ++----- .../net/gepafin/tendermanagement/util/DateTimeUtil.java | 4 ++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index 390fbd89..92ffc2d3 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -1649,14 +1649,11 @@ public class ApplicationDao { } - public static LocalDateTime parseStringToLocalDateTime(String timestampStr) { - // Use ISO_LOCAL_DATE_TIME to parse the input string - return LocalDateTime.parse(timestampStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME); - } + private void applyDateFilter(Path fieldPath, CriteriaBuilder criteriaBuilder, List predicates, Object value, MatchModeEnum matchMode, Root root) { if (fieldPath.getJavaType().equals(LocalDateTime.class)) { - LocalDateTime testDateTime = parseStringToLocalDateTime(value.toString()); + LocalDateTime testDateTime = DateTimeUtil.parseStringToLocalDateTime(value.toString()); MatchModeEnum mode = MatchModeEnum.fromObject(matchMode.getValue()); diff --git a/src/main/java/net/gepafin/tendermanagement/util/DateTimeUtil.java b/src/main/java/net/gepafin/tendermanagement/util/DateTimeUtil.java index ec7fe7d9..1a68818f 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/DateTimeUtil.java +++ b/src/main/java/net/gepafin/tendermanagement/util/DateTimeUtil.java @@ -92,6 +92,10 @@ public class DateTimeUtil { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); return LocalDateTime.parse(dateTimeStr, formatter); } + public static LocalDateTime parseStringToLocalDateTime(String timestampStr) { + // Use ISO_LOCAL_DATE_TIME to parse the input string + return LocalDateTime.parse(timestampStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME); + } public static String parseLocalTimeToString(LocalTime time, String format) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); From 274609af29b4e8fc39e6ab901e31b6e22c101cf7 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 27 Feb 2025 14:51:51 +0530 Subject: [PATCH 7/8] Added name field in company document --- .../gepafin/tendermanagement/dao/CompanyDocumentDao.java | 7 +++++-- .../tendermanagement/entities/CompanyDocumentEntity.java | 3 +++ .../model/response/CompanyDocumentResponseBean.java | 4 +++- .../tendermanagement/service/CompanyDocumentService.java | 2 +- .../service/impl/CompanyDocumentServiceImpl.java | 4 ++-- .../web/rest/api/CompanyDocumentApi.java | 1 + .../web/rest/api/impl/CompanyDocumentApiControlller.java | 4 ++-- src/main/resources/db/changelog/db.changelog-1.0.0.xml | 9 +++++++++ 8 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java index a9f45b86..c13104ff 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java @@ -86,7 +86,7 @@ public class CompanyDocumentDao { @Autowired private Validator validator; - public List uploadFileForCompany(HttpServletRequest request, Long userId, List files, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum companyDocumentSourceTypeEnum, LocalDateTime expirationDate){ + public List uploadFileForCompany(HttpServletRequest request, Long userId, List files, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum companyDocumentSourceTypeEnum, LocalDateTime expirationDate,String name){ DocumentCategoryEntity categoryEntity = categoryDao.validateCategory(documentCategoryId); validator.validateUserWithCompany(request,companyId); UserWithCompanyEntity userWithCompanyEntity=companyService.getUserWithCompany(userId,companyId); @@ -106,6 +106,7 @@ public class CompanyDocumentDao { companyDocumentEntity.setFilePath(uploadFileOnAmazonS3Response.getFilePath()); companyDocumentEntity.setIsDeleted(false); companyDocumentEntity.setUploadedBy(userId); + companyDocumentEntity.setName(name); if (expirationDate.isBefore(currentDate.plusDays(7))) { companyDocumentEntity.setStatus(CompanyDocumentStatusEnum.DUE.getValue()); } else { @@ -159,7 +160,7 @@ public class CompanyDocumentDao { DocumentCategoryEntity categoryEntity = entity.getCategoryEntity(); DocumentCategoryResponse responseCategory = categoryDao.convertToResponseBean(categoryEntity); responseBean.setId(entity.getId()); - responseBean.setName(entity.getFileName()); + responseBean.setFileName(entity.getFileName()); responseBean.setType(CompanyDocumentTypeEnum.valueOf(entity.getType())); responseBean.setFilePath(entity.getFilePath()); responseBean.setCompanyId(entity.getCompanyId()); @@ -167,9 +168,11 @@ public class CompanyDocumentDao { responseBean.setStatus(entity.getStatus()); responseBean.setUploadedBy(entity.getUploadedBy()); responseBean.setCategory(responseCategory); + responseBean.setName(entity.getName()); responseBean.setUserWithCompanyId(entity.getUserWithCompany().getId()); responseBean.setCreatedDate(entity.getCreatedDate()); responseBean.setUpdatedDate(entity.getUpdatedDate()); + return responseBean; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/CompanyDocumentEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/CompanyDocumentEntity.java index 7308a270..15c3457c 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/CompanyDocumentEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/CompanyDocumentEntity.java @@ -16,6 +16,9 @@ public class CompanyDocumentEntity extends BaseEntity { @Column(name = "FILE_PATH") private String filePath; + @Column(name ="name") + private String name; + @Column(name="TYPE") private String type; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CompanyDocumentResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CompanyDocumentResponseBean.java index 576cc324..73c13fdc 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CompanyDocumentResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CompanyDocumentResponseBean.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Data public class CompanyDocumentResponseBean extends BaseBean { - private String name; + private String fileName; private String filePath; @@ -16,6 +16,8 @@ public class CompanyDocumentResponseBean extends BaseBean { private Long companyId; + private String name; + private String status; private LocalDateTime expirationDate; diff --git a/src/main/java/net/gepafin/tendermanagement/service/CompanyDocumentService.java b/src/main/java/net/gepafin/tendermanagement/service/CompanyDocumentService.java index dd469fe8..b7604509 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CompanyDocumentService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CompanyDocumentService.java @@ -12,7 +12,7 @@ import java.time.LocalDateTime; import java.util.List; public interface CompanyDocumentService { - List uploadFileForCompany(HttpServletRequest request, List files, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum documentSourceTypeEnum, LocalDateTime expirationDate); + List uploadFileForCompany(HttpServletRequest request, List files, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum documentSourceTypeEnum, LocalDateTime expirationDate,String name); CompanyDocumentResponseBean updateCompanyDocument(HttpServletRequest httpServletRequest, Long companyDocumentId, CompanyDocumentRequest companyDocumentRequest); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyDocumentServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyDocumentServiceImpl.java index 8fa169d8..8af71f1d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyDocumentServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyDocumentServiceImpl.java @@ -28,10 +28,10 @@ public class CompanyDocumentServiceImpl implements CompanyDocumentService { private CompanyDocumentDao companyDocumentDao; @Override - public List uploadFileForCompany(HttpServletRequest request, List files, Long companyId, Long documentCategoryId , CompanyDocumentTypeEnum documentSourceTypeEnum, LocalDateTime expirationDate) { + public List uploadFileForCompany(HttpServletRequest request, List files, Long companyId, Long documentCategoryId , CompanyDocumentTypeEnum documentSourceTypeEnum, LocalDateTime expirationDate,String name) { Map userInfo = validator.getUserInfoFromToken(request); Long userId = validator.getUserId(userInfo); - return companyDocumentDao.uploadFileForCompany(request,userId,files,companyId,documentCategoryId,documentSourceTypeEnum,expirationDate); + return companyDocumentDao.uploadFileForCompany(request,userId,files,companyId,documentCategoryId,documentSourceTypeEnum,expirationDate,name); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyDocumentApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyDocumentApi.java index ba3409d5..f31de82d 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyDocumentApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CompanyDocumentApi.java @@ -41,6 +41,7 @@ public interface CompanyDocumentApi { default ResponseEntity>> uploadFileForCompany(HttpServletRequest httpServletRequest, @Parameter(description = "Company Id", required = true) @PathVariable("companyId") Long companyId, @Parameter(description = "The Document Category id", required = true) @RequestParam(value = "documentCategoryId", required = false) Long documentCategoryId, + @Parameter(description = "The Document Name", required = true) @RequestParam(value = "name", required = false) String name, @RequestParam("documentType") CompanyDocumentTypeEnum documentTypeEnum, @RequestParam("expirationDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime expirationDate, @RequestParam("file") List files) { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyDocumentApiControlller.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyDocumentApiControlller.java index 8fd555c2..83a73f97 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyDocumentApiControlller.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CompanyDocumentApiControlller.java @@ -41,7 +41,7 @@ public class CompanyDocumentApiControlller implements CompanyDocumentApi { private CompanyDocumentDao companyDocumentDao; @Override - public ResponseEntity>> uploadFileForCompany(HttpServletRequest request, Long companyId, Long documentCategoryId, CompanyDocumentTypeEnum companyDocumentSourceTypeEnum, LocalDateTime expirationDate, + public ResponseEntity>> uploadFileForCompany(HttpServletRequest request, Long companyId, Long documentCategoryId, String name ,CompanyDocumentTypeEnum companyDocumentSourceTypeEnum, LocalDateTime expirationDate, List files) { try { UserActionContextEnum userActionContext = companyDocumentDao.getUserActionContextEnum(companyDocumentSourceTypeEnum); @@ -49,7 +49,7 @@ public class CompanyDocumentApiControlller implements CompanyDocumentApi { /** This code is responsible for creating user action logs for the "upload document for company" operation. **/ loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPLOAD).actionContext(userActionContext).build()); - List responseBeans = companyDocumentService.uploadFileForCompany(request,files, companyId, documentCategoryId ,companyDocumentSourceTypeEnum,expirationDate); + List responseBeans = companyDocumentService.uploadFileForCompany(request,files, companyId, documentCategoryId ,companyDocumentSourceTypeEnum,expirationDate,name); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response>(responseBeans, Status.SUCCESS, Translator.toLocale(GepafinConstant.FILES_UPLOADED_MSG))); } catch (CustomValidationException ex) { 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 1e7c049f..294865ea 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 @@ -2536,5 +2536,14 @@ + + + + + + + + + From 2f746e503b02dc4e3bacb15505166d517c1fcad0 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 27 Feb 2025 15:00:56 +0530 Subject: [PATCH 8/8] updated code --- .../net/gepafin/tendermanagement/dao/CompanyDocumentDao.java | 1 + .../tendermanagement/model/request/CompanyDocumentRequest.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java index c13104ff..9cee39b6 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDocumentDao.java @@ -197,6 +197,7 @@ public class CompanyDocumentDao { DocumentCategoryEntity categoryEntity = categoryDao.validateCategory(companyDocumentRequest.getCategoryId()); setIfUpdated(companyDocumentEntity::getCategoryEntity, companyDocumentEntity::setCategoryEntity, categoryEntity); } + setIfUpdated(companyDocumentEntity::getName, companyDocumentEntity::setName, companyDocumentRequest.getName()); companyDocumentRepository.save(companyDocumentEntity); /** This code is responsible for adding a version history log for the "updating company document" operation. **/ diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CompanyDocumentRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/CompanyDocumentRequest.java index 41d167ca..9dcf7917 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CompanyDocumentRequest.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CompanyDocumentRequest.java @@ -8,5 +8,6 @@ import java.time.LocalDateTime; @Data public class CompanyDocumentRequest { private Long categoryId; + private String name ; private LocalDateTime expirationDate; }