From f561695db04510b0382235570739715859ac1949 Mon Sep 17 00:00:00 2001 From: rajesh Date: Tue, 27 Aug 2024 11:30:32 +0530 Subject: [PATCH] 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.