From c55ca10d03c065714fe1652a046455c6548c86da Mon Sep 17 00:00:00 2001 From: rajesh Date: Mon, 26 Aug 2024 15:09:17 +0530 Subject: [PATCH 01/12] updated code --- .../tendermanagement/constants/GepafinConstant.java | 2 ++ .../java/net/gepafin/tendermanagement/dao/CallDao.java | 7 +++++-- .../model/request/CreateCallRequestStep1.java | 7 +------ .../model/request/CreateCallRequestStep2.java | 1 + .../model/response/CreateCallResponseBean.java | 8 +++++--- .../gepafin/tendermanagement/web/rest/api/CallApi.java | 3 ++- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index ab9f75cc..f8239a1d 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -43,6 +43,8 @@ public class GepafinConstant { public static final String EMAIL_ALREADY_EXISTS = "email.already.exists"; public static final String DOCUMENT_ID_NOT_FOUND="document.id.not.found"; public static final String INVALID_DATE_MSG = "call.invalid.date"; + public static final String STEP_1 = "STEP_1"; + public static final String STEP_2 = "STEP_2"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 0b99ceb6..c6265391 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -84,6 +84,7 @@ public class CallDao { createCallResponseBean = assembleCreateCallResponseBean(callEntity, Collections.emptyList(), Collections.emptyList(), faqEntities, Collections.emptyList()); createCallResponseBean.setAimedTo(amiedTo); + createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); return createCallResponseBean; } @@ -100,7 +101,7 @@ public class CallDao { callEntity.setDescriptionLong(createCallRequest.getDescriptionLong()); callEntity.setStartDate(createCallRequest.getStartDate()); callEntity.setEndDate(createCallRequest.getEndDate()); - callEntity.setStatus(String.valueOf(createCallRequest.getStatus())); + callEntity.setStatus(CallTypeEnum.DRAFT.getValue()); callEntity.setAmountMax(createCallRequest.getAmountMax()); callEntity.setAmount(createCallRequest.getAmountMax()); callEntity.setConfidi(false); @@ -349,6 +350,8 @@ public class CallDao { Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); callEntity.setThreshold(createCallRequest.getThreshold()); + callEntity.setStatus(createCallRequest.getStatus().getValue()); + callRepository.save(callEntity); List evaluationCriteriaEntities = convertToEvaluationCriteriaEntities( createCallRequest.getCriteria(), callEntity); List documentEntities = convertToDocumentEntities(createCallRequest.getDocs(), callEntity); @@ -363,8 +366,8 @@ public class CallDao { documentEntities, faqEntities, imageEntities); createCallResponseBean.setAimedTo(amiedTo); createCallResponseBean.setCheckList(checkList); + createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2); return createCallResponseBean; - } } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java index e6cbc3e9..0c18cd1e 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java @@ -1,14 +1,12 @@ package net.gepafin.tendermanagement.model.request; -import lombok.Data; -import net.gepafin.tendermanagement.enums.CallTypeEnum; - import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import lombok.Data; @Data public class CreateCallRequestStep1 { @@ -47,7 +45,4 @@ public class CreateCallRequestStep1 { private List faq; - @NotNull - private CallTypeEnum status; - } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java index 7908c9ae..d4264977 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java @@ -24,6 +24,7 @@ public class CreateCallRequestStep2 { private List images; + @NotNull private CallTypeEnum status; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java index 56a42a2a..cfeaa4b1 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java @@ -1,12 +1,12 @@ package net.gepafin.tendermanagement.model.response; -import lombok.Data; -import net.gepafin.tendermanagement.enums.CallTypeEnum; - import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; +import lombok.Data; +import net.gepafin.tendermanagement.enums.CallTypeEnum; + @Data public class CreateCallResponseBean { @@ -53,6 +53,8 @@ public class CreateCallResponseBean { private List images; private List checkList; + + private String currentStep; } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index 3da8bab6..2bf116e9 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -17,6 +17,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; @Validated @@ -48,7 +49,7 @@ public interface CallApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) - @PostMapping(value = "/step2", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PutMapping(value = "/step2", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") public ResponseEntity> createCallStep2(HttpServletRequest request, @Parameter(description = "Call request object", required = true) From f561695db04510b0382235570739715859ac1949 Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 27 Aug 2024 11:30:32 +0530 Subject: [PATCH 02/12] created api to update the call --- .../constants/GepafinConstant.java | 2 + .../gepafin/tendermanagement/dao/CallDao.java | 560 ++++++++++-------- .../tendermanagement/dao/RegionDao.java | 3 +- .../gepafin/tendermanagement/dao/RoleDao.java | 2 +- .../gepafin/tendermanagement/dao/UserDao.java | 2 +- .../entities/EvaluationCriteriaEntity.java | 12 +- .../model/request/CreateCallRequestStep1.java | 2 +- .../model/request/EvaluationCriteriaReq.java | 4 +- .../model/request/UpdateCallRequestStep1.java | 43 ++ .../EvaluationCriteriaResponseBean.java | 12 +- .../repositories/DocumentRepository.java | 5 + .../EvaluationCriteriaRepository.java | 5 + .../repositories/LookUpDataRepository.java | 2 + .../tendermanagement/service/CallService.java | 3 + .../service/impl/CallServiceImpl.java | 8 + .../tendermanagement/util/ObjectUtils.java | 20 - .../gepafin/tendermanagement/util/Utils.java | 14 + .../web/rest/api/CallApi.java | 18 + .../web/rest/api/impl/CallApiController.java | 9 + .../db/changelog/db.changelog-1.0.0.xml | 15 + src/main/resources/message_en.properties | 1 + src/main/resources/message_it.properties | 1 + 22 files changed, 458 insertions(+), 285 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/request/UpdateCallRequestStep1.java delete mode 100644 src/main/java/net/gepafin/tendermanagement/util/ObjectUtils.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index f8239a1d..7402a589 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -45,6 +45,8 @@ public class GepafinConstant { public static final String INVALID_DATE_MSG = "call.invalid.date"; public static final String STEP_1 = "STEP_1"; public static final String STEP_2 = "STEP_2"; + public static final String CALL_UPDATE_SUCCESSFULLY_MSG = "call.update.successfully"; + public static final String CALL_NOT_FOUND = "call.not.found"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index c6265391..2131519d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -24,12 +24,14 @@ import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.CallTypeEnum; +import net.gepafin.tendermanagement.enums.DocumentTypeEnum; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.DocumentReq; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaReq; import net.gepafin.tendermanagement.model.request.FaqReq; import net.gepafin.tendermanagement.model.request.LookUpDataReq; +import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; @@ -48,32 +50,34 @@ import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationExceptio import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; + @Component public class CallDao { - @Autowired - private CallRepository callRepository; + @Autowired + private CallRepository callRepository; - @Autowired - private DocumentRepository documentRepository; + @Autowired + private DocumentRepository documentRepository; - @Autowired - private EvaluationCriteriaRepository evaluationCriteriaRepository; + @Autowired + private EvaluationCriteriaRepository evaluationCriteriaRepository; - @Autowired - private FaqRepository faqRepository; + @Autowired + private FaqRepository faqRepository; - @Autowired - private RegionRepository regionRepository; + @Autowired + private RegionRepository regionRepository; - @Autowired - private LookUpDataRepository lookUpDataRepository; + @Autowired + private LookUpDataRepository lookUpDataRepository; - @Autowired - private CallTargetAudienceChecklistRepository callTargetAudienceChecklistRepository; + @Autowired + private CallTargetAudienceChecklistRepository callTargetAudienceChecklistRepository; - @Autowired - private UserRepository userRepository; + @Autowired + private UserRepository userRepository; public CreateCallResponseBean createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { CreateCallResponseBean createCallResponseBean = null; @@ -89,55 +93,74 @@ public class CallDao { } + public CallEntity convertToCallEntity(CreateCallRequestStep1 createCallRequest) { + CallEntity callEntity = new CallEntity(); + validateCallEntity(createCallRequest); + RegionEntity region = regionRepository.findById(createCallRequest.getRegionId()) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.REGION_NOT_FOUND))); + callEntity.setRegion(region); + callEntity.setName(createCallRequest.getName()); + callEntity.setDescriptionShort(createCallRequest.getDescriptionShort()); + callEntity.setDescriptionLong(createCallRequest.getDescriptionLong()); + callEntity.setStartDate(createCallRequest.getStartDate()); + callEntity.setEndDate(createCallRequest.getEndDate()); + callEntity.setStatus(CallTypeEnum.DRAFT.getValue()); + callEntity.setAmountMax(createCallRequest.getAmountMax()); + callEntity.setAmount(createCallRequest.getAmountMax()); + callEntity.setConfidi(false); + if (createCallRequest.getConfidi() != null) { + callEntity.setConfidi(createCallRequest.getConfidi()); + } + callEntity.setDocumentationRequested(createCallRequest.getDocumentationRequested()); + callEntity = callRepository.save(callEntity); + return callEntity; + } - public CallEntity convertToCallEntity(CreateCallRequestStep1 createCallRequest) { - CallEntity callEntity = new CallEntity(); - validateCallEntity(createCallRequest); - RegionEntity region = regionRepository.findById(createCallRequest.getRegionId()) - .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND))); - callEntity.setRegion(region); - callEntity.setName(createCallRequest.getName()); - callEntity.setDescriptionShort(createCallRequest.getDescriptionShort()); - callEntity.setDescriptionLong(createCallRequest.getDescriptionLong()); - callEntity.setStartDate(createCallRequest.getStartDate()); - callEntity.setEndDate(createCallRequest.getEndDate()); - callEntity.setStatus(CallTypeEnum.DRAFT.getValue()); - callEntity.setAmountMax(createCallRequest.getAmountMax()); - callEntity.setAmount(createCallRequest.getAmountMax()); - callEntity.setConfidi(false); - if(createCallRequest.getConfidi()!=null){ - callEntity.setConfidi(createCallRequest.getConfidi()); - } - callEntity.setDocumentationRequested(createCallRequest.getDocumentationRequested()); - callEntity = callRepository.save(callEntity); - return callEntity; - } + public List convertToEvaluationCriteriaEntities( + List criteriaReqList, CallEntity callEntity) { + List evaluationCriteriaEntities = criteriaReqList.stream() + .map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList()); + evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities); + return evaluationCriteriaEntities; + } - public List convertToEvaluationCriteriaEntities(List criteriaReqList, CallEntity callEntity) { - List evaluationCriteriaEntities = criteriaReqList.stream().map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList()); - evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities); - return evaluationCriteriaEntities; - } + private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, + CallEntity callEntity) { + EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity(); + LookUpDataEntity lookUpDataEntity = getOrCreateLookUpData(criteriaReq, LookUpDataTypeEnum.EVALUATION_CRITERIA); + criteriaEntity.setLookupData(lookUpDataEntity); + criteriaEntity.setScore(criteriaReq.getScore()); + criteriaEntity.setCall(callEntity); + return criteriaEntity; + } - private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, CallEntity callEntity) { - EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity(); - validateEvolutionCrieteriaEntity(criteriaReq.getName()); - criteriaEntity.setName(criteriaReq.getName()); - criteriaEntity.setDescription(criteriaReq.getValue()); - criteriaEntity.setScore(criteriaReq.getScore()); - criteriaEntity.setCall(callEntity); - return criteriaEntity; - } + private LookUpDataEntity getOrCreateLookUpData(EvaluationCriteriaReq criteriaReq, LookUpDataTypeEnum typeEnum) { + LookUpDataEntity lookUpDataEntity = null; + if (criteriaReq.getLookUpDataId() == null || criteriaReq.getLookUpDataId().equals(0l)) { + validateEvolutionCrieteriaEntity(criteriaReq.getValue()); + lookUpDataEntity = new LookUpDataEntity(); + lookUpDataEntity.setValue(criteriaReq.getValue()); + lookUpDataEntity.setType(typeEnum.getValue()); + lookUpDataRepository.save(lookUpDataEntity); + } else { + lookUpDataEntity = lookUpDataRepository.findById(null) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); + } + return lookUpDataEntity; + } - public List convertToDocumentEntities(List documentReqList, CallEntity callEntity) { - List documentEntities = documentReqList.stream().map(req -> convertToDocumentEntity(req, callEntity)).collect(Collectors.toList()); - documentRepository.saveAll(documentEntities); - return documentEntities; - } + public List convertToDocumentEntities(List documentReqList, CallEntity callEntity) { + List documentEntities = documentReqList.stream() + .map(req -> convertToDocumentEntity(req, callEntity)).collect(Collectors.toList()); + documentRepository.saveAll(documentEntities); + return documentEntities; + } - private DocumentEntity convertToDocumentEntity(DocumentReq documentReq, CallEntity callEntity) { - validateDocumentEntity(documentReq.getId(),documentReq.getFileName()); + private DocumentEntity convertToDocumentEntity(DocumentReq documentReq, CallEntity callEntity) { + validateDocumentEntity(documentReq.getId(), documentReq.getFileName()); DocumentEntity documentEntity = documentRepository.findById(documentReq.getId()) .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND))); @@ -147,208 +170,227 @@ public class CallDao { // documentEntity.setFileName(documentReq.getFileName()); // documentEntity.setFilePath(documentReq.getUrl()); // documentEntity.setCall(callEntity); - return documentEntity; - } + return documentEntity; + } + public List convertToFaqEntities(List faqReqList, CallEntity callEntity, Long userId) { + List faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId)) + .collect(Collectors.toList()); + faqRepository.saveAll(faqEntities); + return faqEntities; + } - public List convertToFaqEntities(List faqReqList, CallEntity callEntity, Long userId) { - List faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId)).collect(Collectors.toList()); - faqRepository.saveAll(faqEntities); - return faqEntities; - } + private FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) { + FaqEntity faqEntity = new FaqEntity(); + validateFaqEntity(faqReq.getQuestion()); + UserEntity userEntity = userRepository.findById(userId) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); + faqEntity.setUser(userEntity); + faqEntity.setIsVisible(true); + if (faqReq.getIsVisible() != null) { + faqEntity.setIsVisible(faqReq.getIsVisible()); + } + faqEntity.setQuestionShort(faqReq.getQuestionShort()); + faqEntity.setQuestion(faqReq.getQuestion()); + if (faqReq.getResponse() != null || faqReq.getResponseShort() != null) { + faqEntity.setResponseDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); + } + faqEntity.setResponseShort(faqReq.getResponseShort()); + faqEntity.setResponse(faqReq.getResponse()); + faqEntity.setCall(callEntity); + return faqEntity; + } - private FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) { - FaqEntity faqEntity = new FaqEntity(); - validateFaqEntity(faqReq.getQuestion()); - UserEntity userEntity= userRepository.findById(userId) - .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); - faqEntity.setUser(userEntity); - faqEntity.setIsVisible(true); - if(faqReq.getIsVisible()!=null){ - faqEntity.setIsVisible(faqReq.getIsVisible()); - } - faqEntity.setQuestionShort(faqReq.getQuestionShort()); - faqEntity.setQuestion(faqReq.getQuestion()); - if(faqReq.getResponse()!=null ||faqReq.getResponseShort()!=null){ - faqEntity.setResponseDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); - } - faqEntity.setResponseShort(faqReq.getResponseShort()); - faqEntity.setResponse(faqReq.getResponse()); - faqEntity.setCall(callEntity); - return faqEntity; - } + public void validateFaqEntity(String question) { + if (!StringUtils.hasText(question)) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.QUESTION_NOT_EMPTY_MSG)); + } + } - public void validateFaqEntity( String question) { - if (!StringUtils.hasText(question)) { - throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.QUESTION_NOT_EMPTY_MSG)); - } - } - - public void validateDocumentEntity(Long documentId,String name) { - if(documentId==null){ - throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND)); - } + public void validateDocumentEntity(Long documentId, String name) { + if (documentId == null) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND)); + } // if (!StringUtils.hasText(name)) { // throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); // } - } + } - public void validateEvolutionCrieteriaEntity(String name) { - if (!StringUtils.hasText(name)) { - throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); - } - } + public void validateEvolutionCrieteriaEntity(String name) { + if (!StringUtils.hasText(name)) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); + } + } - public void validateCallEntity(CreateCallRequestStep1 createCallRequest) { - if (createCallRequest.getRegionId() == null) { - throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)); - } + public void validateCallEntity(CreateCallRequestStep1 createCallRequest) { + if (createCallRequest.getRegionId() == null) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)); + } - if (createCallRequest.getAmount().compareTo(BigDecimal.ZERO) <= 0||createCallRequest.getAmountMax().compareTo(BigDecimal.ZERO) <= 0) { - throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.AMOUNT_GREATER_THAN_ZERO_MSG)); - } - if (createCallRequest.getStartDate().toLocalDate().isBefore(LocalDate.now()) || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now())) { - throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); - } - } - public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { - CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean(); - createCallResponseBean.setId(callEntity.getId()); - createCallResponseBean.setName(callEntity.getName()); - createCallResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate())); - createCallResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); - createCallResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); - createCallResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); - createCallResponseBean.setRegionId(callEntity.getRegion().getId()); - createCallResponseBean.setAmount(callEntity.getAmount()); - createCallResponseBean.setAmountMax(callEntity.getAmountMax()); - createCallResponseBean.setContactInfo(callEntity.getContactInfo()); - createCallResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod()); - createCallResponseBean.setThreshold(callEntity.getThreshold()); - createCallResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested()); - createCallResponseBean.setPriorityArea(callEntity.getPriorityArea()); - createCallResponseBean.setCreatedDate(callEntity.getCreatedDate()); - createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); - return createCallResponseBean; - } - public EvaluationCriteriaResponseBean convertToEvaluationCriteriaResponseBean(EvaluationCriteriaEntity entity) { - EvaluationCriteriaResponseBean responseBean = new EvaluationCriteriaResponseBean(); - responseBean.setId(entity.getId()); - responseBean.setName(entity.getName()); - responseBean.setDescription(entity.getDescription()); - responseBean.setScore(entity.getScore()); - responseBean.setCreatedDate(entity.getCreatedDate()); - responseBean.setUpdatedDate(entity.getUpdatedDate()); - return responseBean; - } - public DocumentResponseBean convertToDocumentResponseBean(DocumentEntity entity) { - DocumentResponseBean responseBean = new DocumentResponseBean(); - responseBean.setId(entity.getId()); - responseBean.setName(entity.getFileName()); - responseBean.setDescription(entity.getDescription()); - responseBean.setFilePath(entity.getFilePath()); - responseBean.setCreatedDate(entity.getCreatedDate()); - responseBean.setUpdatedDate(entity.getUpdatedDate()); - return responseBean; - } - public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) { - FaqResponseBean responseBean = new FaqResponseBean(); - responseBean.setId(entity.getId()); - responseBean.setQuestionShort(entity.getQuestionShort()); - responseBean.setResponseShort(entity.getResponseShort()); - responseBean.setResponse(entity.getResponse()); - responseBean.setQuestion(entity.getQuestion()); - responseBean.setUserId(entity.getUser().getId()); - responseBean.setIsVisible(entity.getIsVisible()); - responseBean.setCreatedDate(entity.getCreatedDate()); - responseBean.setUpdatedDate(entity.getUpdatedDate()); - return responseBean; - } - public CreateCallResponseBean assembleCreateCallResponseBean( - CallEntity callEntity, - List evaluationCriteriaEntities, - List documentEntities, - List faqEntities,List images) { + if (createCallRequest.getAmount().compareTo(BigDecimal.ZERO) <= 0 + || createCallRequest.getAmountMax().compareTo(BigDecimal.ZERO) <= 0) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.AMOUNT_GREATER_THAN_ZERO_MSG)); + } + if (createCallRequest.getStartDate().toLocalDate().isBefore(LocalDate.now()) + || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now())) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); + } + } - CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity); + public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { + CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean(); + createCallResponseBean.setId(callEntity.getId()); + createCallResponseBean.setName(callEntity.getName()); + createCallResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate())); + createCallResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); + createCallResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); + createCallResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); + createCallResponseBean.setRegionId(callEntity.getRegion().getId()); + createCallResponseBean.setAmount(callEntity.getAmount()); + createCallResponseBean.setAmountMax(callEntity.getAmountMax()); + createCallResponseBean.setContactInfo(callEntity.getContactInfo()); + createCallResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod()); + createCallResponseBean.setThreshold(callEntity.getThreshold()); + createCallResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested()); + createCallResponseBean.setPriorityArea(callEntity.getPriorityArea()); + createCallResponseBean.setCreatedDate(callEntity.getCreatedDate()); + createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); + return createCallResponseBean; + } - List evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream() - .map(this::convertToEvaluationCriteriaResponseBean) - .collect(Collectors.toList()); + public EvaluationCriteriaResponseBean convertToEvaluationCriteriaResponseBean(EvaluationCriteriaEntity entity) { + EvaluationCriteriaResponseBean responseBean = new EvaluationCriteriaResponseBean(); + responseBean.setId(entity.getId()); + responseBean.setLookUpDataId(entity.getLookupData().getId()); + responseBean.setTitle(entity.getLookupData().getTitle()); + responseBean.setValue(entity.getLookupData().getValue()); + responseBean.setScore(entity.getScore()); + responseBean.setCreatedDate(entity.getCreatedDate()); + responseBean.setUpdatedDate(entity.getUpdatedDate()); + return responseBean; + } - List documentResponseBeans = documentEntities.stream() - .map(this::convertToDocumentResponseBean) - .collect(Collectors.toList()); + public DocumentResponseBean convertToDocumentResponseBean(DocumentEntity entity) { + DocumentResponseBean responseBean = new DocumentResponseBean(); + responseBean.setId(entity.getId()); + responseBean.setName(entity.getFileName()); + responseBean.setDescription(entity.getDescription()); + responseBean.setFilePath(entity.getFilePath()); + responseBean.setCreatedDate(entity.getCreatedDate()); + responseBean.setUpdatedDate(entity.getUpdatedDate()); + return responseBean; + } - List faqResponseBeans = faqEntities.stream() - .map(this::convertToFaqResponseBean) - .collect(Collectors.toList()); + public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) { + FaqResponseBean responseBean = new FaqResponseBean(); + responseBean.setId(entity.getId()); + responseBean.setQuestionShort(entity.getQuestionShort()); + responseBean.setResponseShort(entity.getResponseShort()); + responseBean.setResponse(entity.getResponse()); + responseBean.setQuestion(entity.getQuestion()); + responseBean.setUserId(entity.getUser().getId()); + responseBean.setIsVisible(entity.getIsVisible()); + responseBean.setCreatedDate(entity.getCreatedDate()); + responseBean.setUpdatedDate(entity.getUpdatedDate()); + return responseBean; + } - List imagesResponseBean = images.stream() - .map(this::convertToDocumentResponseBean) - .collect(Collectors.toList()); - CreateCallResponseBean createCallResponseBean =callResponseBean; - createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans); - createCallResponseBean.setDocs(documentResponseBeans); - createCallResponseBean.setFaq(faqResponseBeans); - createCallResponseBean.setImages(imagesResponseBean); - return createCallResponseBean; - } - public List convertLookUpDataEntities(List lookUpData, CallEntity callEntity, LookUpDataEntity.LookUpDataTypeEnum type) { - List lookUpDataEntities = lookUpData.stream() - .map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)) - .collect(Collectors.toList()); + public CreateCallResponseBean assembleCreateCallResponseBean(CallEntity callEntity, + List evaluationCriteriaEntities, List documentEntities, + List faqEntities, List images) { - lookUpDataRepository.saveAll(lookUpDataEntities); + CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity); - return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities); - } + List evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream() + .map(this::convertToEvaluationCriteriaResponseBean).collect(Collectors.toList()); - private List createCallTargetAudienceCheckList(CallEntity callEntity, List lookUpDataEntities) { - List lookUpDataResponses=new ArrayList<>(); - for(LookUpDataEntity lookUpDataEntity:lookUpDataEntities){ - CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity=new CallTargetAudienceChecklistEntity(); - callTargetAudienceChecklistEntity.setIsValidated(false); - callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity); - callTargetAudienceChecklistEntity.setCall(callEntity); - callTargetAudienceChecklistEntity= callTargetAudienceChecklistRepository.save(callTargetAudienceChecklistEntity); - lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity)); - } - return lookUpDataResponses; - } + List documentResponseBeans = documentEntities.stream() + .map(this::convertToDocumentResponseBean).collect(Collectors.toList()); - private LookUpDataEntity convertLookUpDataRequestIntoLookUpDataEntity(LookUpDataReq req, LookUpDataEntity.LookUpDataTypeEnum type) { - if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) { - LookUpDataEntity newEntity = new LookUpDataEntity(); - newEntity.setValue(req.getValue()); - newEntity.setType(type.getValue()); - return newEntity; - } + List faqResponseBeans = faqEntities.stream().map(this::convertToFaqResponseBean) + .collect(Collectors.toList()); - return lookUpDataRepository.findById(req.getLookUpDataId()) - .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); - } + List imagesResponseBean = images.stream().map(this::convertToDocumentResponseBean) + .collect(Collectors.toList()); + CreateCallResponseBean createCallResponseBean = callResponseBean; + createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans); + createCallResponseBean.setDocs(documentResponseBeans); + createCallResponseBean.setFaq(faqResponseBeans); + createCallResponseBean.setImages(imagesResponseBean); + return createCallResponseBean; + } - public LookUpDataResponse convertToLookUpDataResponseBean(CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) { - LookUpDataResponse lookUpDataResponse = new LookUpDataResponse(); - LookUpDataEntity lookUpDataEntity = callTargetAudienceChecklistEntity.getLookupData(); - lookUpDataResponse.setId(callTargetAudienceChecklistEntity.getId()); - lookUpDataResponse.setLookUpDataId(lookUpDataEntity.getId()); - lookUpDataResponse.setValue(lookUpDataEntity.getValue()); - lookUpDataResponse.setTitle(lookUpDataEntity.getTitle()); - lookUpDataResponse.setCreatedDate(lookUpDataEntity.getCreatedDate()); - lookUpDataResponse.setUpdatedDate(lookUpDataEntity.getUpdatedDate()); - return lookUpDataResponse; - } - - - public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { + public List convertLookUpDataEntities(List lookUpData, CallEntity callEntity, + LookUpDataEntity.LookUpDataTypeEnum type) { + List lookUpDataEntities = lookUpData.stream() + .map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)).collect(Collectors.toList()); + + lookUpDataRepository.saveAll(lookUpDataEntities); + + return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities); + } + + private List createCallTargetAudienceCheckList(CallEntity callEntity, + List lookUpDataEntities) { + List lookUpDataResponses = new ArrayList<>(); + for (LookUpDataEntity lookUpDataEntity : lookUpDataEntities) { + CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity = new CallTargetAudienceChecklistEntity(); + callTargetAudienceChecklistEntity.setIsValidated(false); + callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity); + callTargetAudienceChecklistEntity.setCall(callEntity); + callTargetAudienceChecklistEntity = callTargetAudienceChecklistRepository + .save(callTargetAudienceChecklistEntity); + lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity)); + } + return lookUpDataResponses; + } + + private LookUpDataEntity convertLookUpDataRequestIntoLookUpDataEntity(LookUpDataReq req, + LookUpDataEntity.LookUpDataTypeEnum type) { + if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) { + LookUpDataEntity newEntity = new LookUpDataEntity(); + newEntity.setValue(req.getValue()); + newEntity.setType(type.getValue()); + return newEntity; + } + + return lookUpDataRepository.findById(req.getLookUpDataId()) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); + } + + public LookUpDataResponse convertToLookUpDataResponseBean( + CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) { + LookUpDataResponse lookUpDataResponse = new LookUpDataResponse(); + LookUpDataEntity lookUpDataEntity = callTargetAudienceChecklistEntity.getLookupData(); + lookUpDataResponse.setId(callTargetAudienceChecklistEntity.getId()); + lookUpDataResponse.setLookUpDataId(lookUpDataEntity.getId()); + lookUpDataResponse.setValue(lookUpDataEntity.getValue()); + lookUpDataResponse.setTitle(lookUpDataEntity.getTitle()); + lookUpDataResponse.setCreatedDate(callTargetAudienceChecklistEntity.getCreatedDate()); + lookUpDataResponse.setUpdatedDate(callTargetAudienceChecklistEntity.getUpdatedDate()); + return lookUpDataResponse; + } + + private CallEntity getCallById(Long callId) { + return callRepository.findById(callId).orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); + } + + public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { CreateCallResponseBean createCallResponseBean = null; CallEntity callEntity = callRepository.findById(createCallRequest.getCallId()) .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); - + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + callEntity.setThreshold(createCallRequest.getThreshold()); callEntity.setStatus(createCallRequest.getStatus().getValue()); callRepository.save(callEntity); @@ -369,7 +411,47 @@ public class CallDao { createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2); return createCallResponseBean; } + + public CreateCallResponseBean updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { + CallEntity callEntity = getCallById(callId); + setIfUpdated(callEntity::getName, callEntity::setName, updateCallRequest.getName()); + setIfUpdated(callEntity::getDescriptionShort, callEntity::setDescriptionShort, + updateCallRequest.getDescriptionShort()); + setIfUpdated(callEntity::getDescriptionLong, callEntity::setDescriptionLong, + updateCallRequest.getDescriptionLong()); + setIfUpdated(callEntity::getStartDate, callEntity::setStartDate, updateCallRequest.getStartDate()); + setIfUpdated(callEntity::getEndDate, callEntity::setEndDate, updateCallRequest.getEndDate()); + setIfUpdated(callEntity::getAmount, callEntity::setAmount, updateCallRequest.getAmount()); + setIfUpdated(callEntity::getAmountMax, callEntity::setAmountMax, updateCallRequest.getAmountMax()); + setIfUpdated(callEntity::getDocumentationRequested, callEntity::setDocumentationRequested, + updateCallRequest.getDocumentationRequested()); + setIfUpdated(callEntity::getConfidi, callEntity::setConfidi, updateCallRequest.getConfidi()); + + CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); + createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); + return createCallResponseBean; + } + + private CreateCallResponseBean getCallResponseBean(CallEntity callEntity) { + List documentEntities = documentRepository.findByCallIdAndType(callEntity.getId(), + DocumentTypeEnum.DOCUMENT.getValue()); + List imageEntities = documentRepository.findByCallIdAndType(callEntity.getId(), + DocumentTypeEnum.DOCUMENT.getValue()); + List faqEntities = faqRepository.findByCallId(callEntity.getId()); + List amiedTo = callTargetAudienceChecklistRepository + .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream() + .map(this::convertToLookUpDataResponseBean).toList(); + + List checkList = callTargetAudienceChecklistRepository + .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.CHECKLIST.getValue()).stream() + .map(this::convertToLookUpDataResponseBean).toList(); + List evaluationCriteriaEntities = evaluationCriteriaRepository + .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue()); + + CreateCallResponseBean createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, + documentEntities, faqEntities, imageEntities); + createCallResponseBean.setAimedTo(amiedTo); + createCallResponseBean.setCheckList(checkList); + return createCallResponseBean; + } } - - - diff --git a/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java b/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java index 40493b04..438160bc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java @@ -4,7 +4,6 @@ import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.enums.RegionStatusEnum; -import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.RegionReq; import net.gepafin.tendermanagement.model.response.RegionResponseBean; import net.gepafin.tendermanagement.repositories.RegionRepository; @@ -19,7 +18,7 @@ import org.springframework.stereotype.Repository; import java.util.List; import java.util.stream.Collectors; -import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; +import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; @Repository public class RegionDao { diff --git a/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java b/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java index d0c6342c..c28d2808 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java @@ -19,7 +19,7 @@ import org.springframework.stereotype.Component; import java.util.List; import java.util.stream.Collectors; -import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; +import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; @Component public class RoleDao { diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index dc06326f..0393c176 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Repository; -import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; +import static net.gepafin.tendermanagement.util.Utils.setIfUpdated; @Repository public class UserDao { diff --git a/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java index 539d9c30..f6178779 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java @@ -17,13 +17,11 @@ public class EvaluationCriteriaEntity extends BaseEntity { @ManyToOne @JoinColumn(name = "CALL_ID", nullable = false) private CallEntity call; - - @Column(name = "NAME", nullable = false, columnDefinition = "TEXT") - private String name; - - @Column(name = "DESCRIPTION", columnDefinition = "TEXT") - private String description; - + + @ManyToOne + @JoinColumn(name = "LOOKUP_DATA_ID") + private LookUpDataEntity lookupData; + @Column(name = "SCORE", nullable = false) private Integer score; diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java index 0c18cd1e..97e276a4 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep1.java @@ -41,7 +41,7 @@ public class CreateCallRequestStep1 { @NotEmpty private String documentationRequested; - private Boolean Confidi; + private Boolean confidi; private List faq; diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java index a8b90e1c..492463ec 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java @@ -3,9 +3,7 @@ package net.gepafin.tendermanagement.model.request; import lombok.Data; @Data -public class EvaluationCriteriaReq { +public class EvaluationCriteriaReq extends LookUpDataReq{ - private String name; - private String value; private Integer score; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/UpdateCallRequestStep1.java b/src/main/java/net/gepafin/tendermanagement/model/request/UpdateCallRequestStep1.java new file mode 100644 index 00000000..cecb7d4c --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/UpdateCallRequestStep1.java @@ -0,0 +1,43 @@ +package net.gepafin.tendermanagement.model.request; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +import lombok.Data; + +@Data +public class UpdateCallRequestStep1 { + + + private String name; + + + private String descriptionShort; + + + private String descriptionLong; + + + private LocalDateTime startDate; + + + private LocalDateTime endDate; + + + private BigDecimal amount; + + + private BigDecimal amountMax; + + + private List aimedTo; + + + private String documentationRequested; + + private Boolean confidi; + + private List faq; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java index 29cfed21..95829988 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java @@ -5,17 +5,7 @@ import lombok.Data; import java.time.LocalDateTime; @Data -public class EvaluationCriteriaResponseBean { - - private Long id; - - private String name; - - private String description; +public class EvaluationCriteriaResponseBean extends LookUpDataResponse{ private Integer score; - - private LocalDateTime createdDate; - - private LocalDateTime updatedDate; } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java index 9a2a4639..22965f89 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java @@ -1,10 +1,15 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.DocumentEntity; + +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface DocumentRepository extends JpaRepository { + List findByCallIdAndType(Long callId, String type); + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java index 057566a6..3aae5b0d 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java @@ -1,7 +1,12 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; + +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; public interface EvaluationCriteriaRepository extends JpaRepository { + + List findByCallIdAndLookupDataType(Long callId, String type); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java index e4ffb08a..f3206948 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java @@ -2,6 +2,8 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.LookUpDataEntity; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +@Repository public interface LookUpDataRepository extends JpaRepository { } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index f8a07093..533d36b4 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; +import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; public interface CallService { @@ -11,4 +12,6 @@ public interface CallService { CreateCallResponseBean createCallStep2(HttpServletRequest request, CreateCallRequestStep2 createCallRequest); + CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index 53edaf6d..d22aa498 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.dao.CallDao; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; +import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.service.CallService; import org.springframework.beans.factory.annotation.Autowired; @@ -33,4 +34,11 @@ public class CallServiceImpl implements CallService { Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); return callDao.createCallStep2(createCallRequest, Long.parseLong(userInfo.get("userId").toString())); } + + @Override + public CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, + UpdateCallRequestStep1 updateCallRequest) { + Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); + return callDao.updateCallStep1(callId, updateCallRequest, Long.parseLong(userInfo.get("userId").toString())); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/util/ObjectUtils.java b/src/main/java/net/gepafin/tendermanagement/util/ObjectUtils.java deleted file mode 100644 index 1f7d1215..00000000 --- a/src/main/java/net/gepafin/tendermanagement/util/ObjectUtils.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.gepafin.tendermanagement.util; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -public class ObjectUtils { - - public static void setIfNotNull(Consumer setter, T value) { - if (value != null) { - setter.accept(value); - } - } - public static void setIfUpdated(Supplier getter, Consumer setter, T newValue) { - T currentValue = getter.get(); - if (newValue != null && !newValue.equals(currentValue)) { - setter.accept(newValue); - } - } - -} diff --git a/src/main/java/net/gepafin/tendermanagement/util/Utils.java b/src/main/java/net/gepafin/tendermanagement/util/Utils.java index 21392d61..d0cba04c 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Utils.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Utils.java @@ -10,6 +10,8 @@ import org.slf4j.LoggerFactory; import java.nio.charset.StandardCharsets; import java.util.Base64; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Supplier; import java.util.stream.Collectors; public class Utils { @@ -68,5 +70,17 @@ public class Utils { byte[] decode = Base64.getDecoder().decode(decodedString.getBytes(StandardCharsets.UTF_8)); return new String(decode, StandardCharsets.UTF_8); } + + public static void setIfNotNull(Consumer setter, T value) { + if (value != null) { + setter.accept(value); + } + } + public static void setIfUpdated(Supplier getter, Consumer setter, T newValue) { + T currentValue = getter.get(); + if (newValue != null && !newValue.equals(currentValue)) { + setter.accept(newValue); + } + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index 2bf116e9..c0e8f2ab 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -9,6 +9,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; +import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; @@ -16,6 +17,7 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -54,5 +56,21 @@ public interface CallApi { public ResponseEntity> createCallStep2(HttpServletRequest request, @Parameter(description = "Call request object", required = true) @Valid @RequestBody CreateCallRequestStep2 createCallRequest); + + @Operation(summary = "Api to update call step 1", + 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) })) + }) + @PutMapping(value = "/step1/{callId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + public ResponseEntity> updateCallStep1(HttpServletRequest request, + @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId, + @Parameter(description = "Call request object", required = true) @Valid @RequestBody UpdateCallRequestStep1 updateCallRequest); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 0ff654bc..9f6f99b5 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; +import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.CallService; @@ -41,4 +42,12 @@ public class CallApiController implements CallApi { return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_CREATED_SUCCESSFULLY_MSG))); } + + @Override + @Transactional(rollbackFor=Exception.class) + public ResponseEntity> updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest) { + CreateCallResponseBean createCallResponseBean = callService.updateCallStep1(request, callId, updateCallRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_UPDATE_SUCCESSFULLY_MSG))); + } } \ No newline at end of file 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 5293ec62..11051187 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 @@ -395,4 +395,19 @@ + + + + + + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 15aa6498..345ff54e 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -45,6 +45,7 @@ document.not.found=Document not found. document.id.not.found=Document ID not found. call.created.successfully=Call created successfully. call.invalid.date=Invalid start or end date. +call.update.successfully=Call updated successfully. # Login-related messages login.successfully=Login successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index ae93ff53..6ad0869e 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -44,6 +44,7 @@ file.deleted.successfully=File eliminato con successo. document.not.found=Documento non trovato. document.id.not.found=ID documento non trovato. call.invalid.date=Data di inizio o fine non valida. +call.update.successfully=Chiamata aggiornata con successo. # Login-related messages login.successfully=Accesso effettuato con successo. From e7fa11f35e69654a137f330a596e744facb7a722 Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 27 Aug 2024 13:58:57 +0530 Subject: [PATCH 03/12] updated code --- .../gepafin/tendermanagement/dao/CallDao.java | 29 +++++++++++++++++-- src/main/resources/message_en.properties | 1 + src/main/resources/message_it.properties | 1 + 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 2131519d..a1d7ebbd 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -239,10 +239,12 @@ public class CallDao { Translator.toLocale(GepafinConstant.AMOUNT_GREATER_THAN_ZERO_MSG)); } if (createCallRequest.getStartDate().toLocalDate().isBefore(LocalDate.now()) - || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now())) { + || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now()) || createCallRequest + .getStartDate().toLocalDate().isAfter(createCallRequest.getEndDate().toLocalDate())) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); } + } public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { @@ -382,7 +384,7 @@ public class CallDao { private CallEntity getCallById(Long callId) { return callRepository.findById(callId).orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); } public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { @@ -412,8 +414,31 @@ public class CallDao { return createCallResponseBean; } + public void isValidDateRange(UpdateCallRequestStep1 updateCallRequest, CallEntity callEntity) { + LocalDate startDate = updateCallRequest.getStartDate() != null ? updateCallRequest.getStartDate().toLocalDate() + : null; + LocalDate endDate = updateCallRequest.getEndDate() != null ? updateCallRequest.getEndDate().toLocalDate() + : null; + Boolean isValid = true; + if (startDate != null && endDate != null && startDate.isAfter(endDate)) { + isValid = false; + } else if (startDate != null && callEntity.getEndDate() != null + && startDate.isAfter(callEntity.getEndDate().toLocalDate())) { + isValid = false; + } else if (endDate != null && callEntity.getStartDate() != null + && callEntity.getStartDate().toLocalDate().isAfter(endDate)) { + isValid = false; + } + + if (Boolean.FALSE.equals(isValid)) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); + } + } + public CreateCallResponseBean updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { CallEntity callEntity = getCallById(callId); + isValidDateRange(updateCallRequest, callEntity); setIfUpdated(callEntity::getName, callEntity::setName, updateCallRequest.getName()); setIfUpdated(callEntity::getDescriptionShort, callEntity::setDescriptionShort, updateCallRequest.getDescriptionShort()); diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 345ff54e..447e637b 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -46,6 +46,7 @@ document.id.not.found=Document ID not found. call.created.successfully=Call created successfully. call.invalid.date=Invalid start or end date. call.update.successfully=Call updated successfully. +call.not.found=Call not found. # Login-related messages login.successfully=Login successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 6ad0869e..c403ea60 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -45,6 +45,7 @@ document.not.found=Documento non trovato. document.id.not.found=ID documento non trovato. call.invalid.date=Data di inizio o fine non valida. call.update.successfully=Chiamata aggiornata con successo. +call.not.found=Chiamata non trovata. # Login-related messages login.successfully=Accesso effettuato con successo. From e816fe14093d61df8602439cbd1d1c812951c586 Mon Sep 17 00:00:00 2001 From: harish Date: Tue, 27 Aug 2024 15:39:03 +0530 Subject: [PATCH 04/12] Get Call related api added --- .../constants/GepafinConstant.java | 1 + .../gepafin/tendermanagement/dao/CallDao.java | 15 ++++---- .../tendermanagement/service/CallService.java | 9 +++++ .../service/impl/CallServiceImpl.java | 13 +++++++ .../web/rest/api/CallApi.java | 35 ++++++++++++++++--- .../web/rest/api/impl/CallApiController.java | 22 ++++++++++++ src/main/resources/message_en.properties | 2 ++ src/main/resources/message_it.properties | 1 + 8 files changed, 88 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 7402a589..4860513f 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -47,6 +47,7 @@ public class GepafinConstant { public static final String STEP_2 = "STEP_2"; public static final String CALL_UPDATE_SUCCESSFULLY_MSG = "call.update.successfully"; public static final String CALL_NOT_FOUND = "call.not.found"; + public static final String CALL_FETCH_SUCCESS_MSG = "call.fetch.success"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 2131519d..c6501463 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -8,6 +8,8 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import net.gepafin.tendermanagement.model.response.*; +import net.gepafin.tendermanagement.util.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -32,11 +34,6 @@ import net.gepafin.tendermanagement.model.request.EvaluationCriteriaReq; import net.gepafin.tendermanagement.model.request.FaqReq; import net.gepafin.tendermanagement.model.request.LookUpDataReq; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; -import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; -import net.gepafin.tendermanagement.model.response.DocumentResponseBean; -import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; -import net.gepafin.tendermanagement.model.response.FaqResponseBean; -import net.gepafin.tendermanagement.model.response.LookUpDataResponse; import net.gepafin.tendermanagement.repositories.CallRepository; import net.gepafin.tendermanagement.repositories.CallTargetAudienceChecklistRepository; import net.gepafin.tendermanagement.repositories.DocumentRepository; @@ -380,7 +377,7 @@ public class CallDao { return lookUpDataResponse; } - private CallEntity getCallById(Long callId) { + public CallEntity getCallById(Long callId) { return callRepository.findById(callId).orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); } @@ -454,4 +451,10 @@ public class CallDao { createCallResponseBean.setCheckList(checkList); return createCallResponseBean; } + public List getAllCalls() { + return callRepository.findAll() + .stream() + .map(callEntity -> Utils.convertObject(callEntity, CreateCallResponseBean.class)) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index 533d36b4..5973a593 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -1,10 +1,15 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.RoleResponseBean; + +import java.util.List; public interface CallService { @@ -14,4 +19,8 @@ public interface CallService { CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest); + CallEntity getCallById (Long callId); + + List getAllCalls(); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index d22aa498..b2e636a9 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -3,14 +3,19 @@ package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.dao.CallDao; +import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.service.CallService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.List; import java.util.Map; @@ -41,4 +46,12 @@ public class CallServiceImpl implements CallService { Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); return callDao.updateCallStep1(callId, updateCallRequest, Long.parseLong(userInfo.get("userId").toString())); } + @Override + public CallEntity getCallById(Long callId) { + return callDao.getCallById(callId); + } + public List getAllCalls() { + return callDao.getAllCalls(); + + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index c0e8f2ab..0177d76a 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -7,20 +7,22 @@ import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; +import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @Validated public interface CallApi { @@ -72,5 +74,30 @@ public interface CallApi { public ResponseEntity> updateCallStep1(HttpServletRequest request, @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId, @Parameter(description = "Call request object", required = true) @Valid @RequestBody UpdateCallRequestStep1 updateCallRequest); + @Operation(summary = "Api to get call by 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 = "/{callId}", + produces = { "application/json" }) + ResponseEntity> getCallById( + @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + @Operation(summary = "Api to get all calls", + 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>> getAllCalls(); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 9f6f99b5..8a96bc45 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -3,10 +3,13 @@ package net.gepafin.tendermanagement.web.rest.api.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.web.rest.api.CallApi; @@ -18,6 +21,8 @@ import org.springframework.transaction.annotation.Transactional; 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/call}") @@ -50,4 +55,21 @@ public class CallApiController implements CallApi { return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_UPDATE_SUCCESSFULLY_MSG))); } + @Override + @Transactional(readOnly = true) + public ResponseEntity> getCallById(Long callId) { + CallEntity callEntity = callService.getCallById(callId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(callEntity, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); + } + + @Override + @Transactional(readOnly = true) + public ResponseEntity>> getAllCalls() { + List calls = callService.getAllCalls(); + + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(calls, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); + + } } \ No newline at end of file diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 345ff54e..3fb55680 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -46,6 +46,8 @@ document.id.not.found=Document ID not found. call.created.successfully=Call created successfully. call.invalid.date=Invalid start or end date. call.update.successfully=Call updated successfully. +call.fetch.success=Call details fetched successfully. + # Login-related messages login.successfully=Login successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 6ad0869e..78eff025 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -45,6 +45,7 @@ document.not.found=Documento non trovato. document.id.not.found=ID documento non trovato. call.invalid.date=Data di inizio o fine non valida. call.update.successfully=Chiamata aggiornata con successo. +call.fetch.success=Dettagli della chiamata recuperati con successo. # Login-related messages login.successfully=Accesso effettuato con successo. From 21fc9a4b91cb2f3420c362d1407cedb2b0473565 Mon Sep 17 00:00:00 2001 From: harish Date: Tue, 27 Aug 2024 16:55:50 +0530 Subject: [PATCH 05/12] Add few APIs related to call and Update Responses for Call Controller --- .../gepafin/tendermanagement/dao/CallDao.java | 36 ++++++++++-- .../tendermanagement/dao/RegionDao.java | 11 +++- .../gepafin/tendermanagement/dao/RoleDao.java | 16 ++++-- .../gepafin/tendermanagement/dao/UserDao.java | 4 +- .../response/CallDetailsResponseBean.java | 57 +++++++++++++++++++ .../tendermanagement/service/CallService.java | 5 +- .../service/RegionService.java | 2 +- .../tendermanagement/service/RoleService.java | 2 +- .../service/impl/CallServiceImpl.java | 5 +- .../service/impl/RegionServiceImpl.java | 2 +- .../service/impl/RoleServiceImpl.java | 2 +- .../web/rest/api/CallApi.java | 5 +- .../web/rest/api/RegionApi.java | 2 +- .../web/rest/api/RoleApi.java | 2 +- .../web/rest/api/impl/CallApiController.java | 11 ++-- .../rest/api/impl/RegionApiController.java | 4 +- .../web/rest/api/impl/RoleApiController.java | 6 +- 17 files changed, 136 insertions(+), 36 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 8f265740..c8e556fc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -379,10 +379,16 @@ public class CallDao { return lookUpDataResponse; } - public CallEntity getCallById(Long callId) { + public CallEntity validateCall(Long callId) { return callRepository.findById(callId).orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); } + public CreateCallResponseBean getCallById(Long callId) { + CallEntity callEntity = callRepository.findById(callId) + .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + return convertToCallResponseBean(callEntity); + } public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { CreateCallResponseBean createCallResponseBean = null; @@ -434,7 +440,7 @@ public class CallDao { } public CreateCallResponseBean updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { - CallEntity callEntity = getCallById(callId); + CallEntity callEntity = validateCall(callId); isValidDateRange(updateCallRequest, callEntity); setIfUpdated(callEntity::getName, callEntity::setName, updateCallRequest.getName()); setIfUpdated(callEntity::getDescriptionShort, callEntity::setDescriptionShort, @@ -454,6 +460,26 @@ public class CallDao { return createCallResponseBean; } + public CallDetailsResponseBean convertToCallDetailsResponseBean(CallEntity callEntity) { + CallDetailsResponseBean callDetailsResponseBean = new CallDetailsResponseBean(); + callDetailsResponseBean.setId(callEntity.getId()); + callDetailsResponseBean.setName(callEntity.getName()); + callDetailsResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate())); + callDetailsResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); + callDetailsResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); + callDetailsResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); + callDetailsResponseBean.setRegionId(callEntity.getRegion().getId()); + callDetailsResponseBean.setAmount(callEntity.getAmount()); + callDetailsResponseBean.setAmountMax(callEntity.getAmountMax()); + callDetailsResponseBean.setContactInfo(callEntity.getContactInfo()); + callDetailsResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod()); + callDetailsResponseBean.setThreshold(callEntity.getThreshold()); + callDetailsResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested()); + callDetailsResponseBean.setPriorityArea(callEntity.getPriorityArea()); + callDetailsResponseBean.setCreatedDate(callEntity.getCreatedDate()); + callDetailsResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); + return callDetailsResponseBean; + } private CreateCallResponseBean getCallResponseBean(CallEntity callEntity) { List documentEntities = documentRepository.findByCallIdAndType(callEntity.getId(), DocumentTypeEnum.DOCUMENT.getValue()); @@ -476,10 +502,10 @@ public class CallDao { createCallResponseBean.setCheckList(checkList); return createCallResponseBean; } - public List getAllCalls() { - return callRepository.findAll() + public List getAllCalls() { + return callRepository.findAll() .stream() - .map(callEntity -> Utils.convertObject(callEntity, CreateCallResponseBean.class)) + .map(this::convertToCallDetailsResponseBean) .collect(Collectors.toList()); } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java b/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java index 438160bc..5b59f2a5 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/RegionDao.java @@ -76,7 +76,7 @@ public class RegionDao { public RegionResponseBean updateRegion(Long id, RegionReq regionReq) { log.info("Updating region with ID: {}", id); - RegionEntity existingRegion = getRegionById(id); + RegionEntity existingRegion = validateRegion(id); log.info("Current region details: {}", existingRegion); log.info("New region details: {}", regionReq); String newStatus = regionReq.getStatus() != null ? regionReq.getStatus().getValue() : null; @@ -102,14 +102,19 @@ public class RegionDao { return Utils.convertObject(existingRegion, RegionResponseBean.class); } - public RegionEntity getRegionById(Long id) { + public RegionEntity validateRegion(Long id) { log.info("Fetching region with ID: {}", id); RegionEntity regionEntity = regionRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG))); log.info("Region found: {}", regionEntity); return regionEntity; } - + public RegionResponseBean getRegionById(Long id) { + log.info("Fetching region with ID: {}", id); + RegionEntity regionEntity = regionRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG))); + return convertRegionEntityToRegionResponse(regionEntity); + } public void deleteById(Long id) { log.info("Deleting region with ID: {}", id); regionRepository.findById(id) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java b/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java index c28d2808..16ecc749 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/RoleDao.java @@ -2,6 +2,7 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.RoleReq; import net.gepafin.tendermanagement.model.response.RegionResponseBean; @@ -48,7 +49,8 @@ public class RoleDao { roleEntity.setRoleType(roleReq.getRoleType()); roleEntity.setPermissions(roleReq.getPermissions()); roleEntity.setDescription(roleReq.getDescription()); - roleEntity.setRegion(regionService.getRegionById(roleReq.getRegionId())); + RegionEntity regionEntity =regionDao.validateRegion(roleReq.getRegionId()); + roleEntity.setRegion(regionEntity); return roleEntity; } @@ -68,7 +70,7 @@ public class RoleDao { public RoleResponseBean updateRole(Long id, RoleReq roleReq) { log.info("Updating role with ID: {}", id); - RoleEntity existingRole = getRoleById(id); + RoleEntity existingRole = validateRole(id); // Log changes before update log.info("Current role details: {}", existingRole); @@ -85,14 +87,20 @@ public class RoleDao { return Utils.convertObject(existingRole, RoleResponseBean.class); } - public RoleEntity getRoleById(Long id) { + public RoleEntity validateRole(Long id) { log.info("Fetching role with ID: {}", id); RoleEntity roleEntity = roleRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND))); log.info("Role found: {}", roleEntity); return roleEntity; } - + public RoleResponseBean getRoleById(Long id) { + log.info("Fetching role with ID: {}", id); + RoleEntity roleEntity = roleRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.ROLE_NOT_FOUND))); + log.info("Role found: {}", roleEntity); + return convertRoleEntityToRoleResponse(roleEntity); + } public void deleteById(Long id) { log.info("Deleting role with ID: {}", id); roleRepository.findById(id) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index 0393c176..efa3f283 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -81,7 +81,7 @@ public class UserDao { setIfUpdated(userEntity::getAddress, userEntity::setAddress, userReq.getAddress()); setIfUpdated(userEntity::getPhoneNumber, userEntity::setPhoneNumber, userReq.getPhoneNumber()); if (userReq.getRoleId() != null) { - RoleEntity roleEntity = roleService.getRoleById(userReq.getRoleId()); + RoleEntity roleEntity = roleDao.validateRole(userReq.getRoleId()); setIfUpdated(userEntity::getRoleEntity, userEntity::setRoleEntity, roleEntity); } userEntity = userRepository.save(userEntity); @@ -99,7 +99,7 @@ public class UserDao { userEntity.setOrganization(userReq.getOrganization()); userEntity.setAddress(userReq.getAddress()); userEntity.setPhoneNumber(userReq.getPhoneNumber()); - userEntity.setRoleEntity(roleService.getRoleById(userReq.getRoleId())); + userEntity.setRoleEntity(roleDao.validateRole(userReq.getRoleId())); return userEntity; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java new file mode 100644 index 00000000..f100446f --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java @@ -0,0 +1,57 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; +import net.gepafin.tendermanagement.enums.CallTypeEnum; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; +@Data +public class CallDetailsResponseBean { + + private Long id; + + private String name; + + private String descriptionShort; + + private String descriptionLong; + + private List dates; + + private CallTypeEnum status; + + private Long regionId; + + private BigDecimal amount; + + private BigDecimal amountMax; + + private String contactInfo; + + private String submissionMethod; + + private Long threshold; + + private String priorityArea; + + private String documentationReqested; + + private LocalDateTime createdDate; + + private LocalDateTime updatedDate; + + private List aimedTo; + + private List criteria; + + private List docs; + + private List faq; + + private List images; + + private List checkList; + + private String currentStep; +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index 5973a593..e77f9168 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -6,6 +6,7 @@ import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; +import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.response.RoleResponseBean; @@ -19,8 +20,8 @@ public interface CallService { CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest); - CallEntity getCallById (Long callId); + CreateCallResponseBean getCallById (Long callId); - List getAllCalls(); + List getAllCalls(); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/RegionService.java b/src/main/java/net/gepafin/tendermanagement/service/RegionService.java index 2288fa17..02551552 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/RegionService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/RegionService.java @@ -14,7 +14,7 @@ public interface RegionService { RegionResponseBean updateRegion(Long regionId, RegionReq regionReq); - RegionEntity getRegionById(Long regionId); + RegionResponseBean getRegionById(Long regionId); void deleteRegion(Long regionId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/RoleService.java b/src/main/java/net/gepafin/tendermanagement/service/RoleService.java index 448197b4..d0da5c48 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/RoleService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/RoleService.java @@ -11,7 +11,7 @@ public interface RoleService { RoleResponseBean updateRole(Long roleId, RoleReq roleReq); - RoleEntity getRoleById(Long roleId); + RoleResponseBean getRoleById(Long roleId); void deleteRole(Long roleId); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index b2e636a9..6a3c8cff 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -8,6 +8,7 @@ import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; +import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.service.CallService; @@ -47,10 +48,10 @@ public class CallServiceImpl implements CallService { return callDao.updateCallStep1(callId, updateCallRequest, Long.parseLong(userInfo.get("userId").toString())); } @Override - public CallEntity getCallById(Long callId) { + public CreateCallResponseBean getCallById(Long callId) { return callDao.getCallById(callId); } - public List getAllCalls() { + public List getAllCalls() { return callDao.getAllCalls(); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/RegionServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/RegionServiceImpl.java index 345362d3..78d30715 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/RegionServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/RegionServiceImpl.java @@ -32,7 +32,7 @@ public class RegionServiceImpl implements RegionService { @Override @Transactional(readOnly = true) - public RegionEntity getRegionById(Long regionId) { + public RegionResponseBean getRegionById(Long regionId) { return regionDao.getRegionById(regionId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/RoleServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/RoleServiceImpl.java index 9f66415a..33096730 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/RoleServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/RoleServiceImpl.java @@ -31,7 +31,7 @@ public class RoleServiceImpl implements RoleService { @Override @Transactional(readOnly = true) - public RoleEntity getRoleById(Long roleId) { + public RoleResponseBean getRoleById(Long roleId) { return roleDao.getRoleById(roleId); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index 0177d76a..ce33e240 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -12,6 +12,7 @@ import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; +import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.model.util.Response; @@ -85,7 +86,7 @@ public interface CallApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{callId}", produces = { "application/json" }) - ResponseEntity> getCallById( + ResponseEntity> getCallById( @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); @Operation(summary = "Api to get all calls", responses = { @@ -98,6 +99,6 @@ public interface CallApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "", produces = { "application/json" }) - ResponseEntity>> getAllCalls(); + ResponseEntity>> getAllCalls(); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/RegionApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/RegionApi.java index 3c9237a6..d49924a0 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/RegionApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/RegionApi.java @@ -61,7 +61,7 @@ public interface RegionApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{regionId}", produces = "application/json") - ResponseEntity> getRegionById( + ResponseEntity> getRegionById( @Parameter(description = "The region id", required = true) @PathVariable("regionId") Long regionId); @Operation(summary = "Api to get all regions", diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/RoleApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/RoleApi.java index 7225d87e..04bff191 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/RoleApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/RoleApi.java @@ -62,7 +62,7 @@ public interface RoleApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{roleId}", produces = { "application/json" }) - ResponseEntity> getRoleById( + ResponseEntity> getRoleById( @Parameter(description = "The role ID", required = true) @PathVariable("roleId") Long roleId); @Operation(summary = "Api to get all roles", diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 8a96bc45..9b0477c3 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -8,6 +8,7 @@ import net.gepafin.tendermanagement.entities.RoleEntity; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; +import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; import net.gepafin.tendermanagement.model.response.RoleResponseBean; import net.gepafin.tendermanagement.model.util.Response; @@ -57,16 +58,16 @@ public class CallApiController implements CallApi { } @Override @Transactional(readOnly = true) - public ResponseEntity> getCallById(Long callId) { - CallEntity callEntity = callService.getCallById(callId); + public ResponseEntity> getCallById(Long callId) { + CreateCallResponseBean createCallResponseBean = callService.getCallById(callId); return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(callEntity, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); + .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); } @Override @Transactional(readOnly = true) - public ResponseEntity>> getAllCalls() { - List calls = callService.getAllCalls(); + public ResponseEntity>> getAllCalls() { + List calls = callService.getAllCalls(); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(calls, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RegionApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RegionApiController.java index e7387562..c64258e5 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RegionApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RegionApiController.java @@ -52,10 +52,10 @@ public class RegionApiController implements RegionApi { } @Override - public ResponseEntity> getRegionById( + public ResponseEntity> getRegionById( @PathVariable("regionId") Long regionId) { log.info("Get Region by ID - Region ID: {}", regionId); - RegionEntity region = regionService.getRegionById(regionId); + RegionResponseBean region = regionService.getRegionById(regionId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(region, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_REGION_SUCCESS_MSG))); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RoleApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RoleApiController.java index a720bf3c..4f4c5633 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RoleApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/RoleApiController.java @@ -57,11 +57,11 @@ public class RoleApiController implements RoleApi { } @Override - public ResponseEntity> getRoleById(Long roleId) { + public ResponseEntity> getRoleById(Long roleId) { log.info("Get Role by ID - Role ID: {}", roleId); - RoleEntity roleEntity = roleService.getRoleById(roleId); + RoleResponseBean roleResponseBean = roleService.getRoleById(roleId); return ResponseEntity.status(HttpStatus.OK) - .body(new Response<>(roleEntity, Status.SUCCESS, Translator.toLocale(GepafinConstant.ROLE_FETCH_SUCCESS_MSG))); + .body(new Response<>(roleResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.ROLE_FETCH_SUCCESS_MSG))); } @Override From 22e72f6cd4ddff32ebec712570d3cac22fb11610 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 28 Aug 2024 01:52:25 +0530 Subject: [PATCH 06/12] Created call api's in 2 steps and for update call --- .../gepafin/tendermanagement/dao/CallDao.java | 266 +++++++++++++----- .../tendermanagement/dao/DocumentDao.java | 7 +- .../gepafin/tendermanagement/dao/UserDao.java | 6 + .../CallTargetAudienceChecklistEntity.java | 3 + .../entities/DocumentEntity.java | 16 +- .../entities/EvaluationCriteriaEntity.java | 17 +- .../tendermanagement/entities/FaqEntity.java | 21 +- .../model/request/CreateCallRequestStep2.java | 4 - .../model/request/EvaluationCriteriaReq.java | 2 +- .../model/request/FaqReq.java | 1 + .../model/request/LookUpDataReq.java | 4 +- .../EvaluationCriteriaResponseBean.java | 2 +- .../model/response/FaqResponseBean.java | 2 +- ...CallTargetAudienceChecklistRepository.java | 5 +- .../repositories/DocumentRepository.java | 7 +- .../EvaluationCriteriaRepository.java | 5 +- .../repositories/FaqRepository.java | 5 +- .../tendermanagement/service/UserService.java | 3 + .../service/impl/UserServiceImpl.java | 6 + .../db/changelog/db.changelog-1.0.0.xml | 24 ++ 20 files changed, 287 insertions(+), 119 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index a1d7ebbd..80a1e1cc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -4,8 +4,8 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import org.springframework.beans.factory.annotation.Autowired; @@ -44,7 +44,7 @@ import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository; import net.gepafin.tendermanagement.repositories.FaqRepository; import net.gepafin.tendermanagement.repositories.LookUpDataRepository; import net.gepafin.tendermanagement.repositories.RegionRepository; -import net.gepafin.tendermanagement.repositories.UserRepository; +import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -77,17 +77,18 @@ public class CallDao { private CallTargetAudienceChecklistRepository callTargetAudienceChecklistRepository; @Autowired - private UserRepository userRepository; + private UserService userService; public CreateCallResponseBean createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { - CreateCallResponseBean createCallResponseBean = null; CallEntity callEntity = convertToCallEntity(createCallRequest); - List faqEntities = convertToFaqEntities(createCallRequest.getFaq(), callEntity, userId); - List amiedTo = convertLookUpDataEntities(createCallRequest.getAimedTo(), callEntity, + convertToFaqEntities(createCallRequest.getFaq(), callEntity, userId); + convertLookUpDataEntities(createCallRequest.getAimedTo(), callEntity, LookUpDataTypeEnum.AIMED_TO); - createCallResponseBean = assembleCreateCallResponseBean(callEntity, Collections.emptyList(), - Collections.emptyList(), faqEntities, Collections.emptyList()); - createCallResponseBean.setAimedTo(amiedTo); +// createCallResponseBean = assembleCreateCallResponseBean(callEntity, Collections.emptyList(), +// Collections.emptyList(), faqEntities, Collections.emptyList()); +// createCallResponseBean.setAimedTo(amiedTo); +// createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); + CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); return createCallResponseBean; @@ -118,62 +119,87 @@ public class CallDao { } public List convertToEvaluationCriteriaEntities( - List criteriaReqList, CallEntity callEntity) { + List criteriaReqList, CallEntity callEntity, LookUpDataTypeEnum type) { + if (criteriaReqList == null) { + return null; + } + List existingCriteria = evaluationCriteriaRepository.findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), type.getValue()); + + List incomingIds = criteriaReqList.stream().map(EvaluationCriteriaReq::getId) + .filter(id -> id != null && id > 0).collect(Collectors.toList()); + + existingCriteria.stream().filter(criteria -> !incomingIds.contains(criteria.getId())).forEach(this::softDeleteEvaluationCriteria); + List evaluationCriteriaEntities = criteriaReqList.stream() - .map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList()); + .map(req -> convertToEvaluationCriteriaEntity(req, callEntity, type)).collect(Collectors.toList()); evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities); return evaluationCriteriaEntities; } + + private void softDeleteEvaluationCriteria(EvaluationCriteriaEntity evaluationCriteriaEntity) { + evaluationCriteriaEntity.setIsDeleted(true); + evaluationCriteriaRepository.save(evaluationCriteriaEntity); + } private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, - CallEntity callEntity) { - EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity(); - LookUpDataEntity lookUpDataEntity = getOrCreateLookUpData(criteriaReq, LookUpDataTypeEnum.EVALUATION_CRITERIA); - criteriaEntity.setLookupData(lookUpDataEntity); - criteriaEntity.setScore(criteriaReq.getScore()); - criteriaEntity.setCall(callEntity); + CallEntity callEntity, LookUpDataTypeEnum type) { + EvaluationCriteriaEntity criteriaEntity = null; + LookUpDataEntity lookupDataEntity = convertLookUpDataRequestIntoLookUpDataEntity(criteriaReq, type); + if (criteriaReq.getId() == null && criteriaReq.getId().equals(0l)) { + criteriaEntity = evaluationCriteriaRepository.findById(criteriaReq.getId()) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + } else { + criteriaEntity = new EvaluationCriteriaEntity(); + criteriaEntity.setCall(callEntity); + criteriaEntity.setLookupData(lookupDataEntity); + criteriaEntity.setIsDeleted(false); + } + setIfUpdated(criteriaEntity::getScore, criteriaEntity::setScore, criteriaReq.getScore()); + if (Boolean.FALSE.equals(criteriaEntity.getLookupData().getId().equals(lookupDataEntity.getId()))) { + criteriaEntity.setLookupData(lookupDataEntity); + } return criteriaEntity; } - private LookUpDataEntity getOrCreateLookUpData(EvaluationCriteriaReq criteriaReq, LookUpDataTypeEnum typeEnum) { - LookUpDataEntity lookUpDataEntity = null; - if (criteriaReq.getLookUpDataId() == null || criteriaReq.getLookUpDataId().equals(0l)) { - validateEvolutionCrieteriaEntity(criteriaReq.getValue()); - lookUpDataEntity = new LookUpDataEntity(); - lookUpDataEntity.setValue(criteriaReq.getValue()); - lookUpDataEntity.setType(typeEnum.getValue()); - lookUpDataRepository.save(lookUpDataEntity); - } else { - lookUpDataEntity = lookUpDataRepository.findById(null) - .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); + + public List convertToDocumentEntities(List documentReqList, CallEntity callEntity, + DocumentTypeEnum documentType) { + if (documentReqList == null) { + return null; } + + List existingDocuments = documentRepository + .findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(), documentType.getValue()); - return lookUpDataEntity; - } + List incomingIds = documentReqList.stream().map(DocumentReq::getId).filter(id -> id != null && id > 0) + .collect(Collectors.toList()); - public List convertToDocumentEntities(List documentReqList, CallEntity callEntity) { + existingDocuments.stream().filter(document -> !incomingIds.contains(document.getId())) + .forEach(this::softDeleteDocument); List documentEntities = documentReqList.stream() .map(req -> convertToDocumentEntity(req, callEntity)).collect(Collectors.toList()); documentRepository.saveAll(documentEntities); return documentEntities; } + + private void softDeleteDocument(DocumentEntity documentEntity) { + documentEntity.setIsDeleted(true); + documentRepository.save(documentEntity); + } private DocumentEntity convertToDocumentEntity(DocumentReq documentReq, CallEntity callEntity) { - validateDocumentEntity(documentReq.getId(), documentReq.getFileName()); - DocumentEntity documentEntity = documentRepository.findById(documentReq.getId()) + validateDocumentEntity(documentReq.getId()); + DocumentEntity documentEntity = documentRepository.findByIdAndCallIdAndIsDeletedFalse(documentReq.getId(), callEntity.getId()) .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND))); -// if(documentEntity==null){ -// throw ; -// } -// documentEntity.setFileName(documentReq.getFileName()); -// documentEntity.setFilePath(documentReq.getUrl()); -// documentEntity.setCall(callEntity); return documentEntity; } public List convertToFaqEntities(List faqReqList, CallEntity callEntity, Long userId) { + if (faqReqList == null) { + return null; + } List faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId)) .collect(Collectors.toList()); faqRepository.saveAll(faqEntities); @@ -183,9 +209,8 @@ public class CallDao { private FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) { FaqEntity faqEntity = new FaqEntity(); validateFaqEntity(faqReq.getQuestion()); - UserEntity userEntity = userRepository.findById(userId) - .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); + UserEntity userEntity = userService.validateUser(userId); + faqEntity.setUser(userEntity); faqEntity.setIsVisible(true); if (faqReq.getIsVisible() != null) { @@ -199,6 +224,7 @@ public class CallDao { faqEntity.setResponseShort(faqReq.getResponseShort()); faqEntity.setResponse(faqReq.getResponse()); faqEntity.setCall(callEntity); + faqEntity.setIsDeleted(false); return faqEntity; } @@ -209,18 +235,14 @@ public class CallDao { } } - public void validateDocumentEntity(Long documentId, String name) { + public void validateDocumentEntity(Long documentId) { if (documentId == null) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND)); } - -// if (!StringUtils.hasText(name)) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); -// } } - public void validateEvolutionCrieteriaEntity(String name) { + public void validateEvaluationCriteriaEntity(String name) { if (!StringUtils.hasText(name)) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); @@ -335,8 +357,6 @@ public class CallDao { List lookUpDataEntities = lookUpData.stream() .map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)).collect(Collectors.toList()); - lookUpDataRepository.saveAll(lookUpDataEntities); - return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities); } @@ -348,6 +368,7 @@ public class CallDao { callTargetAudienceChecklistEntity.setIsValidated(false); callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity); callTargetAudienceChecklistEntity.setCall(callEntity); + callTargetAudienceChecklistEntity.setIsDeleted(false); callTargetAudienceChecklistEntity = callTargetAudienceChecklistRepository .save(callTargetAudienceChecklistEntity); lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity)); @@ -361,7 +382,7 @@ public class CallDao { LookUpDataEntity newEntity = new LookUpDataEntity(); newEntity.setValue(req.getValue()); newEntity.setType(type.getValue()); - return newEntity; + return lookUpDataRepository.save(newEntity); } return lookUpDataRepository.findById(req.getLookUpDataId()) @@ -388,28 +409,29 @@ public class CallDao { } public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { - CreateCallResponseBean createCallResponseBean = null; CallEntity callEntity = callRepository.findById(createCallRequest.getCallId()) .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); - callEntity.setThreshold(createCallRequest.getThreshold()); - callEntity.setStatus(createCallRequest.getStatus().getValue()); + setIfUpdated(callEntity::getThreshold, callEntity::setThreshold, createCallRequest.getThreshold()); callRepository.save(callEntity); - List evaluationCriteriaEntities = convertToEvaluationCriteriaEntities( - createCallRequest.getCriteria(), callEntity); - List documentEntities = convertToDocumentEntities(createCallRequest.getDocs(), callEntity); - List imageEntities = convertToDocumentEntities(createCallRequest.getImages(), callEntity); - List checkList = convertLookUpDataEntities(createCallRequest.getCheckList(), callEntity, - LookUpDataTypeEnum.CHECKLIST); - List faqEntities = faqRepository.findByCallId(callEntity.getId()); - List amiedTo = callTargetAudienceChecklistRepository - .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream() - .map(this::convertToLookUpDataResponseBean).toList(); - createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, - documentEntities, faqEntities, imageEntities); - createCallResponseBean.setAimedTo(amiedTo); - createCallResponseBean.setCheckList(checkList); + convertToEvaluationCriteriaEntities(createCallRequest.getCriteria(), callEntity, LookUpDataTypeEnum.EVALUATION_CRITERIA); + + convertToDocumentEntities(createCallRequest.getDocs(), callEntity, DocumentTypeEnum.DOCUMENT); + + convertToDocumentEntities(createCallRequest.getImages(), callEntity, DocumentTypeEnum.IMAGES); + + updateLookUpData(callEntity, createCallRequest.getCheckList(), LookUpDataTypeEnum.CHECKLIST); + +// List faqEntities = faqRepository.findByCallIdAndIsDeletedFalse(callEntity.getId()); +// List amiedTo = callTargetAudienceChecklistRepository +// .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream() +// .map(this::convertToLookUpDataResponseBean).toList(); +// createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, +// documentEntities, faqEntities, imageEntities); +// createCallResponseBean.setAimedTo(amiedTo); +// createCallResponseBean.setCheckList(checkList); + CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2); return createCallResponseBean; } @@ -422,10 +444,10 @@ public class CallDao { Boolean isValid = true; if (startDate != null && endDate != null && startDate.isAfter(endDate)) { isValid = false; - } else if (startDate != null && callEntity.getEndDate() != null + } else if (startDate != null && endDate == null && callEntity.getEndDate() != null && startDate.isAfter(callEntity.getEndDate().toLocalDate())) { isValid = false; - } else if (endDate != null && callEntity.getStartDate() != null + } else if (startDate == null && endDate != null && callEntity.getStartDate() != null && callEntity.getStartDate().toLocalDate().isAfter(endDate)) { isValid = false; } @@ -438,6 +460,7 @@ public class CallDao { public CreateCallResponseBean updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { CallEntity callEntity = getCallById(callId); + UserEntity userEntity = userService.validateUser(userId); isValidDateRange(updateCallRequest, callEntity); setIfUpdated(callEntity::getName, callEntity::setName, updateCallRequest.getName()); setIfUpdated(callEntity::getDescriptionShort, callEntity::setDescriptionShort, @@ -451,27 +474,114 @@ public class CallDao { setIfUpdated(callEntity::getDocumentationRequested, callEntity::setDocumentationRequested, updateCallRequest.getDocumentationRequested()); setIfUpdated(callEntity::getConfidi, callEntity::setConfidi, updateCallRequest.getConfidi()); - + updateLookUpData(callEntity, updateCallRequest.getAimedTo(), LookUpDataTypeEnum.AIMED_TO); + updateFaq(callEntity, updateCallRequest.getFaq(), userEntity); CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); return createCallResponseBean; } + private void updateFaq(CallEntity callEntity, List faqReqList, UserEntity userEntity) { + if(faqReqList==null) { + return; + } + List existingFaqs = faqRepository.findByCallIdAndIsDeletedFalse(callEntity.getId()); + List incomingIds = faqReqList.stream().map(FaqReq::getId).filter(Objects::nonNull).filter(id -> id > 0) + .collect(Collectors.toList()); + existingFaqs.stream().filter(faq -> !incomingIds.contains(faq.getId())).forEach(this::softDeleteFaq); + faqReqList.forEach(faqReq -> createOrUpdateFaq(faqReq, callEntity, userEntity)); + + } + + private void softDeleteFaq(FaqEntity faqEntity) { + faqEntity.setIsDeleted(true); + faqRepository.save(faqEntity); + } + + private void createOrUpdateFaq(FaqReq faqReq, CallEntity callEntity, UserEntity userEntity) { + FaqEntity faqEntity = null; + + if (isExistingFaq(faqReq)) { + faqEntity = faqRepository.findById(faqReq.getId()) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + } else { + faqEntity = new FaqEntity(); + faqEntity.setCall(callEntity); + faqEntity.setUser(userEntity); + faqEntity.setIsDeleted(false); + } + + setIfUpdated(faqEntity::getQuestionShort, faqEntity::setQuestionShort, faqReq.getQuestionShort()); + setIfUpdated(faqEntity::getQuestion, faqEntity::setQuestion, faqReq.getQuestion()); + setIfUpdated(faqEntity::getResponseShort, faqEntity::setResponseShort, faqReq.getResponseShort()); + setIfUpdated(faqEntity::getResponse, faqEntity::setResponse, faqReq.getResponse()); + setIfUpdated(faqEntity::getIsVisible, faqEntity::setIsVisible, faqReq.getIsVisible()); + faqRepository.save(faqEntity); + } + + private boolean isExistingFaq(FaqReq faqReq) { + return faqReq.getId() != null && faqReq.getId() > 0; + } + + private void updateLookUpData(CallEntity callEntity, List lookupDataReqList, LookUpDataTypeEnum type) { + if (lookupDataReqList == null) { + return; + } + List existingChecklist = callTargetAudienceChecklistRepository + .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), type.getValue()); + List incomingIds = lookupDataReqList.stream().map(LookUpDataReq::getLookUpDataId) + .filter(id -> id != null && id > 0).collect(Collectors.toList()); + existingChecklist.stream().filter(checklist -> !incomingIds.contains(checklist.getLookupData().getId())) + .forEach(this::softDeleteCallTargetAudienceChecklist); + lookupDataReqList + .forEach(lookUpDataReq -> createOrUpdateCallTargetAudienceChecklist(lookUpDataReq, callEntity, type)); + } + + private void createOrUpdateCallTargetAudienceChecklist(LookUpDataReq lookUpDataReq, CallEntity callEntity, + LookUpDataTypeEnum type) { + CallTargetAudienceChecklistEntity checklistEntity = null; + LookUpDataEntity lookupDataEntity = convertLookUpDataRequestIntoLookUpDataEntity(lookUpDataReq, type); + if (lookUpDataReq.getId() != null && lookUpDataReq.getId() > 0) { + checklistEntity = callTargetAudienceChecklistRepository.findById(lookUpDataReq.getId()) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + + if (Boolean.FALSE.equals(checklistEntity.getLookupData().getId().equals(lookupDataEntity.getId()))) { + checklistEntity.setLookupData(lookupDataEntity); + } + } else { + checklistEntity = new CallTargetAudienceChecklistEntity(); + checklistEntity.setCall(callEntity); + checklistEntity.setLookupData(lookupDataEntity); + checklistEntity.setIsValidated(false); + checklistEntity.setIsDeleted(false); + } + + callTargetAudienceChecklistRepository.save(checklistEntity); + } + + private void softDeleteCallTargetAudienceChecklist( + CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) { + callTargetAudienceChecklistEntity.setIsDeleted(true); + callTargetAudienceChecklistRepository.save(callTargetAudienceChecklistEntity); + } + private CreateCallResponseBean getCallResponseBean(CallEntity callEntity) { - List documentEntities = documentRepository.findByCallIdAndType(callEntity.getId(), + List documentEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(), DocumentTypeEnum.DOCUMENT.getValue()); - List imageEntities = documentRepository.findByCallIdAndType(callEntity.getId(), + List imageEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(), DocumentTypeEnum.DOCUMENT.getValue()); - List faqEntities = faqRepository.findByCallId(callEntity.getId()); + List faqEntities = faqRepository.findByCallIdAndIsDeletedFalse(callEntity.getId()); List amiedTo = callTargetAudienceChecklistRepository - .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream() + .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream() .map(this::convertToLookUpDataResponseBean).toList(); List checkList = callTargetAudienceChecklistRepository - .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.CHECKLIST.getValue()).stream() + .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.CHECKLIST.getValue()).stream() .map(this::convertToLookUpDataResponseBean).toList(); List evaluationCriteriaEntities = evaluationCriteriaRepository - .findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue()); + .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue()); CreateCallResponseBean createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, documentEntities, faqEntities, imageEntities); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java index f9603b70..c5911465 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java @@ -18,7 +18,6 @@ import net.gepafin.tendermanagement.enums.DocumentTypeEnum; import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.repositories.DocumentRepository; import net.gepafin.tendermanagement.service.AmazonS3Service; -import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; @@ -48,6 +47,7 @@ public class DocumentDao { documentEntity.setFileName(fileName); documentEntity.setType(fileType.getValue()); documentEntity.setFilePath(filepath); + documentEntity.setIsDeleted(false); documentEntities.add(documentEntity); } catch (IOException e) {} } @@ -62,9 +62,8 @@ public class DocumentDao { .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND))); - String fileName = Utils.extractFileName(documentEntity.getFilePath()); - amazonS3Service.delete(fileName); - documentRepository.delete(documentEntity); + documentEntity.setIsDeleted(true); + documentRepository.save(documentEntity); } } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java index 0393c176..feed67e5 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/UserDao.java @@ -149,4 +149,10 @@ public class UserDao { log.info("Login successful for email: {}", loginReq.getEmail()); return jwtToken; } + + public UserEntity validateUser(Long userId) { + return userRepository.findById(userId) + .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG))); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/CallTargetAudienceChecklistEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/CallTargetAudienceChecklistEntity.java index be94ee59..6b14df58 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/CallTargetAudienceChecklistEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/CallTargetAudienceChecklistEntity.java @@ -18,6 +18,9 @@ public class CallTargetAudienceChecklistEntity extends BaseEntity{ @Column(name = "IS_VALIDATED") private Boolean isValidated; + + @Column(name ="IS_DELETED", nullable = false) + private Boolean isDeleted = false; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/DocumentEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/DocumentEntity.java index 5a15351c..057ca421 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/DocumentEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/DocumentEntity.java @@ -1,17 +1,15 @@ package net.gepafin.tendermanagement.entities; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.Builder; @Entity @Table(name = "DOCUMENT") @Data -@NoArgsConstructor -@AllArgsConstructor -@Builder public class DocumentEntity extends BaseEntity{ @Column(name = "FILE_NAME", length = 255) private String fileName; @@ -28,4 +26,8 @@ public class DocumentEntity extends BaseEntity{ @Column(name = "DESCRIPTION", columnDefinition = "TEXT") private String description; + + @Column(name ="IS_DELETED", nullable = false) + private Boolean isDeleted = false; + } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java index f6178779..39b3eb05 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationCriteriaEntity.java @@ -1,17 +1,15 @@ package net.gepafin.tendermanagement.entities; -import jakarta.persistence.*; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.Builder; @Entity @Table(name = "EVALUATION_CRITERIA") @Data -@NoArgsConstructor -@AllArgsConstructor -@Builder public class EvaluationCriteriaEntity extends BaseEntity { @ManyToOne @@ -23,6 +21,9 @@ public class EvaluationCriteriaEntity extends BaseEntity { private LookUpDataEntity lookupData; @Column(name = "SCORE", nullable = false) - private Integer score; + private Long score; + + @Column(name ="IS_DELETED", nullable = false) + private Boolean isDeleted = false; } diff --git a/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java index aa521521..d5e47df8 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java @@ -1,19 +1,19 @@ package net.gepafin.tendermanagement.entities; -import jakarta.persistence.*; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; -import lombok.Builder; - import java.time.LocalDateTime; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.ForeignKey; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Data; + + @Entity @Table(name = "FAQ") @Data -@NoArgsConstructor -@AllArgsConstructor -@Builder public class FaqEntity extends BaseEntity { @ManyToOne @@ -41,6 +41,9 @@ public class FaqEntity extends BaseEntity { @Column(name = "RESPONSE_DATE") private LocalDateTime responseDate; + + @Column(name ="IS_DELETED", nullable = false) + private Boolean isDeleted = false; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java index d4264977..ca3a6045 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/CreateCallRequestStep2.java @@ -4,7 +4,6 @@ import java.util.List; import jakarta.validation.constraints.NotNull; import lombok.Data; -import net.gepafin.tendermanagement.enums.CallTypeEnum; @Data public class CreateCallRequestStep2 { @@ -24,7 +23,4 @@ public class CreateCallRequestStep2 { private List images; - @NotNull - private CallTypeEnum status; - } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java index 492463ec..ebc8cbd7 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationCriteriaReq.java @@ -5,5 +5,5 @@ import lombok.Data; @Data public class EvaluationCriteriaReq extends LookUpDataReq{ - private Integer score; + private Long score; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FaqReq.java b/src/main/java/net/gepafin/tendermanagement/model/request/FaqReq.java index de9f5225..618c03c0 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/FaqReq.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FaqReq.java @@ -5,6 +5,7 @@ import lombok.Data; @Data public class FaqReq { + private Long id; private Boolean isVisible; private String questionShort; private String question; diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/LookUpDataReq.java b/src/main/java/net/gepafin/tendermanagement/model/request/LookUpDataReq.java index 5fe41b41..441d19b6 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/LookUpDataReq.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/LookUpDataReq.java @@ -1,12 +1,12 @@ package net.gepafin.tendermanagement.model.request; -import jakarta.validation.constraints.NotNull; import lombok.Data; @Data public class LookUpDataReq { - @NotNull + private Long id; + private Long lookUpDataId; private String value; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java index 95829988..21f60a48 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationCriteriaResponseBean.java @@ -7,5 +7,5 @@ import java.time.LocalDateTime; @Data public class EvaluationCriteriaResponseBean extends LookUpDataResponse{ - private Integer score; + private Long score; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FaqResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/FaqResponseBean.java index fdc4be63..57431714 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/FaqResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FaqResponseBean.java @@ -10,7 +10,7 @@ public class FaqResponseBean { private Long id; - private Long userId; + private Long userId; private Boolean isVisible; diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java index 8d4912fe..8b2f4859 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.repositories; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,6 +10,8 @@ import net.gepafin.tendermanagement.entities.CallTargetAudienceChecklistEntity; @Repository public interface CallTargetAudienceChecklistRepository extends JpaRepository { + + Optional findById(Long id); - List findByCallIdAndLookupDataType(Long id, String value); + List findByCallIdAndLookupDataTypeAndIsDeletedFalse(Long id, String value); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java index 22965f89..fcbc6f8b 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/DocumentRepository.java @@ -2,14 +2,19 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.DocumentEntity; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface DocumentRepository extends JpaRepository { + + Optional findById(Long id); - List findByCallIdAndType(Long callId, String type); + List findByCallIdAndTypeAndIsDeletedFalse(Long callId, String type); + + Optional findByIdAndCallIdAndIsDeletedFalse(Long id, Long callId); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java index 3aae5b0d..434428af 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/EvaluationCriteriaRepository.java @@ -3,10 +3,13 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface EvaluationCriteriaRepository extends JpaRepository { + + Optional findById(Long id); - List findByCallIdAndLookupDataType(Long callId, String type); + List findByCallIdAndLookupDataTypeAndIsDeletedFalse(Long callId, String type); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/FaqRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/FaqRepository.java index 7b4b7610..8ecd8535 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/FaqRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/FaqRepository.java @@ -3,12 +3,15 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.FaqEntity; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface FaqRepository extends JpaRepository { + + Optional findById(Long id); - List findByCallId(Long callId); + List findByCallIdAndIsDeletedFalse(Long callId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/UserService.java b/src/main/java/net/gepafin/tendermanagement/service/UserService.java index 68912240..38df028d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/UserService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/UserService.java @@ -1,5 +1,6 @@ package net.gepafin.tendermanagement.service; +import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.request.LoginReq; import net.gepafin.tendermanagement.model.request.UpdateUserReq; import net.gepafin.tendermanagement.model.request.UserReq; @@ -16,4 +17,6 @@ public interface UserService { void deleteUser(Long userId); JWTToken login(LoginReq loginReq); + + UserEntity validateUser(Long userId); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java index c6205aae..d5e14972 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.service.impl; import net.gepafin.tendermanagement.dao.UserDao; +import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.request.LoginReq; import net.gepafin.tendermanagement.model.request.UpdateUserReq; import net.gepafin.tendermanagement.model.request.UserReq; @@ -49,5 +50,10 @@ public class UserServiceImpl implements UserService { return userDao.login(loginReq); } + + @Override + public UserEntity validateUser(Long userId) { + return userDao.validateUser(userId); + } } \ No newline at end of file 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 11051187..96a4f0b8 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 @@ -410,4 +410,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + From ffa07d779bda725a96d938007d6d932d94373a02 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 28 Aug 2024 03:08:22 +0530 Subject: [PATCH 07/12] updated code --- .../gepafin/tendermanagement/dao/CallDao.java | 216 ------------------ 1 file changed, 216 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index acdd43fd..95cb337a 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -157,21 +157,6 @@ public class CallDao { } return criteriaEntity; } -// public List convertListOfEvaluationCriteriaReqToEvaluationCriteriaEntities(List criteriaReqList, CallEntity callEntity) { -// List evaluationCriteriaEntities = criteriaReqList.stream().map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList()); -// evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities); -// return evaluationCriteriaEntities; -// } -// -// private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, CallEntity callEntity) { -// EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity(); -// validateEvolutionCrieteriaEntity(criteriaReq.getName(),criteriaReq.getScore()); -// criteriaEntity.setName(criteriaReq.getName()); -// criteriaEntity.setDescription(criteriaReq.getValue()); -// criteriaEntity.setScore(criteriaReq.getScore()); -// criteriaEntity.setCall(callEntity); -// return criteriaEntity; -// } public List convertToDocumentEntities(List documentReqList, CallEntity callEntity, @@ -217,207 +202,6 @@ public class CallDao { return faqEntities; } -// public List convertToFaqEntities(List faqReqList, CallEntity callEntity, Long userId) { -// List faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId)).collect(Collectors.toList()); -// faqRepository.saveAll(faqEntities); -// return faqEntities; -// } -// -// public FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) { -// FaqEntity faqEntity = new FaqEntity(); -// validateFaqEntity(faqReq.getQuestion()); -// UserEntity userEntity = userService.validateUser(userId); -// faqEntity.setUser(userEntity); -// faqEntity.setIsVisible(true); -// if(faqReq.getIsVisible()!=null){ -// faqEntity.setIsVisible(faqReq.getIsVisible()); -// } -// faqEntity.setQuestionShort(faqReq.getQuestionShort()); -// faqEntity.setQuestion(faqReq.getQuestion()); -// if(faqReq.getResponse()!=null ||faqReq.getResponseShort()!=null){ -// faqEntity.setResponseDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); -// } -// faqEntity.setResponseShort(faqReq.getResponseShort()); -// faqEntity.setResponse(faqReq.getResponse()); -// faqEntity.setCall(callEntity); -// faqEntity.setIsDeleted(false); -// return faqEntity; -// } -// -// public void validateFaqEntity( String question) { -// if (!StringUtils.hasText(question)) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.QUESTION_NOT_EMPTY_MSG)); -// } -// } -// -// public void validateDocumentEntity(Long documentId,String name) { -// if(documentId==null){ -// throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND)); -// } -// -//// if (!StringUtils.hasText(name)) { -//// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); -//// } -// } -// -// public void validateEvolutionCrieteriaEntity(String name,Integer score) { -// if (!StringUtils.hasText(name)) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); -// } -// if (score == null || score <= 0) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.SCORE_NOT_NULL_MSG)); -// } -// } -// -// public void validateCallEntity(CreateCallRequestStep1 createCallRequest) { -// if (createCallRequest.getRegionId() == null) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)); -// } -// -// if (createCallRequest.getAmount().compareTo(BigDecimal.ZERO) <= 0||createCallRequest.getAmountMax().compareTo(BigDecimal.ZERO) <= 0) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.AMOUNT_GREATER_THAN_ZERO_MSG)); -// } -// if (createCallRequest.getStartDate().toLocalDate().isBefore(LocalDate.now()) || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now())) { -// throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); -// } -// } -// public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { -// CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean(); -// createCallResponseBean.setId(callEntity.getId()); -// createCallResponseBean.setName(callEntity.getName()); -// createCallResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate())); -// createCallResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); -// createCallResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); -// createCallResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); -// createCallResponseBean.setRegionId(callEntity.getRegion().getId()); -// createCallResponseBean.setAmount(callEntity.getAmount()); -// createCallResponseBean.setAmountMax(callEntity.getAmountMax()); -// createCallResponseBean.setContactInfo(callEntity.getContactInfo()); -// createCallResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod()); -// createCallResponseBean.setThreshold(callEntity.getThreshold()); -// createCallResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested()); -// createCallResponseBean.setPriorityArea(callEntity.getPriorityArea()); -// createCallResponseBean.setCreatedDate(callEntity.getCreatedDate()); -// createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); -// return createCallResponseBean; -// } -// public EvaluationCriteriaResponseBean convertToEvaluationCriteriaResponseBean(EvaluationCriteriaEntity entity) { -// EvaluationCriteriaResponseBean responseBean = new EvaluationCriteriaResponseBean(); -// responseBean.setId(entity.getId()); -// responseBean.setName(entity.getName()); -// responseBean.setDescription(entity.getDescription()); -// responseBean.setScore(entity.getScore()); -// responseBean.setCreatedDate(entity.getCreatedDate()); -// responseBean.setUpdatedDate(entity.getUpdatedDate()); -// return responseBean; -// } -// public DocumentResponseBean convertToDocumentResponseBean(DocumentEntity entity) { -// DocumentResponseBean responseBean = new DocumentResponseBean(); -// responseBean.setId(entity.getId()); -// responseBean.setName(entity.getFileName()); -// responseBean.setDescription(entity.getDescription()); -// responseBean.setFilePath(entity.getFilePath()); -// responseBean.setCreatedDate(entity.getCreatedDate()); -// responseBean.setUpdatedDate(entity.getUpdatedDate()); -// return responseBean; -// } -// public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) { -// FaqResponseBean responseBean = new FaqResponseBean(); -// responseBean.setId(entity.getId()); -// responseBean.setQuestionShort(entity.getQuestionShort()); -// responseBean.setResponseShort(entity.getResponseShort()); -// responseBean.setResponse(entity.getResponse()); -// responseBean.setQuestion(entity.getQuestion()); -// responseBean.setUserId(entity.getUser().getId()); -// responseBean.setIsVisible(entity.getIsVisible()); -// responseBean.setCreatedDate(entity.getCreatedDate()); -// responseBean.setUpdatedDate(entity.getUpdatedDate()); -// return responseBean; -// } -// public CreateCallResponseBean assembleCreateCallResponseBean( -// CallEntity callEntity, -// List evaluationCriteriaEntities, -// List documentEntities, -// List faqEntities,List images) { -// -// CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity); -// -// List evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream() -// .map(this::convertToEvaluationCriteriaResponseBean) -// .collect(Collectors.toList()); -// -// List documentResponseBeans = documentEntities.stream() -// .map(this::convertToDocumentResponseBean) -// .collect(Collectors.toList()); -// -// List faqResponseBeans = faqEntities.stream() -// .map(this::convertToFaqResponseBean) -// .collect(Collectors.toList()); -// -// List imagesResponseBean = images.stream() -// .map(this::convertToDocumentResponseBean) -// .collect(Collectors.toList()); -// CreateCallResponseBean createCallResponseBean =callResponseBean; -// createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans); -// createCallResponseBean.setDocs(documentResponseBeans); -// createCallResponseBean.setFaq(faqResponseBeans); -// createCallResponseBean.setImages(imagesResponseBean); -// return createCallResponseBean; -// } -// public List convertLookUpDataEntities(List lookUpData, CallEntity callEntity, LookUpDataEntity.LookUpDataTypeEnum type) { -// List lookUpDataEntities = lookUpData.stream() -// .map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)) -// .collect(Collectors.toList()); -// -// lookUpDataRepository.saveAll(lookUpDataEntities); -// -// return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities); -// } -// -// private List createCallTargetAudienceCheckList(CallEntity callEntity, List lookUpDataEntities) { -// List lookUpDataResponses=new ArrayList<>(); -// for(LookUpDataEntity lookUpDataEntity:lookUpDataEntities){ -// CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity=new CallTargetAudienceChecklistEntity(); -// callTargetAudienceChecklistEntity.setIsValidated(false); -// callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity); -// callTargetAudienceChecklistEntity.setCall(callEntity); -// callTargetAudienceChecklistEntity= callTargetAudienceChecklistRepository.save(callTargetAudienceChecklistEntity); -// lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity)); -// } -// return lookUpDataResponses; -// } -// -// private LookUpDataEntity convertLookUpDataRequestIntoLookUpDataEntity(LookUpDataReq req, LookUpDataEntity.LookUpDataTypeEnum type) { -// if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) { -// LookUpDataEntity newEntity = new LookUpDataEntity(); -// newEntity.setValue(req.getValue()); -// newEntity.setType(type.getValue()); -// return newEntity; -// } -// -// return lookUpDataRepository.findById(req.getLookUpDataId()) -// .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); -// } -// -// public LookUpDataResponse convertToLookUpDataResponseBean(CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) { -// LookUpDataResponse lookUpDataResponse = new LookUpDataResponse(); -// LookUpDataEntity lookUpDataEntity = callTargetAudienceChecklistEntity.getLookupData(); -// lookUpDataResponse.setId(callTargetAudienceChecklistEntity.getId()); -// lookUpDataResponse.setLookUpDataId(lookUpDataEntity.getId()); -// lookUpDataResponse.setValue(lookUpDataEntity.getValue()); -// lookUpDataResponse.setTitle(lookUpDataEntity.getTitle()); -// lookUpDataResponse.setCreatedDate(lookUpDataEntity.getCreatedDate()); -// lookUpDataResponse.setUpdatedDate(lookUpDataEntity.getUpdatedDate()); -// return lookUpDataResponse; -// } -// -// -// public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) { -// CreateCallResponseBean createCallResponseBean = null; -// CallEntity callEntity = callRepository.findById(createCallRequest.getCallId()) -// .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, -// Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); - public FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) { FaqEntity faqEntity = new FaqEntity(); validateFaqEntity(faqReq.getQuestion()); From 1f8769935624f8649efea8141d15c8f96829a2e5 Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 28 Aug 2024 12:33:45 +0530 Subject: [PATCH 08/12] Created an api to get look up data by type --- .../tendermanagement/dao/LookUpDataDao.java | 12 +++++ .../repositories/LookUpDataRepository.java | 4 ++ .../service/LookUpDataService.java | 5 ++ .../service/impl/LookUpDataServiceImpl.java | 7 +++ .../web/rest/api/LookUpDataApi.java | 52 +++++++++++++++---- .../api/impl/LookUpDataApiController.java | 14 +++++ 6 files changed, 83 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java index 6d9daf37..fe51facc 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/LookUpDataDao.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.entities.LookUpDataEntity; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.repositories.LookUpDataRepository; @@ -11,6 +12,9 @@ import net.gepafin.tendermanagement.constants.GepafinConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.stream.Collectors; + @Component public class LookUpDataDao { @@ -62,4 +66,12 @@ public class LookUpDataDao { response.setUpdatedDate(entity.getUpdatedDate()); return response; } + + public List getLookUpDataByType(LookUpDataTypeEnum type) { + return lookUpDataRepository.findByType(type.getValue()) + .stream() + .map(this::convertLookUpDataEntityToResponseBean) + .collect(Collectors.toList()); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java index f3206948..3d3d6d70 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/LookUpDataRepository.java @@ -4,6 +4,10 @@ import net.gepafin.tendermanagement.entities.LookUpDataEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; +import java.util.Optional; + @Repository public interface LookUpDataRepository extends JpaRepository { + List findByType(String type); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java b/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java index 0a69be9f..c7fde0f6 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/LookUpDataService.java @@ -1,8 +1,11 @@ package net.gepafin.tendermanagement.service; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; +import java.util.List; + public interface LookUpDataService { LookUpDataResponseBean createLookUpData(LookUpDataRequest lookUpDataReq); @@ -12,4 +15,6 @@ public interface LookUpDataService { LookUpDataResponseBean updateLookUpData(Long id, LookUpDataRequest lookUpDataReq); void deleteLookUpData(Long id); + + List getLookUpDataByType(LookUpDataTypeEnum type); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java index 86a2ae6e..bba01b91 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/LookUpDataServiceImpl.java @@ -1,12 +1,15 @@ package net.gepafin.tendermanagement.service.impl; import net.gepafin.tendermanagement.dao.LookUpDataDao; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.service.LookUpDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class LookUpDataServiceImpl implements LookUpDataService { @@ -32,4 +35,8 @@ public class LookUpDataServiceImpl implements LookUpDataService { public void deleteLookUpData(Long id) { lookUpDataDao.deleteLookUpData(id); } + @Override + public List getLookUpDataByType(LookUpDataTypeEnum type) { + return lookUpDataDao.getLookUpDataByType(type); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java index bf3afe19..b0670e4b 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java @@ -4,48 +4,78 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.ExampleObject; import io.swagger.v3.oas.annotations.responses.ApiResponse; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import jakarta.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.util.List; public interface LookUpDataApi { @Operation(summary = "API to create LookUp Data", responses = { - @ApiResponse(responseCode = "201", description = "Created"), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Bad Request\" }"))), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @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)}))}) @PostMapping(value = "", consumes = "application/json", produces = "application/json") ResponseEntity> createLookUpData(HttpServletRequest request, @Valid @RequestBody LookUpDataRequest lookUpDataReq); @Operation(summary = "API to get LookUp Data by id", responses = { @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @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 = "/{id}", produces = "application/json") ResponseEntity> getLookUpDataById(HttpServletRequest request, @PathVariable Long id); @Operation(summary = "API to update LookUp Data", responses = { @ApiResponse(responseCode = "200", description = "OK"), - @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Bad Request\" }"))), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @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)}))}) @PutMapping(value = "/{id}", consumes = "application/json", produces = "application/json") ResponseEntity> updateLookUpData(HttpServletRequest request, @PathVariable Long id, @Valid @RequestBody LookUpDataRequest lookUpDataReq); @Operation(summary = "API to delete LookUp Data", responses = { @ApiResponse(responseCode = "204", description = "No Content"), - @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = "application/json", examples = @ExampleObject(value = "{ \"error\": \"Not Found\" }"))) - }) + @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)}))}) @DeleteMapping(value = "/{id}") ResponseEntity> deleteLookUpData(HttpServletRequest request, @PathVariable Long id); + + @Operation(summary = "API to get LookUp Data by type", + 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 = "/type", produces = "application/json") + ResponseEntity>> getLookUpDataByType(HttpServletRequest request, @RequestParam LookUpDataTypeEnum type); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java index 79fae0de..f2c50512 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.web.rest.api.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.model.request.LookUpDataRequest; import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean; import net.gepafin.tendermanagement.model.util.Response; @@ -15,6 +16,8 @@ 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/lookupdata}") public class LookUpDataApiController implements LookUpDataApi { @@ -59,4 +62,15 @@ public class LookUpDataApiController implements LookUpDataApi { return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_DELETED_SUCCESSFULLY))); } + @Override + public ResponseEntity>> getLookUpDataByType(HttpServletRequest request, LookUpDataTypeEnum type) { + List responseBean = lookUpDataService.getLookUpDataByType(type); + if (responseBean != null) { + return ResponseEntity.status(HttpStatus.OK) + .body(new Response>(responseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.LOOKUP_DATA_FETCHED_SUCCESSFULLY))); + } else { + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body(new Response>(responseBean, Status.NOT_FOUND, Translator.toLocale(GepafinConstant.LOOKUP_DATA_NOT_FOUND))); + } + } } From 630643f15673c4205c9dfecbb3c514f5f1031482 Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 28 Aug 2024 12:38:11 +0530 Subject: [PATCH 09/12] created validate api for call --- .../constants/GepafinConstant.java | 4 ++ .../gepafin/tendermanagement/dao/CallDao.java | 51 +++++++++++-------- ...{CallTypeEnum.java => CallStatusEnum.java} | 7 +-- .../response/CallDetailsResponseBean.java | 4 +- ...allResponseBean.java => CallResponse.java} | 8 +-- ...CallTargetAudienceChecklistRepository.java | 2 +- .../tendermanagement/service/CallService.java | 12 +++-- .../service/impl/CallServiceImpl.java | 16 ++++-- .../impl/CallValidatorServiceImpl.java | 31 +++++++++++ .../tendermanagement/util/FieldValidator.java | 40 +++++++++++++++ .../web/rest/api/CallApi.java | 28 ++++++++-- .../web/rest/api/EvaluationCriteriaApi.java | 12 ++--- .../rest/api/errors/ValidationException.java | 27 ++++++++++ .../web/rest/api/impl/CallApiController.java | 25 +++++---- .../impl/EvaluationCriteriaApiController.java | 2 +- .../api/impl/LookUpDataApiController.java | 2 +- src/main/resources/message_en.properties | 2 + src/main/resources/message_it.properties | 2 + 18 files changed, 214 insertions(+), 61 deletions(-) rename src/main/java/net/gepafin/tendermanagement/enums/{CallTypeEnum.java => CallStatusEnum.java} (69%) rename src/main/java/net/gepafin/tendermanagement/model/response/{CreateCallResponseBean.java => CallResponse.java} (87%) create mode 100644 src/main/java/net/gepafin/tendermanagement/service/impl/CallValidatorServiceImpl.java create mode 100644 src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java create mode 100644 src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ValidationException.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 31e5dcbc..9f3d63ef 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -45,6 +45,7 @@ public class GepafinConstant { public static final String INVALID_DATE_MSG = "call.invalid.date"; public static final String STEP_1 = "STEP_1"; public static final String STEP_2 = "STEP_2"; + public static final String VALIDATE_REQUEST = "VALIDATE_REQUEST"; public static final String CALL_UPDATE_SUCCESSFULLY_MSG = "call.update.successfully"; public static final String CALL_NOT_FOUND = "call.not.found"; public static final String CALL_FETCH_SUCCESS_MSG = "call.fetch.success"; @@ -75,5 +76,8 @@ public class GepafinConstant { public static final String LOGOUT_SUCCESSFUL_MSG = "logout.successful.msg"; public static final String SUCCESS_PASSWORD_CHANGED = "success.password.changed"; public static final String UPDATE_USER_STATUS_SUCCESS_MSG = "update.user.status.success"; + public static final String FIELD_NOT_NULL = "field.not.null"; + public static final String FIELD_NOT_EMPTY = "field.not.empty"; + } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 95cb337a..647696ab 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -24,7 +24,7 @@ import net.gepafin.tendermanagement.entities.LookUpDataEntity; import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum; import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.UserEntity; -import net.gepafin.tendermanagement.enums.CallTypeEnum; +import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.DocumentTypeEnum; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; @@ -41,6 +41,7 @@ import net.gepafin.tendermanagement.repositories.FaqRepository; import net.gepafin.tendermanagement.repositories.LookUpDataRepository; import net.gepafin.tendermanagement.repositories.RegionRepository; import net.gepafin.tendermanagement.service.UserService; +import net.gepafin.tendermanagement.service.impl.CallValidatorServiceImpl; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -75,7 +76,7 @@ public class CallDao { @Autowired private UserService userService; - public CreateCallResponseBean createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { + public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) { CallEntity callEntity = convertToCallEntity(createCallRequest); convertToFaqEntities(createCallRequest.getFaq(), callEntity, userId); convertLookUpDataEntities(createCallRequest.getAimedTo(), callEntity, @@ -84,7 +85,7 @@ public class CallDao { // Collections.emptyList(), faqEntities, Collections.emptyList()); // createCallResponseBean.setAimedTo(amiedTo); // createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); - CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); + CallResponse createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); return createCallResponseBean; @@ -102,7 +103,7 @@ public class CallDao { callEntity.setDescriptionLong(createCallRequest.getDescriptionLong()); callEntity.setStartDate(createCallRequest.getStartDate()); callEntity.setEndDate(createCallRequest.getEndDate()); - callEntity.setStatus(CallTypeEnum.DRAFT.getValue()); + callEntity.setStatus(CallStatusEnum.DRAFT.getValue()); callEntity.setAmountMax(createCallRequest.getAmountMax()); callEntity.setAmount(createCallRequest.getAmountMax()); callEntity.setConfidi(false); @@ -144,7 +145,7 @@ public class CallDao { if (criteriaReq.getId() == null && criteriaReq.getId().equals(0l)) { criteriaEntity = evaluationCriteriaRepository.findById(criteriaReq.getId()) .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND))); } else { criteriaEntity = new EvaluationCriteriaEntity(); criteriaEntity.setCall(callEntity); @@ -264,15 +265,15 @@ public class CallDao { } - public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { - CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean(); + public CallResponse convertToCallResponseBean(CallEntity callEntity) { + CallResponse createCallResponseBean = new CallResponse(); createCallResponseBean.setId(callEntity.getId()); createCallResponseBean.setName(callEntity.getName()); createCallResponseBean.setStartDate(callEntity.getStartDate()); createCallResponseBean.setEndDate(callEntity.getEndDate()); createCallResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); createCallResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); - createCallResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); + createCallResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus())); createCallResponseBean.setRegionId(callEntity.getRegion().getId()); createCallResponseBean.setAmount(callEntity.getAmount()); createCallResponseBean.setAmountMax(callEntity.getAmountMax()); @@ -281,6 +282,7 @@ public class CallDao { createCallResponseBean.setThreshold(callEntity.getThreshold()); createCallResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested()); createCallResponseBean.setPriorityArea(callEntity.getPriorityArea()); + createCallResponseBean.setConfidi(callEntity.getConfidi()); createCallResponseBean.setCreatedDate(callEntity.getCreatedDate()); createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); return createCallResponseBean; @@ -323,11 +325,11 @@ public class CallDao { return responseBean; } - public CreateCallResponseBean assembleCreateCallResponseBean(CallEntity callEntity, + public CallResponse assembleCreateCallResponseBean(CallEntity callEntity, List evaluationCriteriaEntities, List documentEntities, List faqEntities, List images) { - CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity); + CallResponse callResponseBean = convertToCallResponseBean(callEntity); List evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream() .map(this::convertToEvaluationCriteriaResponseBean).collect(Collectors.toList()); @@ -340,7 +342,7 @@ public class CallDao { List imagesResponseBean = images.stream().map(this::convertToDocumentResponseBean) .collect(Collectors.toList()); - CreateCallResponseBean createCallResponseBean = callResponseBean; + CallResponse createCallResponseBean = callResponseBean; createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans); createCallResponseBean.setDocs(documentResponseBeans); createCallResponseBean.setFaq(faqResponseBeans); @@ -403,14 +405,14 @@ public class CallDao { return callRepository.findById(callId).orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); } - public CreateCallResponseBean getCallById(Long callId) { + public CallResponse getCallById(Long callId) { CallEntity callEntity = callRepository.findById(callId) .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); return getCallResponseBean(callEntity); } - public CreateCallResponseBean createCallStep2(Long callId, CreateCallRequestStep2 createCallRequest, Long userId) { + public CallResponse createCallStep2(Long callId, CreateCallRequestStep2 createCallRequest, Long userId) { CallEntity callEntity = callRepository.findById(callId) .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); @@ -433,7 +435,7 @@ public class CallDao { // documentEntities, faqEntities, imageEntities); // createCallResponseBean.setAimedTo(amiedTo); // createCallResponseBean.setCheckList(checkList); - CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); + CallResponse createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2); return createCallResponseBean; } @@ -460,7 +462,7 @@ public class CallDao { } } - public CreateCallResponseBean updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { + public CallResponse updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { CallEntity callEntity = validateCall(callId); UserEntity userEntity = userService.validateUser(userId); isValidDateRange(updateCallRequest, callEntity); @@ -478,7 +480,7 @@ public class CallDao { setIfUpdated(callEntity::getConfidi, callEntity::setConfidi, updateCallRequest.getConfidi()); updateLookUpData(callEntity, updateCallRequest.getAimedTo(), LookUpDataTypeEnum.AIMED_TO); updateFaq(callEntity, updateCallRequest.getFaq(), userEntity); - CreateCallResponseBean createCallResponseBean = getCallResponseBean(callEntity); + CallResponse createCallResponseBean = getCallResponseBean(callEntity); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1); return createCallResponseBean; } @@ -506,7 +508,7 @@ public class CallDao { if (isExistingFaq(faqReq)) { faqEntity = faqRepository.findById(faqReq.getId()) .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + Translator.toLocale(GepafinConstant.FAQ_NOT_FOUND))); } else { faqEntity = new FaqEntity(); faqEntity.setCall(callEntity); @@ -576,7 +578,7 @@ public class CallDao { callDetailsResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate())); callDetailsResponseBean.setDescriptionShort(callEntity.getDescriptionShort()); callDetailsResponseBean.setDescriptionLong(callEntity.getDescriptionLong()); - callDetailsResponseBean.setStatus(CallTypeEnum.valueOf(callEntity.getStatus())); + callDetailsResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus())); callDetailsResponseBean.setRegionId(callEntity.getRegion().getId()); callDetailsResponseBean.setAmount(callEntity.getAmount()); callDetailsResponseBean.setAmountMax(callEntity.getAmountMax()); @@ -589,7 +591,7 @@ public class CallDao { callDetailsResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); return callDetailsResponseBean; } - private CreateCallResponseBean getCallResponseBean(CallEntity callEntity) { + private CallResponse getCallResponseBean(CallEntity callEntity) { List documentEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(), DocumentTypeEnum.DOCUMENT.getValue()); List imageEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(), @@ -605,7 +607,7 @@ public class CallDao { List evaluationCriteriaEntities = evaluationCriteriaRepository .findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.EVALUATION_CRITERIA.getValue()); - CreateCallResponseBean createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, + CallResponse createCallResponseBean = assembleCreateCallResponseBean(callEntity, evaluationCriteriaEntities, documentEntities, faqEntities, imageEntities); createCallResponseBean.setAimedTo(amiedTo); createCallResponseBean.setCheckList(checkList); @@ -617,4 +619,13 @@ public class CallDao { .map(this::convertToCallDetailsResponseBean) .collect(Collectors.toList()); } + + public CallResponse validateCall(CallEntity callEntity) { + CallResponse callResponseBean = getCallResponseBean(callEntity); + CallValidatorServiceImpl.validateResponse(callResponseBean); + callEntity.setStatus(CallStatusEnum.READY_TO_PUBLISH.getValue()); + callRepository.save(callEntity); + callResponseBean.setCurrentStep(GepafinConstant.VALIDATE_REQUEST); + return callResponseBean; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/enums/CallTypeEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java similarity index 69% rename from src/main/java/net/gepafin/tendermanagement/enums/CallTypeEnum.java rename to src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java index 46b88869..b1befe86 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/CallTypeEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java @@ -2,15 +2,16 @@ package net.gepafin.tendermanagement.enums; import com.fasterxml.jackson.annotation.JsonValue; -public enum CallTypeEnum { +public enum CallStatusEnum { DRAFT("DRAFT"), PUBLISH("PUBLISH"), - EXPIRE("EXPIRE"); + EXPIRE("EXPIRE"), + READY_TO_PUBLISH("READY_TO_PUBLISH"); private String value; - CallTypeEnum(String value) { + CallStatusEnum(String value) { this.value = value; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java index f100446f..0e19dd69 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallDetailsResponseBean.java @@ -1,7 +1,7 @@ package net.gepafin.tendermanagement.model.response; import lombok.Data; -import net.gepafin.tendermanagement.enums.CallTypeEnum; +import net.gepafin.tendermanagement.enums.CallStatusEnum; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -19,7 +19,7 @@ public class CallDetailsResponseBean { private List dates; - private CallTypeEnum status; + private CallStatusEnum status; private Long regionId; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java similarity index 87% rename from src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java rename to src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java index 34a361d9..4deaef67 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/CreateCallResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/CallResponse.java @@ -5,10 +5,10 @@ import java.time.LocalDateTime; import java.util.List; import lombok.Data; -import net.gepafin.tendermanagement.enums.CallTypeEnum; +import net.gepafin.tendermanagement.enums.CallStatusEnum; @Data -public class CreateCallResponseBean { +public class CallResponse { private Long id; @@ -22,7 +22,7 @@ public class CreateCallResponseBean { private LocalDateTime endDate; - private CallTypeEnum status; + private CallStatusEnum status; private Long regionId; @@ -39,6 +39,8 @@ public class CreateCallResponseBean { private String priorityArea; private String documentationReqested; + + private Boolean confidi; private LocalDateTime createdDate; diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java index f631b0ed..62da59a7 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CallTargetAudienceChecklistRepository.java @@ -16,5 +16,5 @@ public interface CallTargetAudienceChecklistRepository extends JpaRepository findById(@Param("id") Long id); - List findByCallIdAndLookupDataTypeAndIsDeletedFalse(Long id, String value); + List findByCallIdAndLookupDataTypeAndIsDeletedFalse(Long id, String type); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index f518a216..1008f062 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -7,18 +7,20 @@ import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; -import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.CallResponse; public interface CallService { - CreateCallResponseBean createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest); + CallResponse createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest); - CreateCallResponseBean createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest); + CallResponse createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest); - CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest); + CallResponse updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest); - CreateCallResponseBean getCallById (Long callId); + CallResponse getCallById (Long callId); List getAllCalls(); + CallResponse validateCall(Long callId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index ab5cafaa..0dc37efd 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -7,7 +7,7 @@ import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; -import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.CallResponse; import net.gepafin.tendermanagement.service.CallService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,28 +28,28 @@ public class CallServiceImpl implements CallService { @Override @Transactional(rollbackFor = Exception.class) - public CreateCallResponseBean createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest) { + public CallResponse createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest) { Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); return callDao.createCallStep1(createCallRequest, Long.parseLong(userInfo.get("userId").toString())); } @Override @Transactional(rollbackFor = Exception.class) - public CreateCallResponseBean createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest) { + public CallResponse createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest) { Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); return callDao.createCallStep2(callId, createCallRequest, Long.parseLong(userInfo.get("userId").toString())); } @Override @Transactional(rollbackFor = Exception.class) - public CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, + public CallResponse updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest) { Map userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); return callDao.updateCallStep1(callId, updateCallRequest, Long.parseLong(userInfo.get("userId").toString())); } @Override @Transactional(readOnly = true) - public CreateCallResponseBean getCallById(Long callId) { + public CallResponse getCallById(Long callId) { return callDao.getCallById(callId); } @@ -59,4 +59,10 @@ public class CallServiceImpl implements CallService { return callDao.getAllCalls(); } + + @Override + @Transactional(rollbackFor = Exception.class) + public CallResponse validateCall(Long callId) { + return callDao.validateCall(callDao.validateCall(callId)); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallValidatorServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallValidatorServiceImpl.java new file mode 100644 index 00000000..d2079cdf --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallValidatorServiceImpl.java @@ -0,0 +1,31 @@ +package net.gepafin.tendermanagement.service.impl; + +import net.gepafin.tendermanagement.model.response.CallResponse; +import net.gepafin.tendermanagement.util.FieldValidator; + +public class CallValidatorServiceImpl { + + public static void validateResponse(CallResponse response) { + FieldValidator.create() + .notNull(response.getId(), "id") + .notNull(response.getName(), "name") + .notNull(response.getDescriptionShort(), "descriptionShort") + .notNull(response.getDescriptionLong(), "descriptionLong") + .notNull(response.getStartDate(), "startDate") + .notNull(response.getEndDate(), "endDate") + .notNull(response.getStatus(), "status") + .notNull(response.getRegionId(), "regionId") + .notNull(response.getAmount(), "amount") + .notNull(response.getAmountMax(), "amountMax") + .notNull(response.getThreshold(), "threshold") + .notNull(response.getDocumentationReqested(), "documentationReqested") + .notEmpty(response.getAimedTo(), "aimedTo") + .notEmpty(response.getCriteria(), "criteria") + .notEmpty(response.getDocs(), "docs") + .notEmpty(response.getFaq(), "faq") + .notEmpty(response.getImages(), "images") + .notEmpty(response.getCheckList(), "checkList") + .validate(); + } + +} diff --git a/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java new file mode 100644 index 00000000..e57909d2 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java @@ -0,0 +1,40 @@ +package net.gepafin.tendermanagement.util; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import net.gepafin.tendermanagement.config.Translator; +import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import net.gepafin.tendermanagement.web.rest.api.errors.ValidationException; + +public class FieldValidator { + + private final List errors = new ArrayList<>(); + + public static FieldValidator create() { + return new FieldValidator(); + } + + public FieldValidator notNull(Object object, String fieldName) { + if (Objects.isNull(object)) { + errors.add(MessageFormat.format(Translator.toLocale(GepafinConstant.FIELD_NOT_NULL), fieldName)); + } + return this; + } + + public FieldValidator notEmpty(List list, String fieldName) { + if (list == null || list.isEmpty()) { + errors.add(MessageFormat.format(Translator.toLocale(GepafinConstant.FIELD_NOT_EMPTY), fieldName)); + } + return this; + } + + public void validate() { + if (!errors.isEmpty()) { + throw new ValidationException(Status.VALIDATION_ERROR, errors); + } + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java index 02ffc988..1b4771a8 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/CallApi.java @@ -23,7 +23,7 @@ import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; -import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.CallResponse; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; @@ -42,7 +42,7 @@ public interface CallApi { }) @PostMapping(value = "/step1", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") - public ResponseEntity> createCallStep1(HttpServletRequest request, + public ResponseEntity> createCallStep1(HttpServletRequest request, @Parameter(description = "Call request object", required = true) @Valid @RequestBody CreateCallRequestStep1 createCallRequest); @@ -58,7 +58,7 @@ public interface CallApi { }) @PutMapping(value = "/step2/{callId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") - public ResponseEntity> createCallStep2(HttpServletRequest request, + public ResponseEntity> createCallStep2(HttpServletRequest request, @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId, @Parameter(description = "Call request object", required = true) @Valid @RequestBody CreateCallRequestStep2 createCallRequest); @@ -74,7 +74,7 @@ public interface CallApi { }) @PutMapping(value = "/step1/{callId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") - public ResponseEntity> updateCallStep1(HttpServletRequest request, + public ResponseEntity> updateCallStep1(HttpServletRequest request, @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId, @Parameter(description = "Call request object", required = true) @Valid @RequestBody UpdateCallRequestStep1 updateCallRequest); @Operation(summary = "Api to get call by id", @@ -88,8 +88,10 @@ public interface CallApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{callId}", produces = { "application/json" }) - ResponseEntity> getCallById( + ResponseEntity> getCallById( @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + + @Operation(summary = "Api to get all calls", responses = { @ApiResponse(responseCode = "200", description = "OK"), @@ -102,5 +104,21 @@ public interface CallApi { @GetMapping(value = "", produces = { "application/json" }) ResponseEntity>> getAllCalls(); + + + @Operation(summary = "Api to validate call", + 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) })) + }) + @PostMapping(value = "/validate/{callId}", produces = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + public ResponseEntity> validateCall(HttpServletRequest request, + @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java index 41bfbc92..c102f42a 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationCriteriaApi.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.*; public interface EvaluationCriteriaApi { - @Operation(summary = "API to create evaluation criteria", + @Operation(summary = "Api to create evaluation criteria", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -28,12 +28,12 @@ public interface EvaluationCriteriaApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) - @PostMapping(value = "/criteria", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) ResponseEntity> createEvaluationCriteria(HttpServletRequest request, @Parameter(description = "Evaluation criteria request object", required = true) @Valid @RequestBody EvaluationCriteriaRequest createCallRequest); - @Operation(summary = "API to get evaluation criteria by id", + @Operation(summary = "Api to get evaluation criteria by id", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -41,7 +41,7 @@ public interface EvaluationCriteriaApi { @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })) }) - @GetMapping(value = "/criteria/{id}", produces = MediaType.APPLICATION_JSON_VALUE) + @GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) ResponseEntity> getEvaluationCriteriaById(HttpServletRequest request, @Parameter(description = "evaluation criteria id", required = true) @PathVariable Long id); @@ -56,7 +56,7 @@ public interface EvaluationCriteriaApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) - @PutMapping(value = "/criteria/{id}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PutMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) ResponseEntity> updateEvaluationCriteria(HttpServletRequest request, @Parameter(description = "evaluation criteria id", required = true) @PathVariable Long id, @@ -71,7 +71,7 @@ public interface EvaluationCriteriaApi { @ApiResponse(responseCode = "401", description = "Unauthorized", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })) }) - @DeleteMapping(value = "/criteria/{id}", produces = MediaType.APPLICATION_JSON_VALUE) + @DeleteMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) ResponseEntity deleteEvaluationCriteria(HttpServletRequest request, @Parameter(description = "evaluation criteria id", required = true) @PathVariable Long id); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ValidationException.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ValidationException.java new file mode 100644 index 00000000..855177db --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/errors/ValidationException.java @@ -0,0 +1,27 @@ +package net.gepafin.tendermanagement.web.rest.api.errors; + +import java.util.List; + +public class ValidationException extends CustomValidationException { + + private final Status status; + private static final long serialVersionUID = 1L; + private final List errors; + + public ValidationException(Status status, List errors) { + super(status, errors.toString()); + this.errors = errors; + this.status = status; + } + + + public List getErrors() { + return errors; + } + + public Status getStatus() { + return status; + } + + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 176b6c49..7c96aa7e 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java @@ -16,7 +16,7 @@ import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; -import net.gepafin.tendermanagement.model.response.CreateCallResponseBean; +import net.gepafin.tendermanagement.model.response.CallResponse; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.web.rest.api.CallApi; @@ -33,31 +33,31 @@ public class CallApiController implements CallApi { @Override @Transactional(rollbackFor=Exception.class) - public ResponseEntity> createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest) { - CreateCallResponseBean createCallResponseBean = callService.createCallStep1(request, createCallRequest); + public ResponseEntity> createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest) { + CallResponse createCallResponseBean = callService.createCallStep1(request, createCallRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_CREATED_SUCCESSFULLY_MSG))); } @Override @Transactional(rollbackFor=Exception.class) - public ResponseEntity> createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest) { - CreateCallResponseBean createCallResponseBean = callService.createCallStep2(request, callId, createCallRequest); + public ResponseEntity> createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest) { + CallResponse createCallResponseBean = callService.createCallStep2(request, callId, createCallRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_CREATED_SUCCESSFULLY_MSG))); } @Override @Transactional(rollbackFor=Exception.class) - public ResponseEntity> updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest) { - CreateCallResponseBean createCallResponseBean = callService.updateCallStep1(request, callId, updateCallRequest); + public ResponseEntity> updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest) { + CallResponse createCallResponseBean = callService.updateCallStep1(request, callId, updateCallRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_UPDATE_SUCCESSFULLY_MSG))); } @Override @Transactional(readOnly = true) - public ResponseEntity> getCallById(Long callId) { - CreateCallResponseBean createCallResponseBean = callService.getCallById(callId); + public ResponseEntity> getCallById(Long callId) { + CallResponse createCallResponseBean = callService.getCallById(callId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); } @@ -71,4 +71,11 @@ public class CallApiController implements CallApi { .body(new Response<>(calls, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); } + @Override + public ResponseEntity> validateCall(HttpServletRequest request, Long callId) { + CallResponse call = callService.validateCall(callId); + + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(call, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); + } } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java index 7ee581e2..6c6286ae 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationCriteriaApiController.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("${openapi.gepafin.base-path:/v1/evaluation}") +@RequestMapping("${openapi.gepafin.base-path:/v1/evaluationCriteria}") public class EvaluationCriteriaApiController implements EvaluationCriteriaApi { @Autowired diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java index 79fae0de..eb29c622 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/LookUpDataApiController.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("${openapi.gepafin.base-path:/v1/lookupdata}") +@RequestMapping("${openapi.gepafin.base-path:/v1/lookUpData}") public class LookUpDataApiController implements LookUpDataApi { @Autowired diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index b09ba35e..17154713 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -49,6 +49,8 @@ call.update.successfully=Call updated successfully. call.fetch.success=Call details fetched successfully. call.not.found=Call not found. score.not.null=Score cannot be null or cannot be zero. +field.not.null={0} cannot be null. +field.not.empty={0} cannot be empty. # Login-related messages login.successfully=Login successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index eeb33a23..43fd781d 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -48,6 +48,8 @@ call.update.successfully=Chiamata aggiornata con successo. call.fetch.success=Dettagli della chiamata recuperati con successo. call.not.found=Chiamata non trovata. score.not.null=Il punteggio non puļæ½ essere nullo o zero. +field.not.null={0} non puņ essere nullo. +field.not.empty=la {0} non puņ essere vuota. # Login-related messages login.successfully=Accesso effettuato con successo. From 1b9359971acac1e21d4df8a5489a804948727eeb Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 28 Aug 2024 12:46:41 +0530 Subject: [PATCH 10/12] updated code --- .../tendermanagement/dao/DocumentDao.java | 175 +++++++++--------- .../web/rest/api/LookUpDataApi.java | 10 +- 2 files changed, 96 insertions(+), 89 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java b/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java index 9c7804ba..3a0b1b9b 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/DocumentDao.java @@ -29,97 +29,104 @@ import java.util.List; @Component public class DocumentDao { - @Autowired - private AmazonS3Service amazonS3Service; + @Autowired + private AmazonS3Service amazonS3Service; - @Autowired - private DocumentRepository documentRepository; + @Autowired + private DocumentRepository documentRepository; - @Autowired - private CallDao callDao; + @Autowired + private CallDao callDao; - @Autowired - private CallRepository callRepository; + @Autowired + private CallRepository callRepository; - public List uploadFiles(List files,Long callId, DocumentTypeEnum fileType) { - List documentEntities = new ArrayList<>(); - CallEntity callEntity=callRepository.findById(callId).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); - for (MultipartFile file : files) { - try { - uploadFileOnAmazonS3 result = uploadFileOnAmazonS3(file); - if(result!=null) { - DocumentEntity documentEntity = new DocumentEntity(); - documentEntity.setFileName(result.fileName()); - documentEntity.setCall(callEntity); - documentEntity.setType(fileType.getValue()); - documentEntity.setFilePath(result.filepath()); - documentEntity.setIsDeleted(false); - documentEntities.add(documentEntity); - } - } catch (IOException e) {} - } - documentRepository.saveAll(documentEntities); - return documentEntities.stream() - .map(callDao::convertToDocumentResponseBean) - .collect(Collectors.toList()); - } + public List uploadFiles(List files, Long callId, DocumentTypeEnum fileType) { + List documentEntities = new ArrayList<>(); + CallEntity callEntity = callRepository.findById(callId) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND))); + for (MultipartFile file : files) { + try { + uploadFileOnAmazonS3 result = uploadFileOnAmazonS3(file); + if (result != null) { + DocumentEntity documentEntity = new DocumentEntity(); + documentEntity.setFileName(result.fileName()); + documentEntity.setCall(callEntity); + documentEntity.setType(fileType.getValue()); + documentEntity.setFilePath(result.filepath()); + documentEntity.setIsDeleted(false); + documentEntities.add(documentEntity); + } + } catch (IOException e) { + } + } + documentRepository.saveAll(documentEntities); + return documentEntities.stream().map(callDao::convertToDocumentResponseBean).collect(Collectors.toList()); + } - private uploadFileOnAmazonS3 uploadFileOnAmazonS3(MultipartFile file) throws IOException { - String extension = FilenameUtils.getExtension(file.getOriginalFilename()); - String fileName = StringUtils.cleanPath(file.getOriginalFilename()); - String firstNameContain = fileName.substring(0, fileName.lastIndexOf('.')); - fileName = (firstNameContain + "." + extension); - String filepath = amazonS3Service.upload(fileName, file); - uploadFileOnAmazonS3 result = new uploadFileOnAmazonS3(fileName, filepath); - return result; - } + private uploadFileOnAmazonS3 uploadFileOnAmazonS3(MultipartFile file) throws IOException { + String extension = FilenameUtils.getExtension(file.getOriginalFilename()); + String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + String firstNameContain = fileName.substring(0, fileName.lastIndexOf('.')); + fileName = (firstNameContain + "." + extension); + String filepath = amazonS3Service.upload(fileName, file); + uploadFileOnAmazonS3 result = new uploadFileOnAmazonS3(fileName, filepath); + return result; + } - private record uploadFileOnAmazonS3(String fileName, String filepath) { - } + private record uploadFileOnAmazonS3(String fileName, String filepath) { + } - public void deleteFile(Long documentId){ - DocumentEntity documentEntity = getDocumentEntity(documentId); - String fileName= Utils.extractFileName(documentEntity.getFilePath()); - deleteFileOnAmazonS3(fileName); - documentRepository.delete(documentEntity); - } + public void deleteFile(Long documentId) { + DocumentEntity documentEntity = getDocumentEntity(documentId); +// String fileName= Utils.extractFileName(documentEntity.getFilePath()); +// deleteFileOnAmazonS3(fileName); + documentEntity.setIsDeleted(true); + documentRepository.save(documentEntity); + } - private DocumentEntity deleteFileOnAmazonS3(String fileName) { - try { - amazonS3Service.delete(fileName); - }catch (Exception e){} - return null; - } + private DocumentEntity deleteFileOnAmazonS3(String fileName) { + try { + amazonS3Service.delete(fileName); + } catch (Exception e) { + } + return null; + } - private DocumentEntity getDocumentEntity(Long documentId) { - Optional documentEntity= documentRepository.findById(documentId); - if(documentEntity.isEmpty()){ - throw new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND)); - } - return documentEntity.orElse(null); - } + private DocumentEntity getDocumentEntity(Long documentId) { + Optional documentEntity = documentRepository.findById(documentId); + if (documentEntity.isEmpty()) { + throw new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND)); + } + return documentEntity.orElse(null); + } - public DocumentResponseBean updateDocument(Long documentId, MultipartFile file, DocumentTypeEnum documentTypeEnum){ - DocumentEntity documentEntity = getDocumentEntity(documentId); - String fileName= Utils.extractFileName(documentEntity.getFilePath()); - deleteFileOnAmazonS3(fileName); - uploadFileOnAmazonS3 result= null; - try { - result = uploadFileOnAmazonS3(file); - } catch (IOException e) {} - if(result!=null){ - documentEntity.setFilePath(result.filepath); - documentEntity.setFileName(result.fileName); - documentEntity.setType(documentTypeEnum.getValue()); - documentRepository.save(documentEntity); - } - return callDao.convertToDocumentResponseBean(documentEntity); - } - public DocumentResponseBean getDocument(Long documentId) { - Optional documentEntity= documentRepository.findById(documentId); - if(documentEntity.isEmpty()){ - new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND)); - } - return callDao.convertToDocumentResponseBean(documentEntity.orElse(null)); - } - } + public DocumentResponseBean updateDocument(Long documentId, MultipartFile file, DocumentTypeEnum documentTypeEnum) { + DocumentEntity documentEntity = getDocumentEntity(documentId); + String fileName = Utils.extractFileName(documentEntity.getFilePath()); + deleteFileOnAmazonS3(fileName); + uploadFileOnAmazonS3 result = null; + try { + result = uploadFileOnAmazonS3(file); + } catch (IOException e) { + } + if (result != null) { + documentEntity.setFilePath(result.filepath); + documentEntity.setFileName(result.fileName); + documentEntity.setType(documentTypeEnum.getValue()); + documentRepository.save(documentEntity); + } + return callDao.convertToDocumentResponseBean(documentEntity); + } + + public DocumentResponseBean getDocument(Long documentId) { + Optional documentEntity = documentRepository.findById(documentId); + if (documentEntity.isEmpty()) { + new ResourceNotFoundException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.DOCUMENT_NOT_FOUND)); + } + return callDao.convertToDocumentResponseBean(documentEntity.orElse(null)); + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java index b0670e4b..5497d9a4 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/LookUpDataApi.java @@ -19,7 +19,7 @@ import java.util.List; public interface LookUpDataApi { - @Operation(summary = "API to create LookUp Data", + @Operation(summary = "Api to create LookUp Data", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -31,7 +31,7 @@ public interface LookUpDataApi { @PostMapping(value = "", consumes = "application/json", produces = "application/json") ResponseEntity> createLookUpData(HttpServletRequest request, @Valid @RequestBody LookUpDataRequest lookUpDataReq); - @Operation(summary = "API to get LookUp Data by id", + @Operation(summary = "Api to get LookUp Data by id", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -43,7 +43,7 @@ public interface LookUpDataApi { @GetMapping(value = "/{id}", produces = "application/json") ResponseEntity> getLookUpDataById(HttpServletRequest request, @PathVariable Long id); - @Operation(summary = "API to update LookUp Data", + @Operation(summary = "Api to update LookUp Data", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -55,7 +55,7 @@ public interface LookUpDataApi { @PutMapping(value = "/{id}", consumes = "application/json", produces = "application/json") ResponseEntity> updateLookUpData(HttpServletRequest request, @PathVariable Long id, @Valid @RequestBody LookUpDataRequest lookUpDataReq); - @Operation(summary = "API to delete LookUp Data", + @Operation(summary = "Api to delete LookUp Data", responses = { @ApiResponse(responseCode = "204", description = "No Content"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @@ -67,7 +67,7 @@ public interface LookUpDataApi { @DeleteMapping(value = "/{id}") ResponseEntity> deleteLookUpData(HttpServletRequest request, @PathVariable Long id); - @Operation(summary = "API to get LookUp Data by type", + @Operation(summary = "Api to get LookUp Data by type", responses = { @ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { From 5a481e891df3d07d8f117c14ba076b3e42c75452 Mon Sep 17 00:00:00 2001 From: harish Date: Wed, 28 Aug 2024 12:47:59 +0530 Subject: [PATCH 11/12] Updated code --- .../gepafin/tendermanagement/dao/EvaluationCriteriaDao.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java index 40fad056..ab5c25b2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationCriteriaDao.java @@ -75,6 +75,9 @@ public class EvaluationCriteriaDao { response.setScore(entity.getScore()); response.setCreatedDate(entity.getCreatedDate()); response.setUpdatedDate(entity.getUpdatedDate()); + response.setLookUpDataId(entity.getLookupData().getId()); + response.setTitle(entity.getLookupData().getTitle()); + response.setValue(entity.getLookupData().getValue()); return response; } } From 4be413124103ca3ab9a93fc9673e1a855a55519c Mon Sep 17 00:00:00 2001 From: rajesh Date: Wed, 28 Aug 2024 12:52:30 +0530 Subject: [PATCH 12/12] updated code --- .../java/net/gepafin/tendermanagement/enums/CallStatusEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java index b1befe86..c31e407f 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/CallStatusEnum.java @@ -6,7 +6,7 @@ public enum CallStatusEnum { DRAFT("DRAFT"), PUBLISH("PUBLISH"), - EXPIRE("EXPIRE"), + EXPIRE("EXPIRED"), READY_TO_PUBLISH("READY_TO_PUBLISH"); private String value;