From 3a0257139451d0e0c2cb4f1b916edb910229b5ac Mon Sep 17 00:00:00 2001 From: rajesh Date: Mon, 16 Sep 2024 18:47:51 +0530 Subject: [PATCH 1/2] Updated put endpoint of application --- .../tendermanagement/dao/ApplicationDao.java | 40 +++++++++---------- .../service/ApplicationService.java | 2 +- .../service/impl/ApplicationServiceImpl.java | 4 +- .../web/rest/api/ApplicationApi.java | 5 ++- .../api/impl/ApplicationApiController.java | 4 +- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index f76b378f..fe76affd 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -50,10 +50,10 @@ public class ApplicationDao { @Autowired private FormDao formDao; - public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId) { + public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) { FormEntity formEntity = formService.validateForm(formId); CallEntity call = callService.validateCall(formEntity.getCall().getId()); - ApplicationEntity applicationEntity = getApplicationOrCreate(userEntity, call, formEntity); + ApplicationEntity applicationEntity = validateApplication(applicationId); formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity); createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity); @@ -92,16 +92,14 @@ public class ApplicationDao { log.info("Fetching application with ID: {}", id); ApplicationEntity applicationEntity = validateApplication(id); - List applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId()); + ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formId); List applicationFormFieldResponseBeans=new ArrayList<>(); ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null; - for (ApplicationFormEntity applicationFormEntity:applicationFormEntities){ List applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) { applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId()); applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1); } - } ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity); applicationResponseBean.setFormFields(applicationFormFieldResponseBeans); applicationResponseBean.setCurrentFormId(formId); @@ -164,15 +162,6 @@ public class ApplicationDao { return response; } - public ApplicationEntity getApplicationOrCreate(UserEntity userEntity, CallEntity callEntity, FormEntity formEntity) { - ApplicationEntity applicationEntity = applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), callEntity.getId()).orElse(null); - if (applicationEntity == null) { - validateFormId(formEntity, callEntity); - applicationEntity = createApplicationEntity(userEntity, callEntity); - applicationEntity=saveApplicationEntity(applicationEntity); - } - return applicationEntity; - } private ApplicationFormEntity getApplicationFormOrCreate(FormEntity formEntity, ApplicationEntity applicationEntity) { ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId()); if(applicationFormEntity == null){ @@ -182,19 +171,30 @@ public class ApplicationDao { } public List createOrUpdateMultipleFormFields(List formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) { + List existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); + List applicationFormFieldEntity = formFieldResponseBeans.stream() - .map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity)) + .map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields)) .collect(Collectors.toList()); return applicationFormFieldEntity; } - public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity) { - ApplicationFormFieldEntity applicationFormFieldEntity; - if (applicationFormFieldRequestBean.getId() == null || applicationFormFieldRequestBean.getId() == 0) { + public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity,List applicationFormFieldEntities ) { + + ApplicationFormFieldEntity applicationFormFieldEntity=null; + if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){ applicationFormFieldEntity = new ApplicationFormFieldEntity(); applicationFormFieldEntity.setApplicationForm(applicationFormEntity); - } else { - applicationFormFieldEntity = validateApplicationFormField(applicationFormFieldRequestBean.getId()); + }else { + for (ApplicationFormFieldEntity applicationFormFieldEntity1 : applicationFormFieldEntities) { + if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId())) { + applicationFormFieldEntity = applicationFormFieldEntity1; + break; + } else { + applicationFormFieldEntity = new ApplicationFormFieldEntity(); + applicationFormFieldEntity.setApplicationForm(applicationFormEntity); + } + } } Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId()); Utils.setIfUpdated(applicationFormFieldEntity::getFieldValue, applicationFormFieldEntity::setFieldValue, applicationFormFieldRequestBean.getFieldValue()); diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java index e9f46f29..152bc1b5 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java @@ -15,7 +15,7 @@ import java.util.List; public interface ApplicationService { - public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId); + public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId); ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId); 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 28fa197d..8e9d1235 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -40,9 +40,9 @@ public class ApplicationServiceImpl implements ApplicationService { @Override @Transactional(rollbackFor = Exception.class) - public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) { + public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) { UserEntity userEntity = validator.validateUser(request); - return applicationDao.createApplication(applicationRequestBean,userEntity,formId); + return applicationDao.createApplication(applicationRequestBean,userEntity,formId,applicationId); } @Override 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 76937d58..879691e4 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 @@ -37,11 +37,12 @@ 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 = "/form/{formId}", + @PutMapping(value = "/{applicationId}", produces = { "application/json" }) ResponseEntity> createApplication(HttpServletRequest request, @Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequestBean applicationRequestBean, - @Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId); + @Parameter(description = "The application id", required = true) @PathVariable(value = "applicationId", required = true) Long applicationId, + @Parameter(description = "The form ID", required = true) @RequestParam("formId") Long formId); @Operation(summary = "Api to get an application by id", responses = { 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 f0cb8b9b..1d8b205b 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 @@ -36,8 +36,8 @@ public class ApplicationApiController implements ApplicationApi { private ApplicationService applicationService; @Override - public ResponseEntity> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) { - ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,formId); + public ResponseEntity> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) { + ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,applicationId,formId); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); } From 4582088e77d17a5a82e1364a30f50f41c09b25ee Mon Sep 17 00:00:00 2001 From: harish Date: Mon, 16 Sep 2024 19:25:10 +0530 Subject: [PATCH 2/2] updated data in form field --- .../db/changelog/db.changelog-1.0.0.xml | 8 ++ .../updated_form_field_data_16-09-2024.sql | 74 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 src/main/resources/db/dump/updated_form_field_data_16-09-2024.sql 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 fcba8de3..f4a78969 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 @@ -702,4 +702,12 @@ + + + TRUNCATE TABLE FORM_FIELD RESTART IDENTITY; + + + + diff --git a/src/main/resources/db/dump/updated_form_field_data_16-09-2024.sql b/src/main/resources/db/dump/updated_form_field_data_16-09-2024.sql new file mode 100644 index 00000000..5cd80b6f --- /dev/null +++ b/src/main/resources/db/dump/updated_form_field_data_16-09-2024.sql @@ -0,0 +1,74 @@ +INSERT INTO FORM_FIELD (SORT_ORDER, NAME, LABEL, DESCRIPTION, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES +(1, 'textinput', 'Testo Breve', 'Per risposte concise (nomi, titoli, brevi descrizioni)', + '{"label": "Testo Breve", "placeholder": ""}', + '{"isRequired": false, "minLength": null, "maxLength": null, "pattern": null, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(2, 'textarea', 'Testo Lungo', 'Campo di testo esteso per paragrafi, descrizioni, proposte', + '{"label": "Testo Lungo", "placeholder": ""}', + '{"isRequired": false, "minLength": null, "maxLength": null, "pattern": null, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(3, 'wysiwyg', 'Campo di Testo Formattato', 'Editor avanzato per testo con formattazione', + '{"label": "Testo Formattato", "placeholder": ""}', + '{"isRequired": false, "minLength": null, "maxLength": null, "pattern": null, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(4, 'numberinput', 'Campo Numerico', 'Per l''inserimento di valori numerici (quantità, importi, percentuali)', + '{"label": "Numero", "placeholder": 0, "step": 0}', + '{"isRequired": false, "min": null, "max": null, "pattern": null, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(5, 'radio', 'Scelta Singola', 'Gruppo di opzioni per selezione singola', + '{"label": "Scelta Singola", "options": []}', + '{"isRequired": false, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(6, 'select', 'Menu a Tendina', 'Selezione da opzioni predefinite', + '{"label": "Menu a Tendina", "options": []}', + '{"isRequired": false, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(7, 'checkboxes', 'Scelta Multipla', 'Gruppo di opzioni per selezione singola o multipla', + '{"label": "Scelta Multipla", "options": []}', + '{"isRequired": false, "min": null, "max": null, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(8, 'switch', 'Casella di Spunta', 'Per selezioni binarie, accettazioni, conferme', + '{"label": "Casella di Spunta"}', + '{"isRequired": false}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(9, 'datepicker', 'Data', 'Selezione di data', + '{"label": "Data"}', + '{"isRequired": false, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(10, 'fileupload', 'Caricamento File', 'Per l''upload di documenti o immagini', + '{"label": "Caricamento File", "mime": []}', + '{"isRequired": false, "maxSize": 100000, "custom": null}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(11, 'textinput', 'Campo Partita IVA', 'Specifico per l''inserimento del numero di Partita IVA', + '{"label": "Partita IVA", "placeholder": ""}', + '{"isRequired": true, "minLength": 11, "maxLength": 11, "custom": "isPIVA"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(12, 'textinput', 'Campo Codice Fiscale', 'Specifico per l''inserimento del Codice Fiscale italiano per persone fisiche e giuridiche', + '{"label": "Codice Fiscale", "placeholder": ""}', + '{"isRequired": true, "minLength": 11, "maxLength": 16, "custom": "isCodiceFiscale"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(13, 'numberinput', 'Campo CAP', 'Per l''inserimento del Codice di Avviamento Postale', + '{"label": "CAP", "placeholder": ""}', + '{"isRequired": true, "custom": "isCAP"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(14, 'textinput', 'Campo IBAN', 'Per l''inserimento del codice IBAN', + '{"label": "IBAN", "placeholder": ""}', + '{"isRequired": true, "custom": "isIBAN"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(15, 'textinput', 'Campo Email', 'Per l''inserimento di indirizzi email standard (non PEC)', + '{"label": "Campo Email", "placeholder": "nome@esempio.it"}', + '{"isRequired": false, "custom": "isEmail"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(16, 'textinput', 'Campo PEC', 'Specifico per l''inserimento di un indirizzo di Posta Elettronica Certificata', + '{"label": "Campo PEC", "placeholder": "nome@pec.it"}', + '{"isRequired": false, "custom": "isEmailPEC"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(17, 'textinput', 'Campo URL', 'Per l''inserimento di indirizzi web', + '{"label": "Indirizzo URL", "placeholder": ""}', + '{"isRequired": false, "custom": "isUrl"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP), +(18, 'textinput', 'Marca da bollo', 'Per inserire codice di marca da bollo', + '{"label": "Marca da bollo", "placeholder": "Numero identificativo"}', + '{"isRequired": false, "custom": "isMarcaDaBollo"}', + CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);