Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into develop
This commit is contained in:
@@ -48,10 +48,10 @@ public class ApplicationDao {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private FormService formService;
|
private FormService formService;
|
||||||
|
|
||||||
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);
|
FormEntity formEntity = formService.validateForm(formId);
|
||||||
CallEntity call = callService.validateCall(formEntity.getCall().getId());
|
CallEntity call = callService.validateCall(formEntity.getCall().getId());
|
||||||
ApplicationEntity applicationEntity = getApplicationOrCreate(userEntity, call, formEntity);
|
ApplicationEntity applicationEntity = validateApplication(applicationId);
|
||||||
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
|
formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity);
|
||||||
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
|
ApplicationFormEntity applicationFormEntity = getApplicationFormOrCreate(formEntity, applicationEntity);
|
||||||
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity);
|
createOrUpdateMultipleFormFields(applicationRequestBean.getFormFields(), applicationFormEntity);
|
||||||
@@ -90,16 +90,14 @@ public class ApplicationDao {
|
|||||||
log.info("Fetching application with ID: {}", id);
|
log.info("Fetching application with ID: {}", id);
|
||||||
|
|
||||||
ApplicationEntity applicationEntity = validateApplication(id);
|
ApplicationEntity applicationEntity = validateApplication(id);
|
||||||
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId());
|
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formId);
|
||||||
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
|
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
|
||||||
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
|
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
|
||||||
for (ApplicationFormEntity applicationFormEntity:applicationFormEntities){
|
|
||||||
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
||||||
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) {
|
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) {
|
||||||
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
|
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
|
||||||
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
|
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
|
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
|
||||||
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
|
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
|
||||||
return applicationResponseBean;
|
return applicationResponseBean;
|
||||||
@@ -179,15 +177,6 @@ public class ApplicationDao {
|
|||||||
return response;
|
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) {
|
private ApplicationFormEntity getApplicationFormOrCreate(FormEntity formEntity, ApplicationEntity applicationEntity) {
|
||||||
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
|
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(), formEntity.getId());
|
||||||
if(applicationFormEntity == null){
|
if(applicationFormEntity == null){
|
||||||
@@ -197,19 +186,30 @@ public class ApplicationDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) {
|
public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) {
|
||||||
|
List<ApplicationFormFieldEntity> existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
|
||||||
|
|
||||||
List<ApplicationFormFieldEntity> applicationFormFieldEntity = formFieldResponseBeans.stream()
|
List<ApplicationFormFieldEntity> applicationFormFieldEntity = formFieldResponseBeans.stream()
|
||||||
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity))
|
.map(requestBean -> createOrUpdateApplicationFormField(requestBean, applicationFormEntity,existingFields))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
return applicationFormFieldEntity;
|
return applicationFormFieldEntity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity) {
|
public ApplicationFormFieldEntity createOrUpdateApplicationFormField(ApplicationFormFieldRequestBean applicationFormFieldRequestBean, ApplicationFormEntity applicationFormEntity,List<ApplicationFormFieldEntity> applicationFormFieldEntities ) {
|
||||||
ApplicationFormFieldEntity applicationFormFieldEntity;
|
|
||||||
if (applicationFormFieldRequestBean.getId() == null || applicationFormFieldRequestBean.getId() == 0) {
|
ApplicationFormFieldEntity applicationFormFieldEntity=null;
|
||||||
|
if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){
|
||||||
applicationFormFieldEntity = new ApplicationFormFieldEntity();
|
applicationFormFieldEntity = new ApplicationFormFieldEntity();
|
||||||
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
|
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
|
||||||
} else {
|
}else {
|
||||||
applicationFormFieldEntity = validateApplicationFormField(applicationFormFieldRequestBean.getId());
|
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::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId());
|
||||||
Utils.setIfUpdated(applicationFormFieldEntity::getFieldValue, applicationFormFieldEntity::setFieldValue, applicationFormFieldRequestBean.getFieldValue());
|
Utils.setIfUpdated(applicationFormFieldEntity::getFieldValue, applicationFormFieldEntity::setFieldValue, applicationFormFieldRequestBean.getFieldValue());
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface ApplicationService {
|
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);
|
ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId);
|
||||||
|
|
||||||
|
|||||||
@@ -35,9 +35,9 @@ public class ApplicationServiceImpl implements ApplicationService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@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);
|
UserEntity userEntity = validator.validateUser(request);
|
||||||
return applicationDao.createApplication(applicationRequestBean,userEntity,formId);
|
return applicationDao.createApplication(applicationRequestBean,userEntity,formId,applicationId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -37,11 +37,12 @@ public interface ApplicationApi {
|
|||||||
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
@ExampleObject(value = ErrorConstants.UNAUTHORIZED_ERROR_EXAMPLE) })),
|
||||||
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
@ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = {
|
||||||
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
@ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) })
|
||||||
@PutMapping(value = "/form/{formId}",
|
@PutMapping(value = "/{applicationId}",
|
||||||
produces = { "application/json" })
|
produces = { "application/json" })
|
||||||
ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request,
|
ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request,
|
||||||
@Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequestBean applicationRequestBean,
|
@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",
|
@Operation(summary = "Api to get an application by id",
|
||||||
responses = {
|
responses = {
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ public class ApplicationApiController implements ApplicationApi {
|
|||||||
private ApplicationService applicationService;
|
private ApplicationService applicationService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) {
|
public ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) {
|
||||||
ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,formId);
|
ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,applicationId,formId);
|
||||||
return ResponseEntity.status(HttpStatus.CREATED)
|
return ResponseEntity.status(HttpStatus.CREATED)
|
||||||
.body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); }
|
.body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); }
|
||||||
|
|
||||||
|
|||||||
@@ -702,4 +702,12 @@
|
|||||||
<column name="tracking_id" type="VARCHAR(255)"></column>
|
<column name="tracking_id" type="VARCHAR(255)"></column>
|
||||||
</addColumn>
|
</addColumn>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
<changeSet id="16-09-2024_1" author="Harish Bagora">
|
||||||
|
<sql>
|
||||||
|
TRUNCATE TABLE FORM_FIELD RESTART IDENTITY;
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<sqlFile dbms="postgresql"
|
||||||
|
path="classpath:db/dump/updated_form_field_data_16-09-2024.sql" />
|
||||||
|
</changeSet>
|
||||||
</databaseChangeLog>
|
</databaseChangeLog>
|
||||||
|
|||||||
@@ -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);
|
||||||
Reference in New Issue
Block a user