diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 70257104..37cb88b5 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -100,6 +100,7 @@ public class GepafinConstant { public static final String UPDATE_CALL_STATUS_SUCCESS_MSG = "update_call_status_success_msg"; 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 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"; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index cc7f8d80..6c671129 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -503,6 +503,7 @@ public class CallDao { public CallResponse updateCallStep1(Long callId, UpdateCallRequestStep1 updateCallRequest, Long userId) { CallEntity callEntity = validateCall(callId); + validateUpdate(callEntity); UserEntity userEntity = userService.validateUser(userId); isValidDateRange(updateCallRequest, callEntity); setIfUpdated(callEntity::getName, callEntity::setName, updateCallRequest.getName()); @@ -682,12 +683,13 @@ public class CallDao { } public CallResponse validateCall(CallEntity callEntity) { + validateUpdate(callEntity); CallResponse callResponseBean = getCallResponseBean(callEntity); CallValidatorServiceImpl.validateResponse(callResponseBean); callEntity.setStatus(CallStatusEnum.READY_TO_PUBLISH.getValue()); callRepository.save(callEntity); callResponseBean.setCurrentStep(GepafinConstant.VALIDATE_REQUEST); - callResponseBean.setStatus(CallStatusEnum.READY_TO_PUBLISH); + callResponseBean.setStatus(CallStatusEnum.valueOf(callEntity.getStatus())); return callResponseBean; } public CallEntity getCallEntityById(Long id){ @@ -715,16 +717,27 @@ public class CallDao { } 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: - case EXPIRED: + case DRAFT: + if (newStatus == CallStatusEnum.READY_TO_PUBLISH || newStatus == CallStatusEnum.PUBLISH) { throw new CustomValidationException(Status.VALIDATION_ERROR, - Translator.toLocale(GepafinConstant.STATUS_CANNOT_BE_CHANGED)); + 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 EXPIRED: + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.STATUS_CANNOT_BE_CHANGED)); + case READY_TO_PUBLISH: + break; + default: + break; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index 636392e5..4e52e945 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -29,6 +29,6 @@ public interface CallService { public CallEntity getCallEntityById(Long id); - CallResponse updateCallStatus(Long callId, CallStatusEnum statusReq); + CallResponse updateCallStatus(HttpServletRequest request, Long callId, CallStatusEnum statusReq); } 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 2fed41ee..bbf15bbb 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -5,13 +5,11 @@ import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.dao.CallDao; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.enums.CallStatusEnum; -import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CallResponse; -import net.gepafin.tendermanagement.model.response.UserResponseBean; import net.gepafin.tendermanagement.service.CallService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -76,7 +74,7 @@ public class CallServiceImpl implements CallService { } @Override @Transactional(rollbackFor = Exception.class) - public CallResponse updateCallStatus(Long callId, CallStatusEnum statusReq) { + public CallResponse updateCallStatus(HttpServletRequest request, Long callId, CallStatusEnum statusReq) { return callDao.updateCallStatus(callId, statusReq); } 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 e32e62cd..78c19c8d 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 @@ -132,9 +132,7 @@ public interface CallApi { produces = {"application/json"}, method = RequestMethod.PUT) @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") - default ResponseEntity> updateCallStatus( + public ResponseEntity> updateCallStatus(HttpServletRequest request, @Parameter(description = "The call id", required = true) @PathVariable("callId") Long callId, - @Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) CallStatusEnum status) { - return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); - } + @Parameter(description = "status", required = true)@RequestParam(value = "status", required = true) CallStatusEnum status); } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/CallApiController.java index 4131dd84..9885aa84 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 @@ -82,8 +82,8 @@ public class CallApiController implements CallApi { .body(new Response<>(call, Status.SUCCESS, Translator.toLocale(GepafinConstant.CALL_FETCH_SUCCESS_MSG))); } @Override - public ResponseEntity> updateCallStatus(@PathVariable Long callId, @RequestParam CallStatusEnum status) { - CallResponse updateCall = callService.updateCallStatus(callId, status); + public ResponseEntity> updateCallStatus(HttpServletRequest request, Long callId, CallStatusEnum status) { + CallResponse updateCall = callService.updateCallStatus(request, callId, status); return ResponseEntity.ok(new Response<>(updateCall, Status.SUCCESS, Translator.toLocale(GepafinConstant.UPDATE_CALL_STATUS_SUCCESS_MSG))); } } \ No newline at end of file diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 444f8a64..369b16f0 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -56,6 +56,7 @@ 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. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 8d7352f9..c4d1ee77 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -56,6 +56,7 @@ 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. # Login-related messages