created api to update the call

This commit is contained in:
rajesh
2024-08-27 11:30:32 +05:30
parent c55ca10d03
commit f561695db0
22 changed files with 458 additions and 285 deletions

View File

@@ -45,6 +45,8 @@ public class GepafinConstant {
public static final String INVALID_DATE_MSG = "call.invalid.date"; public static final String INVALID_DATE_MSG = "call.invalid.date";
public static final String STEP_1 = "STEP_1"; public static final String STEP_1 = "STEP_1";
public static final String STEP_2 = "STEP_2"; 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";
} }

View File

@@ -24,12 +24,14 @@ import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum
import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.RegionEntity;
import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.enums.CallTypeEnum; 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.CreateCallRequestStep1;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2;
import net.gepafin.tendermanagement.model.request.DocumentReq; import net.gepafin.tendermanagement.model.request.DocumentReq;
import net.gepafin.tendermanagement.model.request.EvaluationCriteriaReq; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaReq;
import net.gepafin.tendermanagement.model.request.FaqReq; import net.gepafin.tendermanagement.model.request.FaqReq;
import net.gepafin.tendermanagement.model.request.LookUpDataReq; 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.CreateCallResponseBean;
import net.gepafin.tendermanagement.model.response.DocumentResponseBean; import net.gepafin.tendermanagement.model.response.DocumentResponseBean;
import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean;
@@ -48,6 +50,8 @@ 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.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
@Component @Component
public class CallDao { public class CallDao {
@@ -89,12 +93,12 @@ public class CallDao {
} }
public CallEntity convertToCallEntity(CreateCallRequestStep1 createCallRequest) { public CallEntity convertToCallEntity(CreateCallRequestStep1 createCallRequest) {
CallEntity callEntity = new CallEntity(); CallEntity callEntity = new CallEntity();
validateCallEntity(createCallRequest); validateCallEntity(createCallRequest);
RegionEntity region = regionRepository.findById(createCallRequest.getRegionId()) RegionEntity region = regionRepository.findById(createCallRequest.getRegionId())
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND))); .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.REGION_NOT_FOUND)));
callEntity.setRegion(region); callEntity.setRegion(region);
callEntity.setName(createCallRequest.getName()); callEntity.setName(createCallRequest.getName());
callEntity.setDescriptionShort(createCallRequest.getDescriptionShort()); callEntity.setDescriptionShort(createCallRequest.getDescriptionShort());
@@ -113,25 +117,44 @@ public class CallDao {
return callEntity; return callEntity;
} }
public List<EvaluationCriteriaEntity> convertToEvaluationCriteriaEntities(List<EvaluationCriteriaReq> criteriaReqList, CallEntity callEntity) { public List<EvaluationCriteriaEntity> convertToEvaluationCriteriaEntities(
List<EvaluationCriteriaEntity> evaluationCriteriaEntities = criteriaReqList.stream().map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList()); List<EvaluationCriteriaReq> criteriaReqList, CallEntity callEntity) {
List<EvaluationCriteriaEntity> evaluationCriteriaEntities = criteriaReqList.stream()
.map(req -> convertToEvaluationCriteriaEntity(req, callEntity)).collect(Collectors.toList());
evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities); evaluationCriteriaRepository.saveAll(evaluationCriteriaEntities);
return evaluationCriteriaEntities; return evaluationCriteriaEntities;
} }
private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq, CallEntity callEntity) { private EvaluationCriteriaEntity convertToEvaluationCriteriaEntity(EvaluationCriteriaReq criteriaReq,
CallEntity callEntity) {
EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity(); EvaluationCriteriaEntity criteriaEntity = new EvaluationCriteriaEntity();
validateEvolutionCrieteriaEntity(criteriaReq.getName()); LookUpDataEntity lookUpDataEntity = getOrCreateLookUpData(criteriaReq, LookUpDataTypeEnum.EVALUATION_CRITERIA);
criteriaEntity.setName(criteriaReq.getName()); criteriaEntity.setLookupData(lookUpDataEntity);
criteriaEntity.setDescription(criteriaReq.getValue());
criteriaEntity.setScore(criteriaReq.getScore()); criteriaEntity.setScore(criteriaReq.getScore());
criteriaEntity.setCall(callEntity); criteriaEntity.setCall(callEntity);
return criteriaEntity; 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<DocumentEntity> convertToDocumentEntities(List<DocumentReq> documentReqList, CallEntity callEntity) { public List<DocumentEntity> convertToDocumentEntities(List<DocumentReq> documentReqList, CallEntity callEntity) {
List<DocumentEntity> documentEntities = documentReqList.stream().map(req -> convertToDocumentEntity(req, callEntity)).collect(Collectors.toList()); List<DocumentEntity> documentEntities = documentReqList.stream()
.map(req -> convertToDocumentEntity(req, callEntity)).collect(Collectors.toList());
documentRepository.saveAll(documentEntities); documentRepository.saveAll(documentEntities);
return documentEntities; return documentEntities;
} }
@@ -150,9 +173,9 @@ public class CallDao {
return documentEntity; return documentEntity;
} }
public List<FaqEntity> convertToFaqEntities(List<FaqReq> faqReqList, CallEntity callEntity, Long userId) { public List<FaqEntity> convertToFaqEntities(List<FaqReq> faqReqList, CallEntity callEntity, Long userId) {
List<FaqEntity> faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId)).collect(Collectors.toList()); List<FaqEntity> faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId))
.collect(Collectors.toList());
faqRepository.saveAll(faqEntities); faqRepository.saveAll(faqEntities);
return faqEntities; return faqEntities;
} }
@@ -161,7 +184,8 @@ public class CallDao {
FaqEntity faqEntity = new FaqEntity(); FaqEntity faqEntity = new FaqEntity();
validateFaqEntity(faqReq.getQuestion()); validateFaqEntity(faqReq.getQuestion());
UserEntity userEntity = userRepository.findById(userId) UserEntity userEntity = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG)));
faqEntity.setUser(userEntity); faqEntity.setUser(userEntity);
faqEntity.setIsVisible(true); faqEntity.setIsVisible(true);
if (faqReq.getIsVisible() != null) { if (faqReq.getIsVisible() != null) {
@@ -180,13 +204,15 @@ public class CallDao {
public void validateFaqEntity(String question) { public void validateFaqEntity(String question) {
if (!StringUtils.hasText(question)) { if (!StringUtils.hasText(question)) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.QUESTION_NOT_EMPTY_MSG)); throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.QUESTION_NOT_EMPTY_MSG));
} }
} }
public void validateDocumentEntity(Long documentId, String name) { public void validateDocumentEntity(Long documentId, String name) {
if (documentId == null) { if (documentId == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR,Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND)); throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND));
} }
// if (!StringUtils.hasText(name)) { // if (!StringUtils.hasText(name)) {
@@ -196,22 +222,29 @@ public class CallDao {
public void validateEvolutionCrieteriaEntity(String name) { public void validateEvolutionCrieteriaEntity(String name) {
if (!StringUtils.hasText(name)) { if (!StringUtils.hasText(name)) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG)); throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG));
} }
} }
public void validateCallEntity(CreateCallRequestStep1 createCallRequest) { public void validateCallEntity(CreateCallRequestStep1 createCallRequest) {
if (createCallRequest.getRegionId() == null) { if (createCallRequest.getRegionId() == null) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REGION_NOT_FOUND_MSG)); 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) { if (createCallRequest.getAmount().compareTo(BigDecimal.ZERO) <= 0
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.AMOUNT_GREATER_THAN_ZERO_MSG)); || 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())) { if (createCallRequest.getStartDate().toLocalDate().isBefore(LocalDate.now())
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_DATE_MSG)); || createCallRequest.getEndDate().toLocalDate().isBefore(LocalDate.now())) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_DATE_MSG));
} }
} }
public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) { public CreateCallResponseBean convertToCallResponseBean(CallEntity callEntity) {
CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean(); CreateCallResponseBean createCallResponseBean = new CreateCallResponseBean();
createCallResponseBean.setId(callEntity.getId()); createCallResponseBean.setId(callEntity.getId());
@@ -232,16 +265,19 @@ public class CallDao {
createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate()); createCallResponseBean.setUpdatedDate(callEntity.getUpdatedDate());
return createCallResponseBean; return createCallResponseBean;
} }
public EvaluationCriteriaResponseBean convertToEvaluationCriteriaResponseBean(EvaluationCriteriaEntity entity) { public EvaluationCriteriaResponseBean convertToEvaluationCriteriaResponseBean(EvaluationCriteriaEntity entity) {
EvaluationCriteriaResponseBean responseBean = new EvaluationCriteriaResponseBean(); EvaluationCriteriaResponseBean responseBean = new EvaluationCriteriaResponseBean();
responseBean.setId(entity.getId()); responseBean.setId(entity.getId());
responseBean.setName(entity.getName()); responseBean.setLookUpDataId(entity.getLookupData().getId());
responseBean.setDescription(entity.getDescription()); responseBean.setTitle(entity.getLookupData().getTitle());
responseBean.setValue(entity.getLookupData().getValue());
responseBean.setScore(entity.getScore()); responseBean.setScore(entity.getScore());
responseBean.setCreatedDate(entity.getCreatedDate()); responseBean.setCreatedDate(entity.getCreatedDate());
responseBean.setUpdatedDate(entity.getUpdatedDate()); responseBean.setUpdatedDate(entity.getUpdatedDate());
return responseBean; return responseBean;
} }
public DocumentResponseBean convertToDocumentResponseBean(DocumentEntity entity) { public DocumentResponseBean convertToDocumentResponseBean(DocumentEntity entity) {
DocumentResponseBean responseBean = new DocumentResponseBean(); DocumentResponseBean responseBean = new DocumentResponseBean();
responseBean.setId(entity.getId()); responseBean.setId(entity.getId());
@@ -252,6 +288,7 @@ public class CallDao {
responseBean.setUpdatedDate(entity.getUpdatedDate()); responseBean.setUpdatedDate(entity.getUpdatedDate());
return responseBean; return responseBean;
} }
public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) { public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) {
FaqResponseBean responseBean = new FaqResponseBean(); FaqResponseBean responseBean = new FaqResponseBean();
responseBean.setId(entity.getId()); responseBean.setId(entity.getId());
@@ -265,28 +302,23 @@ public class CallDao {
responseBean.setUpdatedDate(entity.getUpdatedDate()); responseBean.setUpdatedDate(entity.getUpdatedDate());
return responseBean; return responseBean;
} }
public CreateCallResponseBean assembleCreateCallResponseBean(
CallEntity callEntity, public CreateCallResponseBean assembleCreateCallResponseBean(CallEntity callEntity,
List<EvaluationCriteriaEntity> evaluationCriteriaEntities, List<EvaluationCriteriaEntity> evaluationCriteriaEntities, List<DocumentEntity> documentEntities,
List<DocumentEntity> documentEntities,
List<FaqEntity> faqEntities, List<DocumentEntity> images) { List<FaqEntity> faqEntities, List<DocumentEntity> images) {
CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity); CreateCallResponseBean callResponseBean = convertToCallResponseBean(callEntity);
List<EvaluationCriteriaResponseBean> evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream() List<EvaluationCriteriaResponseBean> evaluationCriteriaResponseBeans = evaluationCriteriaEntities.stream()
.map(this::convertToEvaluationCriteriaResponseBean) .map(this::convertToEvaluationCriteriaResponseBean).collect(Collectors.toList());
.collect(Collectors.toList());
List<DocumentResponseBean> documentResponseBeans = documentEntities.stream() List<DocumentResponseBean> documentResponseBeans = documentEntities.stream()
.map(this::convertToDocumentResponseBean) .map(this::convertToDocumentResponseBean).collect(Collectors.toList());
List<FaqResponseBean> faqResponseBeans = faqEntities.stream().map(this::convertToFaqResponseBean)
.collect(Collectors.toList()); .collect(Collectors.toList());
List<FaqResponseBean> faqResponseBeans = faqEntities.stream() List<DocumentResponseBean> imagesResponseBean = images.stream().map(this::convertToDocumentResponseBean)
.map(this::convertToFaqResponseBean)
.collect(Collectors.toList());
List<DocumentResponseBean> imagesResponseBean = images.stream()
.map(this::convertToDocumentResponseBean)
.collect(Collectors.toList()); .collect(Collectors.toList());
CreateCallResponseBean createCallResponseBean = callResponseBean; CreateCallResponseBean createCallResponseBean = callResponseBean;
createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans); createCallResponseBean.setCriteria(evaluationCriteriaResponseBeans);
@@ -295,30 +327,34 @@ public class CallDao {
createCallResponseBean.setImages(imagesResponseBean); createCallResponseBean.setImages(imagesResponseBean);
return createCallResponseBean; return createCallResponseBean;
} }
public List<LookUpDataResponse> convertLookUpDataEntities(List<LookUpDataReq> lookUpData, CallEntity callEntity, LookUpDataEntity.LookUpDataTypeEnum type) {
public List<LookUpDataResponse> convertLookUpDataEntities(List<LookUpDataReq> lookUpData, CallEntity callEntity,
LookUpDataEntity.LookUpDataTypeEnum type) {
List<LookUpDataEntity> lookUpDataEntities = lookUpData.stream() List<LookUpDataEntity> lookUpDataEntities = lookUpData.stream()
.map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)) .map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)).collect(Collectors.toList());
.collect(Collectors.toList());
lookUpDataRepository.saveAll(lookUpDataEntities); lookUpDataRepository.saveAll(lookUpDataEntities);
return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities); return createCallTargetAudienceCheckList(callEntity, lookUpDataEntities);
} }
private List<LookUpDataResponse> createCallTargetAudienceCheckList(CallEntity callEntity, List<LookUpDataEntity> lookUpDataEntities) { private List<LookUpDataResponse> createCallTargetAudienceCheckList(CallEntity callEntity,
List<LookUpDataEntity> lookUpDataEntities) {
List<LookUpDataResponse> lookUpDataResponses = new ArrayList<>(); List<LookUpDataResponse> lookUpDataResponses = new ArrayList<>();
for (LookUpDataEntity lookUpDataEntity : lookUpDataEntities) { for (LookUpDataEntity lookUpDataEntity : lookUpDataEntities) {
CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity = new CallTargetAudienceChecklistEntity(); CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity = new CallTargetAudienceChecklistEntity();
callTargetAudienceChecklistEntity.setIsValidated(false); callTargetAudienceChecklistEntity.setIsValidated(false);
callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity); callTargetAudienceChecklistEntity.setLookupData(lookUpDataEntity);
callTargetAudienceChecklistEntity.setCall(callEntity); callTargetAudienceChecklistEntity.setCall(callEntity);
callTargetAudienceChecklistEntity= callTargetAudienceChecklistRepository.save(callTargetAudienceChecklistEntity); callTargetAudienceChecklistEntity = callTargetAudienceChecklistRepository
.save(callTargetAudienceChecklistEntity);
lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity)); lookUpDataResponses.add(convertToLookUpDataResponseBean(callTargetAudienceChecklistEntity));
} }
return lookUpDataResponses; return lookUpDataResponses;
} }
private LookUpDataEntity convertLookUpDataRequestIntoLookUpDataEntity(LookUpDataReq req, LookUpDataEntity.LookUpDataTypeEnum type) { private LookUpDataEntity convertLookUpDataRequestIntoLookUpDataEntity(LookUpDataReq req,
LookUpDataEntity.LookUpDataTypeEnum type) {
if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) { if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) {
LookUpDataEntity newEntity = new LookUpDataEntity(); LookUpDataEntity newEntity = new LookUpDataEntity();
newEntity.setValue(req.getValue()); newEntity.setValue(req.getValue());
@@ -327,27 +363,33 @@ public class CallDao {
} }
return lookUpDataRepository.findById(req.getLookUpDataId()) return lookUpDataRepository.findById(req.getLookUpDataId())
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG))); .orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG)));
} }
public LookUpDataResponse convertToLookUpDataResponseBean(CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) { public LookUpDataResponse convertToLookUpDataResponseBean(
CallTargetAudienceChecklistEntity callTargetAudienceChecklistEntity) {
LookUpDataResponse lookUpDataResponse = new LookUpDataResponse(); LookUpDataResponse lookUpDataResponse = new LookUpDataResponse();
LookUpDataEntity lookUpDataEntity = callTargetAudienceChecklistEntity.getLookupData(); LookUpDataEntity lookUpDataEntity = callTargetAudienceChecklistEntity.getLookupData();
lookUpDataResponse.setId(callTargetAudienceChecklistEntity.getId()); lookUpDataResponse.setId(callTargetAudienceChecklistEntity.getId());
lookUpDataResponse.setLookUpDataId(lookUpDataEntity.getId()); lookUpDataResponse.setLookUpDataId(lookUpDataEntity.getId());
lookUpDataResponse.setValue(lookUpDataEntity.getValue()); lookUpDataResponse.setValue(lookUpDataEntity.getValue());
lookUpDataResponse.setTitle(lookUpDataEntity.getTitle()); lookUpDataResponse.setTitle(lookUpDataEntity.getTitle());
lookUpDataResponse.setCreatedDate(lookUpDataEntity.getCreatedDate()); lookUpDataResponse.setCreatedDate(callTargetAudienceChecklistEntity.getCreatedDate());
lookUpDataResponse.setUpdatedDate(lookUpDataEntity.getUpdatedDate()); lookUpDataResponse.setUpdatedDate(callTargetAudienceChecklistEntity.getUpdatedDate());
return lookUpDataResponse; 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) { public CreateCallResponseBean createCallStep2(CreateCallRequestStep2 createCallRequest, Long userId) {
CreateCallResponseBean createCallResponseBean = null; CreateCallResponseBean createCallResponseBean = null;
CallEntity callEntity = callRepository.findById(createCallRequest.getCallId()) CallEntity callEntity = callRepository.findById(createCallRequest.getCallId())
.orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR, .orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.NAME_NOT_EMPTY_MSG))); Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)));
callEntity.setThreshold(createCallRequest.getThreshold()); callEntity.setThreshold(createCallRequest.getThreshold());
callEntity.setStatus(createCallRequest.getStatus().getValue()); callEntity.setStatus(createCallRequest.getStatus().getValue());
@@ -369,7 +411,47 @@ public class CallDao {
createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2); createCallResponseBean.setCurrentStep(GepafinConstant.STEP_2);
return createCallResponseBean; 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<DocumentEntity> documentEntities = documentRepository.findByCallIdAndType(callEntity.getId(),
DocumentTypeEnum.DOCUMENT.getValue());
List<DocumentEntity> imageEntities = documentRepository.findByCallIdAndType(callEntity.getId(),
DocumentTypeEnum.DOCUMENT.getValue());
List<FaqEntity> faqEntities = faqRepository.findByCallId(callEntity.getId());
List<LookUpDataResponse> amiedTo = callTargetAudienceChecklistRepository
.findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream()
.map(this::convertToLookUpDataResponseBean).toList();
List<LookUpDataResponse> checkList = callTargetAudienceChecklistRepository
.findByCallIdAndLookupDataType(callEntity.getId(), LookUpDataTypeEnum.CHECKLIST.getValue()).stream()
.map(this::convertToLookUpDataResponseBean).toList();
List<EvaluationCriteriaEntity> 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;
}
}

View File

@@ -4,7 +4,6 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.RegionEntity; import net.gepafin.tendermanagement.entities.RegionEntity;
import net.gepafin.tendermanagement.enums.RegionStatusEnum; import net.gepafin.tendermanagement.enums.RegionStatusEnum;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.request.RegionReq; import net.gepafin.tendermanagement.model.request.RegionReq;
import net.gepafin.tendermanagement.model.response.RegionResponseBean; import net.gepafin.tendermanagement.model.response.RegionResponseBean;
import net.gepafin.tendermanagement.repositories.RegionRepository; import net.gepafin.tendermanagement.repositories.RegionRepository;
@@ -19,7 +18,7 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
@Repository @Repository
public class RegionDao { public class RegionDao {

View File

@@ -19,7 +19,7 @@ import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
@Component @Component
public class RoleDao { public class RoleDao {

View File

@@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import static net.gepafin.tendermanagement.util.ObjectUtils.setIfUpdated; import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
@Repository @Repository
public class UserDao { public class UserDao {

View File

@@ -18,11 +18,9 @@ public class EvaluationCriteriaEntity extends BaseEntity {
@JoinColumn(name = "CALL_ID", nullable = false) @JoinColumn(name = "CALL_ID", nullable = false)
private CallEntity call; private CallEntity call;
@Column(name = "NAME", nullable = false, columnDefinition = "TEXT") @ManyToOne
private String name; @JoinColumn(name = "LOOKUP_DATA_ID")
private LookUpDataEntity lookupData;
@Column(name = "DESCRIPTION", columnDefinition = "TEXT")
private String description;
@Column(name = "SCORE", nullable = false) @Column(name = "SCORE", nullable = false)
private Integer score; private Integer score;

View File

@@ -41,7 +41,7 @@ public class CreateCallRequestStep1 {
@NotEmpty @NotEmpty
private String documentationRequested; private String documentationRequested;
private Boolean Confidi; private Boolean confidi;
private List<FaqReq> faq; private List<FaqReq> faq;

View File

@@ -3,9 +3,7 @@ package net.gepafin.tendermanagement.model.request;
import lombok.Data; import lombok.Data;
@Data @Data
public class EvaluationCriteriaReq { public class EvaluationCriteriaReq extends LookUpDataReq{
private String name;
private String value;
private Integer score; private Integer score;
} }

View File

@@ -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<LookUpDataReq> aimedTo;
private String documentationRequested;
private Boolean confidi;
private List<FaqReq> faq;
}

View File

@@ -5,17 +5,7 @@ import lombok.Data;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Data @Data
public class EvaluationCriteriaResponseBean { public class EvaluationCriteriaResponseBean extends LookUpDataResponse{
private Long id;
private String name;
private String description;
private Integer score; private Integer score;
private LocalDateTime createdDate;
private LocalDateTime updatedDate;
} }

View File

@@ -1,10 +1,15 @@
package net.gepafin.tendermanagement.repositories; package net.gepafin.tendermanagement.repositories;
import net.gepafin.tendermanagement.entities.DocumentEntity; import net.gepafin.tendermanagement.entities.DocumentEntity;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface DocumentRepository extends JpaRepository<DocumentEntity, Long> { public interface DocumentRepository extends JpaRepository<DocumentEntity, Long> {
List<DocumentEntity> findByCallIdAndType(Long callId, String type);
} }

View File

@@ -1,7 +1,12 @@
package net.gepafin.tendermanagement.repositories; package net.gepafin.tendermanagement.repositories;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
public interface EvaluationCriteriaRepository extends JpaRepository<EvaluationCriteriaEntity, Integer> { public interface EvaluationCriteriaRepository extends JpaRepository<EvaluationCriteriaEntity, Integer> {
List<EvaluationCriteriaEntity> findByCallIdAndLookupDataType(Long callId, String type);
} }

View File

@@ -2,6 +2,8 @@ package net.gepafin.tendermanagement.repositories;
import net.gepafin.tendermanagement.entities.LookUpDataEntity; import net.gepafin.tendermanagement.entities.LookUpDataEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface LookUpDataRepository extends JpaRepository<LookUpDataEntity,Long> { public interface LookUpDataRepository extends JpaRepository<LookUpDataEntity,Long> {
} }

View File

@@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.service;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; 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.CreateCallResponseBean;
public interface CallService { public interface CallService {
@@ -11,4 +12,6 @@ public interface CallService {
CreateCallResponseBean createCallStep2(HttpServletRequest request, CreateCallRequestStep2 createCallRequest); CreateCallResponseBean createCallStep2(HttpServletRequest request, CreateCallRequestStep2 createCallRequest);
CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest);
} }

View File

@@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.config.jwt.TokenProvider;
import net.gepafin.tendermanagement.dao.CallDao; import net.gepafin.tendermanagement.dao.CallDao;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; 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.CreateCallResponseBean;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -33,4 +34,11 @@ public class CallServiceImpl implements CallService {
Map<String, Object> userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request); Map<String, Object> userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request);
return callDao.createCallStep2(createCallRequest, Long.parseLong(userInfo.get("userId").toString())); return callDao.createCallStep2(createCallRequest, Long.parseLong(userInfo.get("userId").toString()));
} }
@Override
public CreateCallResponseBean updateCallStep1(HttpServletRequest request, Long callId,
UpdateCallRequestStep1 updateCallRequest) {
Map<String, Object> userInfo= tokenProvider.getUserInfoAndUserIdFromToken(request);
return callDao.updateCallStep1(callId, updateCallRequest, Long.parseLong(userInfo.get("userId").toString()));
}
} }

View File

@@ -1,20 +0,0 @@
package net.gepafin.tendermanagement.util;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class ObjectUtils {
public static <T> void setIfNotNull(Consumer<T> setter, T value) {
if (value != null) {
setter.accept(value);
}
}
public static <T> void setIfUpdated(Supplier<T> getter, Consumer<T> setter, T newValue) {
T currentValue = getter.get();
if (newValue != null && !newValue.equals(currentValue)) {
setter.accept(newValue);
}
}
}

View File

@@ -10,6 +10,8 @@ import org.slf4j.LoggerFactory;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class Utils { public class Utils {
@@ -69,4 +71,16 @@ public class Utils {
return new String(decode, StandardCharsets.UTF_8); return new String(decode, StandardCharsets.UTF_8);
} }
public static <T> void setIfNotNull(Consumer<T> setter, T value) {
if (value != null) {
setter.accept(value);
}
}
public static <T> void setIfUpdated(Supplier<T> getter, Consumer<T> setter, T newValue) {
T currentValue = getter.get();
if (newValue != null && !newValue.equals(currentValue)) {
setter.accept(newValue);
}
}
} }

View File

@@ -9,6 +9,7 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; 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.CreateCallResponseBean;
import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.model.util.Response;
import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; 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.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; 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.PostMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@@ -55,4 +57,20 @@ public interface CallApi {
@Parameter(description = "Call request object", required = true) @Parameter(description = "Call request object", required = true)
@Valid @RequestBody CreateCallRequestStep2 createCallRequest); @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<Response<CreateCallResponseBean>> 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);
} }

View File

@@ -5,6 +5,7 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1;
import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; 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.CreateCallResponseBean;
import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.model.util.Response;
import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.CallService;
@@ -41,4 +42,12 @@ public class CallApiController implements CallApi {
return ResponseEntity.status(HttpStatus.CREATED) return ResponseEntity.status(HttpStatus.CREATED)
.body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_CREATED_SUCCESSFULLY_MSG))); .body(new Response<>(createCallResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_CREATED_SUCCESSFULLY_MSG)));
} }
@Override
@Transactional(rollbackFor=Exception.class)
public ResponseEntity<Response<CreateCallResponseBean>> 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)));
}
} }

View File

@@ -395,4 +395,19 @@
<column name="country" value="Italy"/> <column name="country" value="Italy"/>
</insert> </insert>
</changeSet> </changeSet>
<changeSet id="27-08-2024_1" author="Rajesh Khore">
<dropColumn tableName="EVALUATION_CRITERIA"
columnName="name" />
<dropColumn tableName="EVALUATION_CRITERIA"
columnName="description" />
<addColumn tableName="EVALUATION_CRITERIA">
<column name="lookup_data_id" type="INTEGER">
<constraints nullable="false"
foreignKeyName="fk_lookup_data_evaluation_criteria"
references="lookup_data(id)" />
</column>
</addColumn>
</changeSet>
</databaseChangeLog> </databaseChangeLog>

View File

@@ -45,6 +45,7 @@ document.not.found=Document not found.
document.id.not.found=Document ID not found. document.id.not.found=Document ID not found.
call.created.successfully=Call created successfully. call.created.successfully=Call created successfully.
call.invalid.date=Invalid start or end date. call.invalid.date=Invalid start or end date.
call.update.successfully=Call updated successfully.
# Login-related messages # Login-related messages
login.successfully=Login successfully. login.successfully=Login successfully.

View File

@@ -44,6 +44,7 @@ file.deleted.successfully=File eliminato con successo.
document.not.found=Documento non trovato. document.not.found=Documento non trovato.
document.id.not.found=ID documento non trovato. document.id.not.found=ID documento non trovato.
call.invalid.date=Data di inizio o fine non valida. call.invalid.date=Data di inizio o fine non valida.
call.update.successfully=Chiamata aggiornata con successo.
# Login-related messages # Login-related messages
login.successfully=Accesso effettuato con successo. login.successfully=Accesso effettuato con successo.