Resolved conflicts

This commit is contained in:
rajesh
2024-08-30 18:54:16 +05:30
22 changed files with 202 additions and 143 deletions

View File

@@ -101,6 +101,6 @@ public class GepafinConstant {
public static final String STATUS_SAME_ERROR = "status.same.error";
public static final String INVALID_STATUS_CHANGE_FROM_DRAFT = "invalid.status.change.from.draft";
public static final String STATUS_CANNOT_BE_CHANGED = "status.cannot.be.changed";
public static final String INVALID_STATUS_TRANSITION = "invalid.status.transition";
public static final String PUBLISHED_CALL_NOT_UPDATE = "published.call.not.update";
}

View File

@@ -1,6 +1,5 @@
package net.gepafin.tendermanagement.dao;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -8,7 +7,6 @@ import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.response.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -78,8 +76,10 @@ public class CallDao {
private UserService userService;
public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, Long userId) {
UserEntity userEntity = userService.validateUser(userId);
createCallRequest.setRegionId(userEntity.getRoleEntity().getRegion().getId());
CallEntity callEntity = convertToCallEntity(createCallRequest);
convertToFaqEntities(createCallRequest.getFaq(), callEntity, userId);
convertToFaqEntities(createCallRequest.getFaq(), callEntity, userEntity,LookUpDataTypeEnum.FAQ);
convertLookUpDataEntities(createCallRequest.getAimedTo(), callEntity,
LookUpDataTypeEnum.AIMED_TO);
// createCallResponseBean = assembleCreateCallResponseBean(callEntity, Collections.emptyList(),
@@ -94,7 +94,7 @@ public class CallDao {
public CallEntity convertToCallEntity(CreateCallRequestStep1 createCallRequest) {
CallEntity callEntity = new CallEntity();
validateCallEntity(createCallRequest);
// validateCallEntity(createCallRequest);
RegionEntity region = regionRepository.findById(createCallRequest.getRegionId())
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.REGION_NOT_FOUND)));
@@ -102,8 +102,13 @@ public class CallDao {
callEntity.setName(createCallRequest.getName());
callEntity.setDescriptionShort(createCallRequest.getDescriptionShort());
callEntity.setDescriptionLong(createCallRequest.getDescriptionLong());
callEntity.setStartDate(createCallRequest.getStartDate());
callEntity.setEndDate(createCallRequest.getEndDate());
List<LocalDateTime> dates = createCallRequest.getDates();
if(dates!=null) {
if(dates.size()>1) {
callEntity.setStartDate(dates.get(0));
callEntity.setEndDate(dates.get(1));
}
}
callEntity.setStatus(CallStatusEnum.DRAFT.getValue());
callEntity.setAmountMax(createCallRequest.getAmountMax());
callEntity.setAmount(createCallRequest.getAmountMax());
@@ -143,7 +148,7 @@ public class CallDao {
CallEntity callEntity, LookUpDataTypeEnum type) {
EvaluationCriteriaEntity criteriaEntity = null;
LookUpDataEntity lookupDataEntity = convertLookUpDataRequestIntoLookUpDataEntity(criteriaReq, type);
if (criteriaReq.getId() == null && criteriaReq.getId().equals(0l)) {
if (criteriaReq.getId() != null && criteriaReq.getId() > 0) {
criteriaEntity = evaluationCriteriaRepository.findById(criteriaReq.getId())
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)));
@@ -194,22 +199,33 @@ public class CallDao {
return documentEntity;
}
public List<FaqEntity> convertToFaqEntities(List<FaqReq> faqReqList, CallEntity callEntity, Long userId) {
public List<FaqEntity> convertToFaqEntities(List<FaqReq> faqReqList, CallEntity callEntity, UserEntity userEntity, LookUpDataTypeEnum type) {
if (faqReqList == null) {
return null;
}
List<FaqEntity> faqEntities = faqReqList.stream().map(req -> convertToFaqEntity(req, callEntity, userId))
List<FaqEntity> existingFaqEntities = faqRepository.findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), type.getValue());
List<Long> incomingIds = faqReqList.stream()
.map(FaqReq::getId)
.filter(id -> id != null && id > 0)
.collect(Collectors.toList());
existingFaqEntities.stream()
.filter(entity -> !incomingIds.contains(entity.getId()))
.forEach(this::softDeleteFaq);
List<FaqEntity> faqEntities = faqReqList.stream()
.map(req -> convertToFaqEntity(req, callEntity, userEntity, type))
.collect(Collectors.toList());
faqRepository.saveAll(faqEntities);
return faqEntities;
}
public FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, Long userId) {
public FaqEntity convertToFaqEntity(FaqReq faqReq, CallEntity callEntity, UserEntity userEntity,LookUpDataTypeEnum type) {
FaqEntity faqEntity = new FaqEntity();
LookUpDataEntity lookupDataEntity = convertLookUpDataRequestIntoLookUpDataEntity(faqReq, type);
validateFaqEntity(faqReq.getQuestion());
UserEntity userEntity = userService.validateUser(userId);
faqEntity.setUser(userEntity);
faqEntity.setIsVisible(true);
faqEntity.setIsVisible(false);
faqEntity.setLookupData(lookupDataEntity);
if (faqReq.getIsVisible() != null) {
faqEntity.setIsVisible(faqReq.getIsVisible());
}
@@ -233,7 +249,7 @@ public class CallDao {
}
public void validateDocumentEntity(Long documentId) {
if (documentId == null) {
if (documentId == null || documentId < 1) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.DOCUMENT_ID_NOT_FOUND));
}
@@ -246,32 +262,34 @@ public class CallDao {
}
}
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()) || createCallRequest
.getStartDate().toLocalDate().isAfter(createCallRequest.getEndDate().toLocalDate())) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_DATE_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()) || createCallRequest
// .getStartDate().toLocalDate().isAfter(createCallRequest.getEndDate().toLocalDate())) {
// throw new CustomValidationException(Status.VALIDATION_ERROR,
// Translator.toLocale(GepafinConstant.INVALID_DATE_MSG));
// }
//
// }
public CallResponse convertToCallResponseBean(CallEntity callEntity) {
CallResponse createCallResponseBean = new CallResponse();
createCallResponseBean.setId(callEntity.getId());
createCallResponseBean.setName(callEntity.getName());
createCallResponseBean.setStartDate(callEntity.getStartDate());
createCallResponseBean.setEndDate(callEntity.getEndDate());
List<LocalDateTime> dates = new ArrayList<>();
dates.add(callEntity.getStartDate());
dates.add(callEntity.getEndDate());
createCallResponseBean.setDates(dates);
createCallResponseBean.setDescriptionShort(callEntity.getDescriptionShort());
createCallResponseBean.setDescriptionLong(callEntity.getDescriptionLong());
createCallResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus()));
@@ -281,7 +299,7 @@ public class CallDao {
createCallResponseBean.setContactInfo(callEntity.getContactInfo());
createCallResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod());
createCallResponseBean.setThreshold(callEntity.getThreshold());
createCallResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested());
createCallResponseBean.setDocumentationRequested(callEntity.getDocumentationRequested());
createCallResponseBean.setPriorityArea(callEntity.getPriorityArea());
createCallResponseBean.setConfidi(callEntity.getConfidi());
createCallResponseBean.setCreatedDate(callEntity.getCreatedDate());
@@ -315,6 +333,9 @@ public class CallDao {
public FaqResponseBean convertToFaqResponseBean(FaqEntity entity) {
FaqResponseBean responseBean = new FaqResponseBean();
responseBean.setId(entity.getId());
responseBean.setLookUpDataId(entity.getLookupData().getId());
responseBean.setValue(entity.getLookupData().getValue());
responseBean.setTitle(entity.getLookupData().getTitle());
responseBean.setQuestionShort(entity.getQuestionShort());
responseBean.setResponseShort(entity.getResponseShort());
responseBean.setResponse(entity.getResponse());
@@ -353,6 +374,9 @@ public class CallDao {
public List<LookUpDataResponse> convertLookUpDataEntities(List<LookUpDataReq> lookUpData, CallEntity callEntity,
LookUpDataEntity.LookUpDataTypeEnum type) {
if(lookUpData == null) {
return null;
}
List<LookUpDataEntity> lookUpDataEntities = lookUpData.stream()
.map(req -> convertLookUpDataRequestIntoLookUpDataEntity(req, type)).collect(Collectors.toList());
@@ -418,7 +442,7 @@ public class CallDao {
CallEntity callEntity = callRepository.findById(callId)
.orElseThrow(() -> new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)));
validateUpdate(callEntity);
setIfUpdated(callEntity::getThreshold, callEntity::setThreshold, createCallRequest.getThreshold());
callRepository.save(callEntity);
convertToEvaluationCriteriaEntities(createCallRequest.getCriteria(), callEntity, LookUpDataTypeEnum.EVALUATION_CRITERIA);
@@ -442,11 +466,24 @@ public class CallDao {
return createCallResponseBean;
}
private void validateUpdate(CallEntity callEntity) {
if(callEntity.getStatus().equals(CallStatusEnum.PUBLISH.getValue())) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.PUBLISHED_CALL_NOT_UPDATE));
}
}
public void isValidDateRange(UpdateCallRequestStep1 updateCallRequest, CallEntity callEntity) {
LocalDate startDate = updateCallRequest.getStartDate() != null ? updateCallRequest.getStartDate().toLocalDate()
: null;
LocalDate endDate = updateCallRequest.getEndDate() != null ? updateCallRequest.getEndDate().toLocalDate()
: null;
List<LocalDateTime> dates = updateCallRequest.getDates();
LocalDate startDate = (dates != null && dates.size() > 0 && dates.get(0) != null)
? dates.get(0).toLocalDate()
: null;
LocalDate endDate = (dates != null && dates.size() > 1 && dates.get(1) != null)
? dates.get(1).toLocalDate()
: null;
Boolean isValid = true;
if (startDate != null && endDate != null && startDate.isAfter(endDate)) {
isValid = false;
@@ -473,21 +510,31 @@ public class CallDao {
updateCallRequest.getDescriptionShort());
setIfUpdated(callEntity::getDescriptionLong, callEntity::setDescriptionLong,
updateCallRequest.getDescriptionLong());
setIfUpdated(callEntity::getStartDate, callEntity::setStartDate, updateCallRequest.getStartDate());
setIfUpdated(callEntity::getEndDate, callEntity::setEndDate, updateCallRequest.getEndDate());
List<LocalDateTime> dates=updateCallRequest.getDates();
if (dates != null && dates.size()>1) {
if (dates.size() > 0) {
setIfUpdated(callEntity::getStartDate, callEntity::setStartDate, dates.get(0));
}
if (dates.size() > 1) {
setIfUpdated(callEntity::getEndDate, callEntity::setEndDate, dates.get(1));
}
}
// 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());
updateLookUpData(callEntity, updateCallRequest.getAimedTo(), LookUpDataTypeEnum.AIMED_TO);
updateFaq(callEntity, updateCallRequest.getFaq(), userEntity);
updateFaq(callEntity, updateCallRequest.getFaq(), userEntity, LookUpDataTypeEnum.FAQ);
CallResponse createCallResponseBean = getCallResponseBean(callEntity);
createCallResponseBean.setCurrentStep(GepafinConstant.STEP_1);
return createCallResponseBean;
}
private void updateFaq(CallEntity callEntity, List<FaqReq> faqReqList, UserEntity userEntity) {
private void updateFaq(CallEntity callEntity, List<FaqReq> faqReqList, UserEntity userEntity, LookUpDataTypeEnum type) {
if (faqReqList == null) {
return;
}
@@ -495,7 +542,7 @@ public class CallDao {
List<Long> incomingIds = faqReqList.stream().map(FaqReq::getId).filter(Objects::nonNull).filter(id -> id > 0)
.collect(Collectors.toList());
existingFaqs.stream().filter(faq -> !incomingIds.contains(faq.getId())).forEach(this::softDeleteFaq);
faqReqList.forEach(faqReq -> createOrUpdateFaq(faqReq, callEntity, userEntity));
faqReqList.forEach(faqReq -> createOrUpdateFaq(faqReq, callEntity, userEntity, type));
}
@@ -504,8 +551,10 @@ public class CallDao {
faqRepository.save(faqEntity);
}
private void createOrUpdateFaq(FaqReq faqReq, CallEntity callEntity, UserEntity userEntity) {
private void createOrUpdateFaq(FaqReq faqReq, CallEntity callEntity, UserEntity userEntity, LookUpDataTypeEnum type) {
FaqEntity faqEntity = null;
LookUpDataEntity lookupDataEntity = convertLookUpDataRequestIntoLookUpDataEntity(faqReq, type);
if (isExistingFaq(faqReq)) {
faqEntity = faqRepository.findById(faqReq.getId())
@@ -515,9 +564,14 @@ public class CallDao {
faqEntity = new FaqEntity();
faqEntity.setCall(callEntity);
faqEntity.setUser(userEntity);
faqEntity.setLookupData(lookupDataEntity);
faqEntity.setIsVisible(false);
faqEntity.setIsDeleted(false);
}
if (Boolean.FALSE.equals(faqEntity.getLookupData().getId().equals(lookupDataEntity.getId()))) {
faqEntity.setLookupData(lookupDataEntity);
}
setIfUpdated(faqEntity::getQuestionShort, faqEntity::setQuestionShort, faqReq.getQuestionShort());
setIfUpdated(faqEntity::getQuestion, faqEntity::setQuestion, faqReq.getQuestion());
setIfUpdated(faqEntity::getResponseShort, faqEntity::setResponseShort, faqReq.getResponseShort());
@@ -577,7 +631,10 @@ public class CallDao {
CallDetailsResponseBean callDetailsResponseBean = new CallDetailsResponseBean();
callDetailsResponseBean.setId(callEntity.getId());
callDetailsResponseBean.setName(callEntity.getName());
callDetailsResponseBean.setDates(List.of(callEntity.getStartDate(), callEntity.getEndDate()));
List<LocalDateTime> dates = new ArrayList<>();
dates.add(callEntity.getStartDate());
dates.add(callEntity.getEndDate());
callDetailsResponseBean.setDates(dates);
callDetailsResponseBean.setDescriptionShort(callEntity.getDescriptionShort());
callDetailsResponseBean.setDescriptionLong(callEntity.getDescriptionLong());
callDetailsResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus()));
@@ -587,7 +644,7 @@ public class CallDao {
callDetailsResponseBean.setContactInfo(callEntity.getContactInfo());
callDetailsResponseBean.setSubmissionMethod(callEntity.getSubmissionMethod());
callDetailsResponseBean.setThreshold(callEntity.getThreshold());
callDetailsResponseBean.setDocumentationReqested(callEntity.getDocumentationRequested());
callDetailsResponseBean.setDocumentationRequested(callEntity.getDocumentationRequested());
callDetailsResponseBean.setPriorityArea(callEntity.getPriorityArea());
callDetailsResponseBean.setCreatedDate(callEntity.getCreatedDate());
callDetailsResponseBean.setUpdatedDate(callEntity.getUpdatedDate());
@@ -598,7 +655,7 @@ public class CallDao {
List<DocumentEntity> documentEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(),
DocumentTypeEnum.DOCUMENT.getValue());
List<DocumentEntity> imageEntities = documentRepository.findByCallIdAndTypeAndIsDeletedFalse(callEntity.getId(),
DocumentTypeEnum.DOCUMENT.getValue());
DocumentTypeEnum.IMAGES.getValue());
List<FaqEntity> faqEntities = faqRepository.findByCallIdAndIsDeletedFalse(callEntity.getId());
List<LookUpDataResponse> amiedTo = callTargetAudienceChecklistRepository
.findByCallIdAndLookupDataTypeAndIsDeletedFalse(callEntity.getId(), LookUpDataTypeEnum.AIMED_TO.getValue()).stream()
@@ -630,6 +687,7 @@ public class CallDao {
callEntity.setStatus(CallStatusEnum.READY_TO_PUBLISH.getValue());
callRepository.save(callEntity);
callResponseBean.setCurrentStep(GepafinConstant.VALIDATE_REQUEST);
callResponseBean.setStatus(CallStatusEnum.READY_TO_PUBLISH);
return callResponseBean;
}
public CallEntity getCallEntityById(Long id){
@@ -664,12 +722,9 @@ public class CallDao {
}
break;
case PUBLISH:
case EXPIRE:
case EXPIRED:
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.STATUS_CANNOT_BE_CHANGED));
default:
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_STATUS_TRANSITION));
}
}

View File

@@ -4,12 +4,13 @@ import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.CallEntity;
import net.gepafin.tendermanagement.entities.FaqEntity;
import net.gepafin.tendermanagement.entities.LookUpDataEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.model.request.FaqReq;
import net.gepafin.tendermanagement.model.response.FaqResponseBean;
import net.gepafin.tendermanagement.repositories.CallRepository;
import net.gepafin.tendermanagement.repositories.FaqRepository;
import net.gepafin.tendermanagement.repositories.UserRepository;
import net.gepafin.tendermanagement.service.UserService;
import net.gepafin.tendermanagement.util.DateTimeUtil;
import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
@@ -25,7 +26,7 @@ public class FaqDao {
private FaqRepository faqRepository;
@Autowired
private UserRepository userRepository;
private UserService userService;
@Autowired
private CallDao callDao;
@@ -38,7 +39,8 @@ public class FaqDao {
CallEntity callEntity = callRepository.findById(callId)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)));
entity = callDao.convertToFaqEntity(faqRequest, callEntity, userId);
UserEntity userEntity = userService.validateUser(userId);
entity = callDao.convertToFaqEntity(faqRequest, callEntity, userEntity, LookUpDataEntity.LookUpDataTypeEnum.FAQ);
faqRepository.save(entity);
return convertFaqEntityToResponseBean(entity);
}
@@ -81,9 +83,7 @@ public class FaqDao {
private void updateFaqEntity(FaqEntity faqEntity, FaqReq faqReq, Long userId, CallEntity callEntity) {
faqEntity.setQuestion(faqReq.getQuestion());
UserEntity userEntity = userRepository.findById(userId)
.orElseThrow(() -> new ResourceNotFoundException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG)));
UserEntity userEntity = userService.validateUser(userId);
faqEntity.setUser(userEntity);
faqEntity.setIsVisible(true);
if (faqReq.getIsVisible() != null) {

View File

@@ -17,7 +17,7 @@ import java.time.LocalDateTime;
@Builder
public class CallEntity extends BaseEntity {
@Column(name = "NAME", nullable = false, length = 255)
@Column(name = "NAME", length = 255)
private String name;
@Column(name = "DESCRIPTION_SHORT", columnDefinition = "TEXT")
@@ -26,23 +26,23 @@ public class CallEntity extends BaseEntity {
@Column(name = "DESCRIPTION_LONG", columnDefinition = "TEXT")
private String descriptionLong;
@Column(name = "START_DATE", nullable = false)
@Column(name = "START_DATE")
private LocalDateTime startDate;
@Column(name = "END_DATE", nullable = false)
@Column(name = "END_DATE")
private LocalDateTime endDate;
@Column(name = "STATUS", nullable = false, length = 255)
@Column(name = "STATUS", length = 255)
private String status;
@ManyToOne
@JoinColumn(name = "REGION_ID", nullable = false, foreignKey = @ForeignKey(name = "fk_region_call"))
@JoinColumn(name = "REGION_ID", foreignKey = @ForeignKey(name = "fk_region_call"))
private RegionEntity region;
@Column(name = "AMOUNT", nullable = false)
@Column(name = "AMOUNT")
private BigDecimal amount;
@Column(name = "AMOUNT_MAX", nullable = false)
@Column(name = "AMOUNT_MAX")
private BigDecimal amountMax;
@Column(name = "CONTACT_INFO", columnDefinition = "TEXT")
@@ -51,7 +51,7 @@ public class CallEntity extends BaseEntity {
@Column(name = "SUBMISSION_METHOD", columnDefinition = "TEXT")
private String submissionMethod;
@Column(name = "THRESHOLD", nullable = false)
@Column(name = "THRESHOLD")
private Long threshold;
@Column(name="DOCUMENTATION_REQUESTED",columnDefinition = "TEXT")

View File

@@ -39,6 +39,10 @@ public class FaqEntity extends BaseEntity {
@Column(name = "RESPONSE", columnDefinition = "TEXT")
private String response;
@ManyToOne
@JoinColumn(name = "LOOKUP_DATA_ID")
private LookUpDataEntity lookupData;
@Column(name = "RESPONSE_DATE")
private LocalDateTime responseDate;

View File

@@ -21,7 +21,8 @@ public class LookUpDataEntity extends BaseEntity{
public enum LookUpDataTypeEnum {
CHECKLIST("CHECKLIST"),
AIMED_TO("AIMED_TO"),
EVALUATION_CRITERIA("EVALUATION_CRITERIA");
EVALUATION_CRITERIA("EVALUATION_CRITERIA"),
FAQ("FAQ");
private String value;

View File

@@ -6,7 +6,7 @@ public enum CallStatusEnum {
DRAFT("DRAFT"),
PUBLISH("PUBLISH"),
EXPIRE("EXPIRED"),
EXPIRED("EXPIRED"),
READY_TO_PUBLISH("READY_TO_PUBLISH");
private String value;

View File

@@ -3,42 +3,27 @@ package net.gepafin.tendermanagement.model.request;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class CreateCallRequestStep1 {
@NotEmpty
private String name;
@NotEmpty
private String descriptionShort;
@NotEmpty
private String descriptionLong;
@NotNull
private LocalDateTime startDate;
private List<LocalDateTime> dates;
@NotNull
private LocalDateTime endDate;
@NotNull
private Long regionId;
@NotNull
private BigDecimal amount;
@NotNull
private BigDecimal amountMax;
@NotNull
private List<LookUpDataReq> aimedTo;
@NotEmpty
private String documentationRequested;
private Boolean confidi;

View File

@@ -2,7 +2,6 @@ package net.gepafin.tendermanagement.model.request;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
@@ -10,10 +9,8 @@ public class CreateCallRequestStep2 {
private Long threshold;
@NotNull
private List<EvaluationCriteriaReq> criteria;
@NotNull
private List<LookUpDataReq> checkList;
private List<DocumentReq> docs;

View File

@@ -3,7 +3,7 @@ package net.gepafin.tendermanagement.model.request;
import lombok.Data;
@Data
public class FaqReq {
public class FaqReq extends LookUpDataReq{
private Long id;
private Boolean isVisible;

View File

@@ -9,35 +9,24 @@ import lombok.Data;
@Data
public class UpdateCallRequestStep1 {
private String name;
private String name;
private String descriptionShort;
private String descriptionShort;
private String descriptionLong;
private String descriptionLong;
private LocalDateTime startDate;
private List<LocalDateTime> dates;
private LocalDateTime endDate;
private BigDecimal amount;
private BigDecimal amount;
private BigDecimal amountMax;
private BigDecimal amountMax;
private List<LookUpDataReq> aimedTo;
private List<LookUpDataReq> aimedTo;
private String documentationRequested;
private String documentationRequested;
private Boolean confidi;
private Boolean confidi;
private List<FaqReq> faq;
private List<FaqReq> faq;
}

View File

@@ -35,23 +35,10 @@ public class CallDetailsResponseBean {
private String priorityArea;
private String documentationReqested;
private String documentationRequested;
private LocalDateTime createdDate;
private LocalDateTime updatedDate;
private List<LookUpDataResponse> aimedTo;
private List<EvaluationCriteriaResponseBean> criteria;
private List<DocumentResponseBean> docs;
private List<FaqResponseBean> faq;
private List<DocumentResponseBean> images;
private List<LookUpDataResponse> checkList;
private String currentStep;
}

View File

@@ -18,9 +18,7 @@ public class CallResponse {
private String descriptionLong;
private LocalDateTime startDate;
private LocalDateTime endDate;
private List<LocalDateTime> dates;
private CallStatusEnum status;
@@ -38,7 +36,7 @@ public class CallResponse {
private String priorityArea;
private String documentationReqested;
private String documentationRequested;
private Boolean confidi;

View File

@@ -23,4 +23,12 @@ public class FaqResponseBean extends BaseBean {
private LocalDateTime responseDate;
private Long lookUpDataId;
private String title;
private String value;
}

View File

@@ -1,5 +1,6 @@
package net.gepafin.tendermanagement.repositories;
import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity;
import net.gepafin.tendermanagement.entities.FaqEntity;
import java.util.List;
@@ -17,4 +18,6 @@ public interface FaqRepository extends JpaRepository<FaqEntity, Long> {
Optional<FaqEntity> findById(@Param("id") Long id);
List<FaqEntity> findByCallIdAndIsDeletedFalse(Long callId);
List<FaqEntity> findByCallIdAndLookupDataTypeAndIsDeletedFalse(Long callId, String type);
}

View File

@@ -1,7 +1,13 @@
package net.gepafin.tendermanagement.service.impl;
import java.time.LocalDate;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.model.response.CallResponse;
import net.gepafin.tendermanagement.util.FieldValidator;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
public class CallValidatorServiceImpl {
@@ -11,14 +17,14 @@ public class CallValidatorServiceImpl {
.notNull(response.getName(), "name")
.notNull(response.getDescriptionShort(), "descriptionShort")
.notNull(response.getDescriptionLong(), "descriptionLong")
.notNull(response.getStartDate(), "startDate")
.notNull(response.getEndDate(), "endDate")
.notNull(response.getDates().get(0), "startDate")
.notNull(response.getDates().get(1), "endDate")
.notNull(response.getStatus(), "status")
.notNull(response.getRegionId(), "regionId")
.notNull(response.getAmount(), "amount")
.notNull(response.getAmountMax(), "amountMax")
.notNull(response.getThreshold(), "threshold")
.notNull(response.getDocumentationReqested(), "documentationReqested")
.notNull(response.getDocumentationRequested(), "documentationRequested")
.notEmpty(response.getAimedTo(), "aimedTo")
.notEmpty(response.getCriteria(), "criteria")
.notEmpty(response.getDocs(), "docs")
@@ -26,6 +32,13 @@ public class CallValidatorServiceImpl {
.notEmpty(response.getImages(), "images")
.notEmpty(response.getCheckList(), "checkList")
.validate();
if (response.getDates().get(0).toLocalDate().isBefore(LocalDate.now())
|| response.getDates().get(1).toLocalDate().isBefore(LocalDate.now()) ||
response.getDates().get(0).toLocalDate().isAfter(response.getDates().get(1).toLocalDate())) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_DATE_MSG));
}
}
}

View File

@@ -3,8 +3,6 @@ package net.gepafin.tendermanagement.web.rest.api;
import java.util.List;
import net.gepafin.tendermanagement.enums.CallStatusEnum;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.response.UserResponseBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
@@ -46,7 +44,7 @@ public interface CallApi {
@Parameter(description = "Call request object", required = true)
@Valid @RequestBody CreateCallRequestStep1 createCallRequest);
@Operation(summary = "Api to create call step 2",
@Operation(summary = "Api to update call step 2",
responses = {
@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "404", description = "Not Found", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {

View File

@@ -30,7 +30,7 @@ public interface DocumentApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))})
@PostMapping(value = "/uploadFile/call/{callId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
default ResponseEntity<Response<List<DocumentResponseBean>>> uploadFile(HttpServletRequest httpServletRequest, @Parameter(description = "call id", required = true) @PathVariable Long callId, @RequestParam("file") List<MultipartFile> files, @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) {
default ResponseEntity<Response<List<DocumentResponseBean>>> uploadFile(HttpServletRequest httpServletRequest, @Parameter(description = "call id", required = true) @PathVariable("callId") Long callId, @RequestParam("file") List<MultipartFile> files, @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
@@ -59,7 +59,7 @@ public interface DocumentApi {
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))})
@PutMapping(value = "/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
default ResponseEntity<Response<DocumentResponseBean>> updateDocument(HttpServletRequest httpServletRequest, @Parameter(description = "document id", required = true) @PathVariable Long documentId, @RequestParam("file") MultipartFile file, @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) {
default ResponseEntity<Response<DocumentResponseBean>> updateDocument(HttpServletRequest httpServletRequest, @Parameter(description = "document id", required = true) @PathVariable("id") Long documentId, @RequestParam("file") MultipartFile file, @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) {
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}
@Operation(summary = "API to get document by id",
@@ -73,6 +73,6 @@ public interface DocumentApi {
@GetMapping(value = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<Response<DocumentResponseBean>> getDocumentById(HttpServletRequest request,
@Parameter(description = "document id", required = true)
@PathVariable Long id);
@PathVariable("id") Long id);
}

View File

@@ -3,8 +3,6 @@ package net.gepafin.tendermanagement.web.rest.api.impl;
import java.util.List;
import net.gepafin.tendermanagement.enums.CallStatusEnum;
import net.gepafin.tendermanagement.enums.UserStatusEnum;
import net.gepafin.tendermanagement.model.response.UserResponseBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;