From 64b952204094c457c550858a3f41fc9b9dbf4ce3 Mon Sep 17 00:00:00 2001 From: rajesh Date: Thu, 23 Jan 2025 19:59:17 +0530 Subject: [PATCH] Created endpoints for Evaluation form --- .../constants/GepafinConstant.java | 9 + .../dao/EvaluationFormDao.java | 171 ++++++++++++++++++ .../entities/EvaluationFormEntity.java | 29 +++ .../enums/UserActionContextEnum.java | 7 + .../model/request/EvaluationFormRequest.java | 14 ++ .../response/EvaluationFormResponseBean.java | 19 ++ .../EvalualtionFormRepository.java | 15 ++ .../service/EvaluationFormService.java | 28 +++ .../impl/EvaluationFormServiceImpl.java | 62 +++++++ .../web/rest/api/EvaluationFormApi.java | 101 +++++++++++ .../api/impl/EvaluationFormApiController.java | 88 +++++++++ .../db/changelog/db.changelog-1.0.0.xml | 22 ++- src/main/resources/message_en.properties | 9 + src/main/resources/message_it.properties | 10 +- 14 files changed, 582 insertions(+), 2 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/dao/EvaluationFormDao.java create mode 100644 src/main/java/net/gepafin/tendermanagement/entities/EvaluationFormEntity.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/request/EvaluationFormRequest.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/EvaluationFormResponseBean.java create mode 100644 src/main/java/net/gepafin/tendermanagement/repositories/EvalualtionFormRepository.java create mode 100644 src/main/java/net/gepafin/tendermanagement/service/EvaluationFormService.java create mode 100644 src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationFormServiceImpl.java create mode 100644 src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationFormApi.java create mode 100644 src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationFormApiController.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 325bf286..5e14c667 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -390,5 +390,14 @@ public class GepafinConstant { public static final String VALIDATION_IN_TABLE = "validation.table.message"; public static final String CALL_EXPIRED="call.expired"; public static final String AMOUNT_REQUEST_SHOULD_GREATED_THEN_ZERO = "amount.request.should.greated.then.zero"; + + + + public static final String EVALUATION_FORM_CREATED_SUCCESSFULLY = "evaluation.form.created.successfully"; + public static final String EVALUATION_FORM_UPDATED_SUCCESSFULLY = "evaluation.form.updated.successfully"; + public static final String EVALUATION_FORM_DELETED_SUCCESSFULLY = "evaluation.form.deleted.successfully"; + public static final String EVALUATION_FORM_FETCHED_SUCCESSFULLY = "evaluation.form.fetched.successfully"; + + public static final String EVALUATION_FORM_NOT_FOUND = "evaluation.form.not.found"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/EvaluationFormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationFormDao.java new file mode 100644 index 00000000..f56c83bb --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/dao/EvaluationFormDao.java @@ -0,0 +1,171 @@ +package net.gepafin.tendermanagement.dao; + + import jakarta.servlet.http.HttpServletRequest; + import net.gepafin.tendermanagement.config.Translator; + import net.gepafin.tendermanagement.constants.GepafinConstant; + import net.gepafin.tendermanagement.entities.*; + import net.gepafin.tendermanagement.enums.VersionActionTypeEnum; + import net.gepafin.tendermanagement.model.request.*; + import net.gepafin.tendermanagement.model.response.ContentResponseBean; + import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean; + import net.gepafin.tendermanagement.repositories.*; + import net.gepafin.tendermanagement.service.EvaluationCriteriaService; + import net.gepafin.tendermanagement.util.DateTimeUtil; + import net.gepafin.tendermanagement.util.LoggingUtil; + import net.gepafin.tendermanagement.util.Utils; + import net.gepafin.tendermanagement.util.Validator; + import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; + import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; + import net.gepafin.tendermanagement.web.rest.api.errors.Status; + import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Component; + + import java.time.LocalDateTime; + import java.util.Collections; + import java.util.List; + import java.util.Optional; + import java.util.Set; + import java.util.stream.Collectors; + +@Component +public class EvaluationFormDao { + + @Autowired + private EvalualtionFormRepository evaluationFormRepository; + + @Autowired + private CallDao callDao; + + @Autowired + private VatCheckDao vatCheckDao; + + @Autowired + private CallRepository callRepository; + + @Autowired + private Validator validator; + + @Autowired + private CriteriaFormFieldRepository criteriaFormFieldRepository; + + @Autowired + private EvaluationCriteriaService evaluationCriteriaService; + + @Autowired + private LoggingUtil loggingUtil; + + @Autowired + private HttpServletRequest request; + + public EvaluationFormEntity saveEvaluationFormEntity(EvaluationFormEntity evaluationFormEntity){ + evaluationFormEntity= evaluationFormRepository.save(evaluationFormEntity); + return evaluationFormEntity; + } + + public EvaluationFormEntity convertEvaluationFormRequestToEvaluationFormEntity(CallEntity callEntity, EvaluationFormRequest formRequest) { + + EvaluationFormEntity evaluationFormEntity = new EvaluationFormEntity(); + evaluationFormEntity.setCall(callEntity); + evaluationFormEntity.setLabel(formRequest.getLabel()); + evaluationFormEntity.setContent(setContentResponseBean(formRequest.getContent())); + evaluationFormEntity.setIsDeleted(false); + evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity); + + /** This code is responsible for adding a version history log for the "Create form" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(evaluationFormEntity).build()); + + return evaluationFormEntity; + } + + public EvaluationFormResponseBean convertEvaluationFormEntityToEvaluationFormResponseBean(EvaluationFormEntity formEntity) { + EvaluationFormResponseBean evaluationFormResponseBean =new EvaluationFormResponseBean(); + evaluationFormResponseBean.setId(formEntity.getId()); + evaluationFormResponseBean.setContent(setContent(formEntity)); + evaluationFormResponseBean.setLabel(formEntity.getLabel()); + evaluationFormResponseBean.setCallId(formEntity.getCall().getId()); + evaluationFormResponseBean.setCallStatus(formEntity.getCall().getStatus()); + return evaluationFormResponseBean; + } + + private List setContent(EvaluationFormEntity formEntity) { + List contentList = Utils.convertJsonStringToList(formEntity.getContent(), + ContentResponseBean.class); + return contentList; + } + + public EvaluationFormResponseBean createEvaluationForm(CallEntity callEntity, EvaluationFormRequest formRequest) { + + validateEvaluationForm(formRequest); + EvaluationFormEntity formEntity = convertEvaluationFormRequestToEvaluationFormEntity(callEntity, formRequest); + return convertEvaluationFormEntityToEvaluationFormResponseBean(formEntity); + } + + public void validateEvaluationForm(EvaluationFormRequest formRequest){ + if(formRequest.getContent()==null || formRequest.getLabel()==null ){ + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM)); + } + } + public EvaluationFormResponseBean updateEvaluationForm(UserEntity user, Long formId, EvaluationFormRequest formRequest) { + EvaluationFormEntity evaluationFormEntity = validateForm(formId); + //cloned for old form data + EvaluationFormEntity oldFormData = Utils.getClonedEntityForData(evaluationFormEntity); + + Utils.setIfUpdated(evaluationFormEntity::getLabel, evaluationFormEntity::setLabel, formRequest.getLabel()); + Utils.setIfUpdated(evaluationFormEntity::getContent, evaluationFormEntity::setContent, setContentResponseBean(formRequest.getContent())); + evaluationFormEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); + evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity); + + /** This code is responsible for adding a version history log for the "Update form data" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldFormData).newData(evaluationFormEntity).build()); + return convertEvaluationFormEntityToEvaluationFormResponseBean(evaluationFormEntity); + + } + + public EvaluationFormEntity validateForm(Long formId) { + EvaluationFormEntity evaluationFormEntity = evaluationFormRepository.findByIdAndIsDeletedFalse(formId); + if (evaluationFormEntity == null) { + throw new ResourceNotFoundException( + Status.NOT_FOUND, + Translator.toLocale(GepafinConstant.EVALUATION_FORM_NOT_FOUND) + ); + } + return evaluationFormEntity; + } + + + public EvaluationFormResponseBean getEvaluationFormById(UserEntity user, Long formId) { + EvaluationFormEntity evaluationFormEntity = validateForm(formId); + validator.validateUserWithCall(user, evaluationFormEntity.getCall().getId()); + return convertEvaluationFormEntityToEvaluationFormResponseBean(evaluationFormEntity); + } + public void deleteEvaluationForm(UserEntity user, Long formId){ + EvaluationFormEntity evaluationFormEntity = validateForm(formId); + EvaluationFormEntity clonedData = Utils.getClonedEntityForData(evaluationFormEntity); + validator.validateUserWithCall(user, evaluationFormEntity.getCall().getId()); + evaluationFormEntity.setIsDeleted(Boolean.TRUE); + evaluationFormEntity = saveEvaluationFormEntity(evaluationFormEntity); + /** This code is responsible for adding a version history log for the "soft deleting evaluation from field" operation. **/ + loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.SOFT_DELETE).oldData(clonedData).newData(evaluationFormEntity).build()); + + + } + public List getEvaluationFormsByCallId(CallEntity callEntity){ + if(callEntity== null){ + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)); + } + List formEntities= evaluationFormRepository.findByCallIdAndIsDeletedFalse(callEntity.getId()); + List formResponseBeanList = formEntities.stream() + .map(req -> convertEvaluationFormEntityToEvaluationFormResponseBean(req)) + .collect(Collectors.toList()); + return formResponseBeanList; + } + public String setContentResponseBean(List contentRequestBeans){ + String stringContentRequest = Utils.convertListToJsonString(contentRequestBeans); + List cloneContentRequestBeans = Utils.convertJsonStringToList(stringContentRequest, ContentRequestBean.class); + cloneContentRequestBeans.forEach(data->data.setCriteria(null)); + return Utils.convertListToJsonString(cloneContentRequestBeans); + } + + +} \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/entities/EvaluationFormEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationFormEntity.java new file mode 100644 index 00000000..9d3bd3fa --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/entities/EvaluationFormEntity.java @@ -0,0 +1,29 @@ +package net.gepafin.tendermanagement.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +@Entity +@Table(name = "EVALUATION_FORM") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class EvaluationFormEntity extends BaseEntity{ + + + @Column(name = "LABEL") + private String label; + + @ManyToOne + @JoinColumn(name = "CALL_ID") + private CallEntity call; + + @Column(name = "CONTENT") + private String content; + + @Column(name="IS_DELETED") + private Boolean isDeleted; +} diff --git a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java index 64fd530c..e42a0fb8 100644 --- a/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java +++ b/src/main/java/net/gepafin/tendermanagement/enums/UserActionContextEnum.java @@ -172,6 +172,13 @@ public enum UserActionContextEnum { GET_ALL_APPLICATION_BY_PAGINATION("GET_ALL_APPLICATION_BY_PAGINATION"), + /** Evaluation form action context **/ + GET_EVALUATION_FORM("GET_EVALUATION_FORM"), + CREATE_EVALUATION_FORM("CREATE_EVALUATION_FORM"), + UPDATE_EVALUATION_FORM("UPDATE_EVALUATION_FORM"), + DELETE_EVALUATION_FORM("DELETE_EVALUATION_FORM"), + + GET_USER_ACTION("GET_USER_ACTION"), GET_ACTION_CONTEXT_LABELS("GET_ACTION_CONTEXT_LABELS"); diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationFormRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationFormRequest.java new file mode 100644 index 00000000..bf8dad8f --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/EvaluationFormRequest.java @@ -0,0 +1,14 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class EvaluationFormRequest { + + private String label; + + private List content; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationFormResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationFormResponseBean.java new file mode 100644 index 00000000..78abb382 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/EvaluationFormResponseBean.java @@ -0,0 +1,19 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +import java.util.List; + +@Data +public class EvaluationFormResponseBean { + + private Long id; + + private String callStatus; + + private String label; + + private Long callId; + + private List content; +} diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/EvalualtionFormRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/EvalualtionFormRepository.java new file mode 100644 index 00000000..032eb9ed --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/repositories/EvalualtionFormRepository.java @@ -0,0 +1,15 @@ +package net.gepafin.tendermanagement.repositories; + +import net.gepafin.tendermanagement.entities.EvaluationFormEntity; +import net.gepafin.tendermanagement.entities.FormEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; +@Repository +public interface EvalualtionFormRepository extends JpaRepository { + + List findByCallIdAndIsDeletedFalse(Long callId); + EvaluationFormEntity findByIdAndIsDeletedFalse(Long formId); + List findByIdInAndIsDeletedFalse(List evaluationFormId); +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/EvaluationFormService.java b/src/main/java/net/gepafin/tendermanagement/service/EvaluationFormService.java new file mode 100644 index 00000000..77e99267 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/EvaluationFormService.java @@ -0,0 +1,28 @@ +package net.gepafin.tendermanagement.service; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.ApplicationEntity; +import net.gepafin.tendermanagement.entities.EvaluationFormEntity; +import net.gepafin.tendermanagement.entities.FormEntity; +import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean; +import net.gepafin.tendermanagement.model.request.EvaluationFormRequest; +import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean; +import net.gepafin.tendermanagement.model.response.FormResponseBean; + +import java.util.List; + +public interface EvaluationFormService { + + public EvaluationFormResponseBean createEvaluationForm(HttpServletRequest request, Long callId, EvaluationFormRequest formRequest); + + public EvaluationFormResponseBean updateEvaluationForm(HttpServletRequest request, Long evaluationFormId, EvaluationFormRequest formRequest); + + public EvaluationFormResponseBean getEvaluationFormById(HttpServletRequest request, Long evaluationFormId); + + public void deleteEvaluationForm(HttpServletRequest request, Long evaluationFormId); + + public EvaluationFormEntity validateEvaluationForm(Long id); + + public List getEvaluationFormsByCallId(HttpServletRequest request, Long callId); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationFormServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationFormServiceImpl.java new file mode 100644 index 00000000..2c7260e1 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/EvaluationFormServiceImpl.java @@ -0,0 +1,62 @@ +package net.gepafin.tendermanagement.service.impl; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.dao.EvaluationFormDao; +import net.gepafin.tendermanagement.entities.*; +import net.gepafin.tendermanagement.model.request.EvaluationFormRequest; +import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean; +import net.gepafin.tendermanagement.service.EvaluationFormService; +import net.gepafin.tendermanagement.util.Validator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class EvaluationFormServiceImpl implements EvaluationFormService { + + @Autowired + private EvaluationFormDao evalauationFormDao; + + @Autowired + private Validator validator; + + @Override + public EvaluationFormResponseBean createEvaluationForm(HttpServletRequest request, Long callId, EvaluationFormRequest evaluationFormRequest) { + UserEntity user = validator.validateUser(request); + CallEntity call = validator.validateUserWithCall(user, callId); + return evalauationFormDao.createEvaluationForm(call,evaluationFormRequest); + } + + @Override + public EvaluationFormResponseBean updateEvaluationForm(HttpServletRequest request, Long evaluationFormId, EvaluationFormRequest evaluationFormRequest) { + UserEntity user = validator.validateUser(request); + return evalauationFormDao.updateEvaluationForm(user, evaluationFormId,evaluationFormRequest); + } + + @Override + public EvaluationFormResponseBean getEvaluationFormById(HttpServletRequest request, Long evaluationFormId) { + UserEntity user = validator.validateUser(request); + return evalauationFormDao.getEvaluationFormById(user, evaluationFormId); + } + + @Override + public void deleteEvaluationForm(HttpServletRequest request, Long evaluationFormId) { + UserEntity user = validator.validateUser(request); + evalauationFormDao.deleteEvaluationForm(user, evaluationFormId); + } + + @Override + public EvaluationFormEntity validateEvaluationForm(Long id) { + return evalauationFormDao.validateForm(id); + } + + @Override + public List getEvaluationFormsByCallId(HttpServletRequest request, Long callId) { + UserEntity user = validator.validateUser(request); + CallEntity call = validator.validateUserWithCall(user, callId); + return evalauationFormDao.getEvaluationFormsByCallId(call); + } + + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationFormApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationFormApi.java new file mode 100644 index 00000000..727ea6e8 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/EvaluationFormApi.java @@ -0,0 +1,101 @@ +package net.gepafin.tendermanagement.web.rest.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.ExampleObject; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; +import net.gepafin.tendermanagement.model.request.EvaluationFormRequest; +import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean; +import net.gepafin.tendermanagement.model.response.FormResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +public interface EvaluationFormApi { + + @Operation(summary = "Api to create Evaluation form", + 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) })) + }) + @PostMapping(value = "/call/{callId}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + public ResponseEntity> createEvaluationForm(HttpServletRequest request, @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId, + @Parameter(description = "evaluationForm request object", required = true) + @Valid @RequestBody EvaluationFormRequest evaluationFormRequest); + + + @Operation(summary = "Api to update Evaluation form", + 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 = "/{evaluationFormId}", + produces = { "application/json" }) + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + ResponseEntity> updateEvaluationForm(HttpServletRequest request, + @Parameter(description = "The Evaluation form ID", required = true) @PathVariable("evaluationFormId") Long evaluationFormId, + @Parameter(description = "Evaluation form request object", required = true) @Valid @RequestBody EvaluationFormRequest evaluationFormRequest); + + @Operation(summary = "Api to get Evaluation form by id", + 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) })) }) + @GetMapping(value = "/{evaluationFormId}", + produces = { "application/json" }) + ResponseEntity> getEvaluationFormById(HttpServletRequest request, + @Parameter(description = "The Evaluation form ID", required = true) @PathVariable("evaluationFormId") Long evaluationFormId); + + + @Operation(summary = "Api to delete Evaluation form", + 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) })) }) + @DeleteMapping(value = "/{evaluationFormId}") + @PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") + ResponseEntity> deleteEvaluationForm(HttpServletRequest request, + @Parameter(description = "The Evaluation form ID", required = true) @PathVariable("evaluationFormId") Long evaluationFormId); + + @Operation(summary = "Api to get Evaluation forms by callId", + 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) })) }) + @GetMapping(value = "/call/{callId}", + produces = { "application/json" }) + ResponseEntity>> getEvaluationFormsByCallId(HttpServletRequest request, + @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationFormApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationFormApiController.java new file mode 100644 index 00000000..f8058247 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/EvaluationFormApiController.java @@ -0,0 +1,88 @@ +package net.gepafin.tendermanagement.web.rest.api.impl; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.config.Translator; +import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.enums.UserActionContextEnum; +import net.gepafin.tendermanagement.enums.UserActionLogsEnum; +import net.gepafin.tendermanagement.model.request.EvaluationFormRequest; +import net.gepafin.tendermanagement.model.request.UserActionRequest; +import net.gepafin.tendermanagement.model.response.EvaluationFormResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.service.EvaluationFormService; +import net.gepafin.tendermanagement.util.LoggingUtil; +import net.gepafin.tendermanagement.web.rest.api.EvaluationFormApi; +import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +@RestController +@RequestMapping("${openapi.gepafin.base-path:/v1/evaluationForm}") +public class EvaluationFormApiController implements EvaluationFormApi { + + @Autowired + private EvaluationFormService evaluationFormService; + + @Autowired + private LoggingUtil loggingUtil; + + @Override + public ResponseEntity> createEvaluationForm(HttpServletRequest request, Long callId, EvaluationFormRequest evaluationFormRequest) { + + /** This code is responsible for creating user action logs for the "Create Evaluation form" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.INSERT).actionContext(UserActionContextEnum.CREATE_EVALUATION_FORM).build()); + + EvaluationFormResponseBean evaluationFormResponseBean = evaluationFormService.createEvaluationForm(request,callId, evaluationFormRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(evaluationFormResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FORM_CREATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> updateEvaluationForm(HttpServletRequest request, Long evaluationFormId, EvaluationFormRequest evaluationFormRequest) { + + /** This code is responsible for creating user action logs for the "Update Evaluation form" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.UPDATE).actionContext(UserActionContextEnum.UPDATE_EVALUATION_FORM).build()); + + EvaluationFormResponseBean evaluationFormResponseBean = evaluationFormService.updateEvaluationForm(request, evaluationFormId, evaluationFormRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(evaluationFormResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FORM_UPDATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> getEvaluationFormById(HttpServletRequest request, Long evaluationFormId) { + + /** This code is responsible for creating user action logs for the "Get Evaluation form by id" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_EVALUATION_FORM).build()); + + EvaluationFormResponseBean evaluationFormResponseBean= evaluationFormService.getEvaluationFormById(request,evaluationFormId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(evaluationFormResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FORM_FETCHED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> deleteEvaluationForm(HttpServletRequest request, Long evaluationFormId) { + + /** This code is responsible for creating user action logs for the "delete Evaluation form" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.DELETE).actionContext(UserActionContextEnum.DELETE_EVALUATION_FORM).build()); + + evaluationFormService.deleteEvaluationForm(request,evaluationFormId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FORM_DELETED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity>> getEvaluationFormsByCallId(HttpServletRequest request, Long callId) { + + /** This code is responsible for creating user action logs for the "Get Evaluation forms by call id" operation. **/ + loggingUtil.logUserAction(UserActionRequest.builder().request(request).actionType(UserActionLogsEnum.VIEW).actionContext(UserActionContextEnum.GET_EVALUATION_FORM).build()); + + List evaluationFormResponseBean= evaluationFormService.getEvaluationFormsByCallId(request,callId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(evaluationFormResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.EVALUATION_FORM_FETCHED_SUCCESSFULLY))); + } + +} 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 59d3147a..4e282d43 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 @@ -2253,5 +2253,25 @@ unique_uuid = 'p4lk3bcx1RStqTaIVVbXs' - + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 5fcbc7f7..6c824cbc 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -353,3 +353,12 @@ action.context.labels.fetched.successfully = Action Context Labels Fetched Succe amount.accepted.required=Amount accepted is required while approving the application. call.expired=Call has been expired. amount.request.should.greated.then.zero=Requested amount should not be empty and should be greater than zero. + + + +evaluation.form.created.successfully=Evaluation form created successfully. +evaluation.form.updated.successfully=Evaluation form updated successfully. +evaluation.form.deleted.successfully=Evaluation form deleted successfully. +evaluation.form.fetched.successfully=Evaluation form fetched successfully. +evaluation.form.not.found=Evaluation form not found. + diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index fd355f2f..cca4b808 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -343,4 +343,12 @@ action.context.labels.fetched.successfully = Etichette del contesto dell'azione amount.accepted.required=L'importo accettato � obbligatorio durante l'approvazione della domanda. call.expired=La chiamata � scaduta. amount.request.should.greated.then.zero=L'importo richiesto non deve essere vuoto e deve essere maggiore di zero. -call.expired=La chiamata � scaduta. + + + +evaluation.form.created.successfully=Modulo di valutazione creato con successo. +evaluation.form.updated.successfully=Modulo di valutazione aggiornato con successo. +evaluation.form.deleted.successfully=Modulo di valutazione eliminato con successo. +evaluation.form.fetched.successfully=Modulo di valutazione recuperato con successo. +evaluation.form.not.found=Modulo di valutazione non trovato. +