From 6224ab526adc1f261396735289b297ae99ecd3fd Mon Sep 17 00:00:00 2001 From: rajesh Date: Sat, 14 Sep 2024 20:22:03 +0530 Subject: [PATCH] Updated get endpoints --- .../constants/GepafinConstant.java | 1 + .../tendermanagement/dao/ApplicationDao.java | 147 ++++++++++++------ .../model/request/ApplicationRequest.java | 16 ++ .../model/request/ApplicationRequestBean.java | 2 - .../response/ApplicationGetResponseBean.java | 23 +++ .../model/response/ApplicationResponse.java | 22 +++ .../response/FormApplicationResponse.java | 21 +++ .../service/ApplicationService.java | 12 +- .../service/impl/ApplicationServiceImpl.java | 28 ++-- .../web/rest/api/ApplicationApi.java | 28 +++- .../api/impl/ApplicationApiController.java | 24 ++- src/main/resources/message_en.properties | 4 +- src/main/resources/message_it.properties | 1 + 13 files changed, 256 insertions(+), 73 deletions(-) create mode 100644 src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequest.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java create mode 100644 src/main/java/net/gepafin/tendermanagement/model/response/FormApplicationResponse.java diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 6c206c00..7777325a 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -121,5 +121,6 @@ public class GepafinConstant { public static final String VALIDATION_FIELD_PATTERN = "validation.field.pattern"; public static final String VALIDATION_FIELD_NOT_NULL = "validation.field.not_null"; public static final String VALIDATION_FIELD_NOT_EMPTY = "validation.field.not_empty"; + public static final String APPLICATION_ALREADY_EXISTS="application.already.exists"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index f273704c..589b97f2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -5,9 +5,9 @@ import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.*; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.model.request.ApplicationFormFieldRequestBean; +import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; -import net.gepafin.tendermanagement.model.response.ApplicationFormFieldResponseBean; -import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; +import net.gepafin.tendermanagement.model.response.*; import net.gepafin.tendermanagement.repositories.ApplicationFormFieldRepository; import net.gepafin.tendermanagement.repositories.ApplicationFormRepository; import net.gepafin.tendermanagement.repositories.ApplicationRepository; @@ -50,9 +50,12 @@ public class ApplicationDao { @Autowired private FormService formService; - public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long callId) { - CallEntity call = callService.validateCall(callId); - FormEntity formEntity = formService.validateForm(applicationRequestBean.getFormId()); + @Autowired + private FormDao formDao; + + public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId) { + FormEntity formEntity = formService.validateForm(formId); + CallEntity call = callService.validateCall(formEntity.getCall().getId()); ApplicationEntity applicationEntity = getApplicationOrCreate(userEntity, call, formEntity); formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity); @@ -117,47 +120,25 @@ public class ApplicationDao { log.info("Application deleted with ID: {}", id); } - public List getAllApplications(Map userInfo) { + public List getAllApplications(UserEntity userEntity) { log.info("Fetching all applications"); - String userIdStr = (String) userInfo.get("userId"); - Long userId = Long.parseLong(userIdStr); - List applicationEntities = applicationRepository.findByUserIdAndIsDeletedFalse(userId); - List applicationIds = applicationEntities.stream() - .map(ApplicationEntity::getId) - .collect(Collectors.toList()); + List applicationResponses=new ArrayList<>(); + List applicationEntities = applicationRepository.findByUserIdAndIsDeletedFalse(userEntity.getId()); + for(ApplicationEntity applicationEntity:applicationEntities){ + ApplicationResponse responseBean = getApplicationResponse(applicationEntity); + applicationResponses.add(responseBean); + } + return applicationResponses; + } - List applicationFormEntities = applicationFormRepository.findByApplicationIdIn(applicationIds); - - List applicationFormIds = applicationFormEntities.stream() - .map(ApplicationFormEntity::getId) - .collect(Collectors.toList()); - - List applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormIdIn(applicationFormIds); - - - return applicationEntities.stream().map(applicationEntity -> { - ApplicationResponseBean responseBean = new ApplicationResponseBean(); - - responseBean.setCallId(applicationEntity.getCall().getId()); - responseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); - responseBean.setStatus(applicationEntity.getStatus()); - responseBean.setComments(applicationEntity.getComments()); - - List formFieldResponseBeans = applicationFormFieldEntities.stream() - .filter(field -> field.getApplicationForm().getApplication().getId().equals(applicationEntity.getId())) - .map(field -> { - ApplicationFormFieldResponseBean fieldResponseBean = new ApplicationFormFieldResponseBean(); - fieldResponseBean.setId(field.getId()); - fieldResponseBean.setFieldId(field.getFieldId()); - fieldResponseBean.setApplicationFormId(field.getApplicationForm().getId()); - fieldResponseBean.setFieldValue(field.getFieldValue()); - return fieldResponseBean; - }).collect(Collectors.toList()); - - responseBean.setFormFields(formFieldResponseBeans); - - return responseBean; - }).collect(Collectors.toList()); + private ApplicationResponse getApplicationResponse(ApplicationEntity applicationEntity) { + ApplicationResponse responseBean = new ApplicationResponse(); + responseBean.setId(applicationEntity.getId()); + responseBean.setCallId(applicationEntity.getCall().getId()); + responseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); + responseBean.setStatus(applicationEntity.getStatus()); + responseBean.setComments(applicationEntity.getComments()); + return responseBean; } public ApplicationEntity validateApplication(Long id) { @@ -247,4 +228,82 @@ public class ApplicationDao { ApplicationEntity applicationEntity=applicationRepository.save(application); return applicationEntity; } + + public ApplicationGetResponseBean getApplicationByFormId( Long applicationId,Long formId, UserEntity userEntity) { + + ApplicationEntity applicationEntity=null; + List formApplicationResponses = new ArrayList<>(); + List formEntities = new ArrayList<>(); + Optional applicationEntity1 = applicationRepository.findById(applicationId); + applicationEntity=applicationEntity1.get(); + if (applicationEntity == null) { + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG)); + } + if (formId != null) { + FormEntity formEntity = formService.validateForm(formId); + applicationEntity = applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), formEntity.getCall().getId()); + formEntities.add(formEntity); + processForm(formEntity, applicationEntity, formApplicationResponses); + } + else { + List applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId()); + for (ApplicationFormEntity applicationFormEntity : applicationFormEntities) { + FormEntity form = formService.validateForm(applicationFormEntity.getForm().getId()); + formEntities.add(form); + processForm(form, applicationEntity, formApplicationResponses); + } + } + + return createApplicationGetResponseBean(applicationEntity, formEntities, formApplicationResponses); + } + + private void processForm(FormEntity formEntity, ApplicationEntity applicationEntity, List formApplicationResponses) { + ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId()); + if(applicationFormEntity!=null) { + List applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); + FormApplicationResponse formApplicationResponse = createFormApplicationResponse(formEntity); + List applicationFormFieldResponseBeans = convertApplicationFormFieldEntitiesToApplicationFormFieldResponseBeans(applicationFormFieldEntities, applicationFormEntity.getId()); + + formApplicationResponse.setFormFields(applicationFormFieldResponseBeans); + formApplicationResponses.add(formApplicationResponse); + } + } + + private ApplicationGetResponseBean createApplicationGetResponseBean(ApplicationEntity applicationEntity, List formEntities, List formApplicationResponses) { + ApplicationGetResponseBean applicationGetResponseBean =createApplicationGetResponseBean(applicationEntity); + applicationGetResponseBean.setForm(formApplicationResponses); + return applicationGetResponseBean; + } + + private ApplicationGetResponseBean createApplicationGetResponseBean(ApplicationEntity applicationEntity) { + ApplicationGetResponseBean applicationGetResponseBean = new ApplicationGetResponseBean(); + applicationGetResponseBean.setId(applicationEntity.getId()); + applicationGetResponseBean.setStatus(applicationEntity.getStatus()); + applicationGetResponseBean.setComments(applicationEntity.getComments()); + applicationGetResponseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); + return applicationGetResponseBean; + } + + private FormApplicationResponse createFormApplicationResponse(FormEntity formEntity) { + FormApplicationResponse formApplicationResponse=new FormApplicationResponse(); + formApplicationResponse.setId(formEntity.getId()); + formApplicationResponse.setLabel(formEntity.getLabel()); + formApplicationResponse.setCallId(formEntity.getCall().getId()); + formApplicationResponse.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class)); + return formApplicationResponse; + } + + public ApplicationResponse createApplicationByCallId(ApplicationRequest applicationRequest,Long callId,UserEntity userEntity){ + CallEntity call=callService.validateCall(callId); + checkIfApplicationExists(call,userEntity); + ApplicationEntity applicationEntity=saveApplicationEntity(createApplicationEntity(userEntity,call)); + ApplicationResponse applicationResponse=getApplicationResponse(applicationEntity); + return applicationResponse; + } + public void checkIfApplicationExists(CallEntity call,UserEntity userEntity){ + ApplicationEntity applicationEntity=applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(),call.getId()); + if(applicationEntity!=null){ + throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_EXISTS)); + } + } } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequest.java new file mode 100644 index 00000000..920d1a2d --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequest.java @@ -0,0 +1,16 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class ApplicationRequest { + + private LocalDateTime submissionDate; + + private String status; + + private String comments; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequestBean.java index ce95d9d6..273519be 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationRequestBean.java @@ -9,7 +9,5 @@ import java.util.List; @Data public class ApplicationRequestBean { - private Long formId; - private List formFields; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java new file mode 100644 index 00000000..e566fc16 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java @@ -0,0 +1,23 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; +import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; +import net.gepafin.tendermanagement.model.response.FormResponseBean; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class ApplicationGetResponseBean { + + private Long id; + + private LocalDateTime submissionDate; + + private String status; + + private String comments; + + private List form; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java new file mode 100644 index 00000000..fdb0f6f3 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java @@ -0,0 +1,22 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; +import net.gepafin.tendermanagement.model.response.ApplicationFormFieldResponseBean; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class ApplicationResponse{ + + private Long id; + + private Long callId; + + private LocalDateTime submissionDate; + + private String status; + + private String comments; + +} \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FormApplicationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/FormApplicationResponse.java new file mode 100644 index 00000000..3c7a322a --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FormApplicationResponse.java @@ -0,0 +1,21 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; +import net.gepafin.tendermanagement.model.response.ApplicationFormFieldResponseBean; +import net.gepafin.tendermanagement.model.response.ContentResponseBean; + +import java.util.List; + +@Data +public class FormApplicationResponse { + + private Long id; + + private String label; + + private Long callId; + + private List content; + + private List formFields; +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java index a0534401..3c5fc6d0 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java @@ -2,20 +2,26 @@ package net.gepafin.tendermanagement.service; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.entities.ApplicationEntity; +import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; +import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; +import net.gepafin.tendermanagement.model.response.ApplicationResponse; import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; import java.util.List; public interface ApplicationService { - public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long callId); + public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId); - ApplicationResponseBean getApplicationById(HttpServletRequest request, Long applicationId); + ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId); - List getAllApplications(HttpServletRequest request); + List getAllApplications(HttpServletRequest request); void deleteApplication(HttpServletRequest request, Long applicationId); public ApplicationEntity validateApplication(Long userId); + + public ApplicationResponse createApplication(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java index 58bb221a..5952c4ef 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -4,7 +4,10 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.ApplicationDao; import net.gepafin.tendermanagement.entities.ApplicationEntity; import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; +import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; +import net.gepafin.tendermanagement.model.response.ApplicationResponse; import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.util.Validator; @@ -13,8 +16,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; -import java.util.Map; - @Service public class ApplicationServiceImpl implements ApplicationService { @@ -27,15 +28,16 @@ public class ApplicationServiceImpl implements ApplicationService { @Override @Transactional(rollbackFor = Exception.class) - public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long callId) { + public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) { UserEntity userEntity = validator.validateUser(request); - return applicationDao.createApplication(applicationRequestBean,userEntity,callId); + return applicationDao.createApplication(applicationRequestBean,userEntity,formId); } @Override @Transactional(readOnly = true) - public ApplicationResponseBean getApplicationById(HttpServletRequest request, Long applicationId) { - return null; + public ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId) { + UserEntity userEntity = validator.validateUser(request); + return applicationDao.getApplicationByFormId(applicationId,formId,userEntity); } @Override @@ -50,10 +52,16 @@ public class ApplicationServiceImpl implements ApplicationService { } @Override - @Transactional(readOnly = true) - public List getAllApplications(HttpServletRequest request) { - Map userInfo=validator.getUserInfoFromToken(request); - return applicationDao.getAllApplications(userInfo); + @Transactional(rollbackFor = Exception.class) + public ApplicationResponse createApplication(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId) { + UserEntity userEntity = validator.validateUser(request); + return applicationDao.createApplicationByCallId(applicationRequest,callId,userEntity); } + @Override + @Transactional(readOnly = true) + public List getAllApplications(HttpServletRequest request) { + UserEntity userEntity = validator.validateUser(request); + return applicationDao.getAllApplications(userEntity); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java index a251100a..0966d3d1 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java @@ -7,7 +7,10 @@ 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.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; +import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; +import net.gepafin.tendermanagement.model.response.ApplicationResponse; import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; @@ -30,11 +33,11 @@ public interface ApplicationApi { @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 = "/call/{callId}", + @PutMapping(value = "/form/{formId}", produces = { "application/json" }) ResponseEntity> createApplication(HttpServletRequest request, @Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequestBean applicationRequestBean, - @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + @Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId); @Operation(summary = "Api to get an application by id", responses = { @@ -46,8 +49,7 @@ public interface ApplicationApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "/{applicationId}", produces = "application/json") - ResponseEntity> getApplicationById(HttpServletRequest request, - @Parameter(description = "The application id", required = true) @PathVariable("applicationId") Long applicationId); + ResponseEntity> getApplicationByFormId(HttpServletRequest request, @Parameter(description = "The application id", required = true) @PathVariable(value = "applicationId", required = true) Long applicationId,@Parameter(description = "The form id", required = false) @RequestParam(value = "formId",required = false) Long formId); @Operation(summary = "Api to get all applications", responses = { @@ -59,7 +61,7 @@ public interface ApplicationApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "", produces = "application/json") - ResponseEntity>> getAllApplications(HttpServletRequest request); + ResponseEntity>> getAllApplications(HttpServletRequest request); @Operation(summary = "Api to delete application", responses = { @@ -73,5 +75,21 @@ public interface ApplicationApi { @DeleteMapping(value = "/{applicationId}") ResponseEntity> deleteApplication(HttpServletRequest request, @Parameter(description = "The application id", required = true) @PathVariable("applicationId") Long applicationId); + + @Operation(summary = "Api to create application", + 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 = { "application/json" }) + ResponseEntity> createApplicationByCallId(HttpServletRequest request, + @Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequest applicationRequest, + @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java index 00664319..183f54c8 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java @@ -3,9 +3,11 @@ 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.model.request.ApplicationRequest; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; +import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; +import net.gepafin.tendermanagement.model.response.ApplicationResponse; import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; -import net.gepafin.tendermanagement.model.response.FlowResponseBean; import net.gepafin.tendermanagement.model.util.Response; import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.web.rest.api.ApplicationApi; @@ -31,16 +33,16 @@ public class ApplicationApiController implements ApplicationApi { private ApplicationService applicationService; @Override - public ResponseEntity> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long callId) { - ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,callId); + public ResponseEntity> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) { + ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,formId); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); } @Override - public ResponseEntity> getApplicationById(HttpServletRequest request, - Long applicationId) { + public ResponseEntity> getApplicationByFormId(HttpServletRequest request + , Long applicationId,Long formId) { log.info("Get Application by ID - Application ID: {}", applicationId); - ApplicationResponseBean application = applicationService.getApplicationById(request,applicationId); + ApplicationGetResponseBean application = applicationService.getApplicationByFormId(request,applicationId,formId); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(application, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_SUCCESS_MSG))); } @@ -55,8 +57,14 @@ public class ApplicationApiController implements ApplicationApi { } @Override - public ResponseEntity>> getAllApplications(HttpServletRequest request) { - List applications = applicationService.getAllApplications(request); + public ResponseEntity> createApplicationByCallId(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId) { + ApplicationResponse applicationResponseBean=applicationService.createApplication(request,applicationRequest,callId); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); + } + @Override + public ResponseEntity>> getAllApplications(HttpServletRequest request) { + List applications = applicationService.getAllApplications(request); log.info("Get All Applications"); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(applications, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_SUCCESS_MSG))); diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 633130b3..3b7c11df 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -148,6 +148,7 @@ application.get.success=Application details fetched successfully. application.not.found=Application not found with the given ID. application.form.field.not.found=Application form field not found. Form.not.matches.to.call.initial.form=Form id does not matches to initial form id of call. +application.already.exists=Application already exists for this call. #Validation related messages validation.field.required=Field {0} is required. @@ -155,4 +156,5 @@ validation.field.min_length=Field {0} must be at least {1} characters long. validation.field.max_length=Field {0} must be no more than {1} characters long. validation.field.pattern=Field {0} does not match the required pattern. validation.field.not_null=Field {0} must not be null. -validation.field.not_empty=Field {0} must not be empty. \ No newline at end of file +validation.field.not_empty=Field {0} must not be empty. + diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 7990d89c..cd32956d 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -144,6 +144,7 @@ application.get.success=Dettagli dell'applicazione recuperati con successo. application.not.found=Applicazione non trovata con l'ID fornito. application.form.field.not.found=Campo del modulo di domanda non trovato. Form.not.matches.to.call.initial.form=L'ID del modulo non corrisponde all'ID del modulo iniziale della chiamata. +application.already.exists=L'applicazione esiste già per questa chiamata. #Validation related messages validation.field.required=Il campo {0} � obbligatorio.