Done Ticket GEPAFINBE-207 Updated the API to update the call status from Publish status to Draft.

This commit is contained in:
piyushkag
2025-04-10 18:07:21 +05:30
parent f379b954ed
commit c34b63b321
5 changed files with 34 additions and 26 deletions

View File

@@ -101,6 +101,7 @@ 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 INVALID_STATUS_CHANGE_FROM_PUBLISH = "invalid.status.change.from.publish";
public static final String INVALID_STATUS_CHANGE_FROM_PUBLISH_TO_DRAFT = "invalid.status.change.from.publish.to.draft";
public static final String STATUS_CANNOT_BE_CHANGED = "status.cannot.be.changed";
public static final String PUBLISHED_CALL_NOT_UPDATE = "published.call.not.update";
public static final String INVALID_USER = "invalid_user";

View File

@@ -124,6 +124,9 @@ public class CallDao {
@Autowired
private EvaluationFormDao evalualtionFormDao;
@Autowired
private ApplicationRepository applicationRepository;
public CallResponse createCallStep1(CreateCallRequestStep1 createCallRequest, UserEntity userEntity) {
createCallRequest.setRegionId(userEntity.getRoleEntity().getRegion().getId());
CallEntity callEntity = convertToCallEntity(createCallRequest, userEntity);
@@ -902,7 +905,7 @@ public class CallDao {
public CallResponse updateCallStatus(CallEntity callEntity, CallStatusEnum statusReq) {
CallEntity oldCallEntity = Utils.getClonedEntityForData(callEntity);
CallStatusEnum currentStatus = CallStatusEnum.valueOf(callEntity.getStatus());
validateStatusChange(currentStatus, statusReq);
validateStatusChange(currentStatus, statusReq, callEntity.getId());
callEntity.setStatus(statusReq.getValue());
callEntity = callRepository.save(callEntity);
@@ -922,36 +925,37 @@ public class CallDao {
return convertToCallResponseBean(callEntity);
}
private void validateStatusChange(CallStatusEnum currentStatus, CallStatusEnum newStatus) {
private void validateStatusChange(CallStatusEnum currentStatus, CallStatusEnum newStatus, Long callId) {
if (currentStatus == newStatus) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.STATUS_SAME_ERROR));
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.STATUS_SAME_ERROR));
}
switch (currentStatus) {
case DRAFT:
if (newStatus == CallStatusEnum.READY_TO_PUBLISH || newStatus == CallStatusEnum.PUBLISH) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_STATUS_CHANGE_FROM_DRAFT));
}
break;
case PUBLISH:
if (newStatus == CallStatusEnum.READY_TO_PUBLISH || newStatus == CallStatusEnum.DRAFT) {
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.INVALID_STATUS_CHANGE_FROM_PUBLISH));
}
break;
case DRAFT:
if (newStatus == CallStatusEnum.READY_TO_PUBLISH || newStatus == CallStatusEnum.PUBLISH) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_STATUS_CHANGE_FROM_DRAFT));
}
break;
case EXPIRED:
throw new CustomValidationException(Status.VALIDATION_ERROR,
Translator.toLocale(GepafinConstant.STATUS_CANNOT_BE_CHANGED));
case READY_TO_PUBLISH:
break;
default:
break;
case PUBLISH:
if (newStatus == CallStatusEnum.READY_TO_PUBLISH) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_STATUS_CHANGE_FROM_PUBLISH));
}
if (newStatus == CallStatusEnum.DRAFT && Boolean.TRUE.equals(applicationRepository.existsByCallId(callId))) {
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_STATUS_CHANGE_FROM_PUBLISH_TO_DRAFT));
}
break;
case EXPIRED:
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.STATUS_CANNOT_BE_CHANGED));
case READY_TO_PUBLISH:
break;
default:
break;
}
}
public CallEntity validatePublishedCall(Long callId, Long hubId) {
CallEntity callEntity= callRepository
.findByIdAndStatusAndHubId(callId, CallStatusEnum.PUBLISH.getValue(), hubId);

View File

@@ -177,4 +177,5 @@ public interface ApplicationRepository extends JpaRepository<ApplicationEntity,
@Query("UPDATE ApplicationEntity a SET a.ndgStatus = NULL WHERE a.ndgStatus = :status")
void resetNdgStatusForInProgress(@Param("status") String status);
boolean existsByCallId(Long callId);
}

View File

@@ -60,7 +60,8 @@ status.same.error=Status is already set.
invalid.status.change.from.draft=Status cannot be changed to READY_TO_PUBLISH or PUBLISH from DRAFT.
status.cannot.be.changed=Status cannot be changed.
published.call.not.update=Published call cannot be updated.
invalid.status.change.from.publish=Status cannot be changed to READY_TO_PUBLISH or DRAFT from PUBLISH.
invalid.status.change.from.publish=Status cannot be changed to READY_TO_PUBLISH from PUBLISH.
invalid.status.change.from.publish.to.draft=Status cannot be changed to DRAFT from PUBLISH as Applications are already created for this CALL.
validation.table.message=Data for field {0} is not present.

View File

@@ -60,7 +60,8 @@ status.same.error=Lo stato ? gi? impostato.
invalid.status.change.from.draft=Lo stato non pu? essere cambiato in READY_TO_PUBLISH o PUBLISH da DRAFT.
status.cannot.be.changed=Lo stato non pu? essere cambiato.
published.call.not.update=Il bando pubblicato non pu? essere aggiornato.
invalid.status.change.from.publish=Lo stato non pu? essere modificato in READY_TO_PUBLISH o DRAFT da PUBLISH.
invalid.status.change.from.publish=Lo stato non pu? essere modificato in READY_TO_PUBLISH da PUBLISH.
invalid.status.change.from.publish.to.draft=Lo stato non può essere modificato da PUBLISH a DRAFT poiché sono già state create applicazioni per questa CALL.
# Login-related messages