Merge branch 'develop' of https://github.com/Kitzanos/GEPAFIN-BE into develop

This commit is contained in:
rajesh
2024-09-16 20:20:53 +05:30
7 changed files with 110 additions and 27 deletions

View File

@@ -48,10 +48,10 @@ public class ApplicationDao {
@Autowired
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);
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);
@@ -90,16 +90,14 @@ public class ApplicationDao {
log.info("Fetching application with ID: {}", id);
ApplicationEntity applicationEntity = validateApplication(id);
List<ApplicationFormEntity> applicationFormEntities = applicationFormRepository.findByApplicationId(applicationEntity.getId());
ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formId);
List<ApplicationFormFieldResponseBean> applicationFormFieldResponseBeans=new ArrayList<>();
ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null;
for (ApplicationFormEntity applicationFormEntity:applicationFormEntities){
List<ApplicationFormFieldEntity> applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntities) {
applicationFormFieldResponseBeans1 = convertApplicationFormFieldEntityToApplicationFormFieldResponseBean(applicationFormFieldEntity, applicationFormEntity.getId());
applicationFormFieldResponseBeans.add(applicationFormFieldResponseBeans1);
}
}
ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity);
applicationResponseBean.setFormFields(applicationFormFieldResponseBeans);
return applicationResponseBean;
@@ -179,15 +177,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){
@@ -197,19 +186,30 @@ public class ApplicationDao {
}
public List<ApplicationFormFieldEntity> createOrUpdateMultipleFormFields(List<ApplicationFormFieldRequestBean> formFieldResponseBeans, ApplicationFormEntity applicationFormEntity) {
List<ApplicationFormFieldEntity> existingFields = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId());
List<ApplicationFormFieldEntity> 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<ApplicationFormFieldEntity> applicationFormFieldEntities ) {
ApplicationFormFieldEntity applicationFormFieldEntity=null;
if(applicationFormFieldEntities==null || applicationFormFieldEntities.isEmpty()){
applicationFormFieldEntity = new ApplicationFormFieldEntity();
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
}else {
for (ApplicationFormFieldEntity applicationFormFieldEntity1 : applicationFormFieldEntities) {
if (applicationFormFieldEntity1.getFieldId().equals(applicationFormFieldRequestBean.getFieldId())) {
applicationFormFieldEntity = applicationFormFieldEntity1;
break;
} else {
applicationFormFieldEntity = validateApplicationFormField(applicationFormFieldRequestBean.getId());
applicationFormFieldEntity = new ApplicationFormFieldEntity();
applicationFormFieldEntity.setApplicationForm(applicationFormEntity);
}
}
}
Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId());
Utils.setIfUpdated(applicationFormFieldEntity::getFieldValue, applicationFormFieldEntity::setFieldValue, applicationFormFieldRequestBean.getFieldValue());

View File

@@ -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);

View File

@@ -35,9 +35,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

View File

@@ -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<Response<ApplicationResponseBean>> 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 = {

View File

@@ -36,8 +36,8 @@ public class ApplicationApiController implements ApplicationApi {
private ApplicationService applicationService;
@Override
public ResponseEntity<Response<ApplicationResponseBean>> createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) {
ApplicationResponseBean applicationResponseBean= applicationService.createApplication(request,applicationRequestBean,formId);
public ResponseEntity<Response<ApplicationResponseBean>> 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))); }

View File

@@ -702,4 +702,12 @@
<column name="tracking_id" type="VARCHAR(255)"></column>
</addColumn>
</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>

View File

@@ -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);