diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java index 60aba2ea..4b9ada4f 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java @@ -11,6 +11,7 @@ import net.gepafin.tendermanagement.model.response.FormResponseBean; import net.gepafin.tendermanagement.repositories.FormRepository; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.FormService; +import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -18,6 +19,7 @@ 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.List; import java.util.stream.Collectors; @@ -63,7 +65,7 @@ public class FormDao { return convertFormEntityToFormResponseBean(formEntity); } public void validateForm(FormRequest formRequest){ - if(formRequest.getContent()==null || formRequest.getLabel()==null || (formRequest.getOrderNo() == null || formRequest.getOrderNo() <= 0)){ + if(formRequest.getContent()==null || formRequest.getLabel()==null ){ throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM)); } } @@ -74,6 +76,7 @@ public class FormDao { if(formRequest.getOrderNo()!=null && formRequest.getOrderNo() > 0) { Utils.setIfUpdated(formEntity::getOrderNo, formEntity::setOrderNo, formRequest.getOrderNo()); } + formEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); formEntity=saveFormEntity(formEntity); return convertFormEntityToFormResponseBean(formEntity); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java index 6f0149b0..c69e777d 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java @@ -9,6 +9,7 @@ import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; import net.gepafin.tendermanagement.model.response.SettingResponseBean; import net.gepafin.tendermanagement.repositories.FormFieldRepository; import net.gepafin.tendermanagement.service.FormFieldService; +import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -16,6 +17,7 @@ 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.List; import java.util.stream.Collectors; @@ -70,6 +72,7 @@ public class FormFieldDao { Utils.setIfUpdated(formFieldEntity::getLabel,formFieldEntity::setLabel,formFieldRequest.getLabel()); Utils.setIfUpdated(formFieldEntity::getSettings,formFieldEntity::setSettings,setSettingRequestBean(formFieldRequest.getSettings())); Utils.setIfUpdated(formFieldEntity::getValidators,formFieldEntity::setValidators,Utils.convertMapIntoJsonString(formFieldRequest.getValidators())); + formFieldEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); formFieldEntity=saveFormFieldEntity(formFieldEntity); return convertFormFieldEntityToFormFieldResponseBean(formFieldEntity); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java index b383a623..e9bb787c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java @@ -3,10 +3,13 @@ package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.FormTemplateEntity; +import net.gepafin.tendermanagement.model.request.ContentRequestBean; import net.gepafin.tendermanagement.model.request.FormTemplateRequest; +import net.gepafin.tendermanagement.model.response.ContentResponseBean; import net.gepafin.tendermanagement.model.response.FormTemplateResponseBean; import net.gepafin.tendermanagement.repositories.FormTemplateRepository; import net.gepafin.tendermanagement.service.FormTemplateService; +import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.Utils; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; @@ -14,6 +17,10 @@ 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.List; +import java.util.stream.Collectors; + @Component public class FormTemplateDao { @@ -26,7 +33,7 @@ public class FormTemplateDao { public FormTemplateEntity convertFormTemplateRequestToFormTemplateRequest(FormTemplateRequest formTemplateRequest){ FormTemplateEntity formTemplateEntity=new FormTemplateEntity(); - formTemplateEntity.setContent(formTemplateRequest.getContent()); + formTemplateEntity.setContent(setContentResponseBean(formTemplateRequest.getContent())); formTemplateEntity.setLabel(formTemplateRequest.getLabel()); formTemplateEntity=saveFormTemplateEntity(formTemplateEntity); return formTemplateEntity; @@ -38,10 +45,8 @@ public class FormTemplateDao { public FormTemplateResponseBean convertFormTemplateEntityToFormTemplateResponseBean(FormTemplateEntity formTemplateEntity){ FormTemplateResponseBean formTemplateResponseBean=new FormTemplateResponseBean(); formTemplateResponseBean.setId(formTemplateEntity.getId()); - formTemplateResponseBean.setContent(formTemplateEntity.getContent()); + formTemplateResponseBean.setContent(Utils.convertJsonStringToList(formTemplateEntity.getContent(), ContentResponseBean.class)); formTemplateResponseBean.setLabel(formTemplateEntity.getLabel()); - formTemplateResponseBean.setCreatedDate(formTemplateEntity.getCreatedDate()); - formTemplateResponseBean.setUpdatedDate(formTemplateEntity.getUpdatedDate()); return formTemplateResponseBean; } @@ -58,7 +63,8 @@ public class FormTemplateDao { public FormTemplateResponseBean updateFormTemplate(Long formTemplateId,FormTemplateRequest formTemplateRequest){ FormTemplateEntity formTemplateEntity = formTemplateService.getFormEntityById(formTemplateId); Utils.setIfUpdated(formTemplateEntity::getLabel,formTemplateEntity::setLabel,formTemplateRequest.getLabel()); - Utils.setIfUpdated(formTemplateEntity::getContent,formTemplateEntity::setContent,formTemplateRequest.getContent()); + Utils.setIfUpdated(formTemplateEntity::getContent,formTemplateEntity::setContent,setContentResponseBean(formTemplateRequest.getContent())); + formTemplateEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); formTemplateEntity=saveFormTemplateEntity(formTemplateEntity); return convertFormTemplateEntityToFormTemplateResponseBean(formTemplateEntity); } @@ -77,4 +83,13 @@ public class FormTemplateDao { FormTemplateEntity formTemplateEntity=formTemplateService.getFormEntityById(formTemplateId); formTemplateRepository.delete(formTemplateEntity); } + public String setContentResponseBean(List contentRequestBeans){ + return Utils.convertListToJsonString(contentRequestBeans); + } + public List getAllFormTemplate(){ + List formTemplateEntities=formTemplateRepository.findAll(); + List formTemplateResponseBeans=formTemplateEntities.stream() + .map(req -> convertFormTemplateEntityToFormTemplateResponseBean(req)).collect(Collectors.toList()); + return formTemplateResponseBeans; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java index e229cb3e..7e587852 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java @@ -2,10 +2,12 @@ package net.gepafin.tendermanagement.model.request; import lombok.Data; +import java.util.List; + @Data public class FormTemplateRequest { private String label; - private String content; + private List content; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java index ab85bf08..9e9503d5 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java @@ -1,12 +1,16 @@ package net.gepafin.tendermanagement.model.response; import lombok.Data; -import net.gepafin.tendermanagement.model.BaseBean; + +import java.util.List; @Data -public class FormTemplateResponseBean extends BaseBean { +public class FormTemplateResponseBean { + + private Long id; private String label; - private String content; + private List content; + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java b/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java index 4ab4bca7..7f69ae2e 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java @@ -5,6 +5,8 @@ import net.gepafin.tendermanagement.entities.FormTemplateEntity; import net.gepafin.tendermanagement.model.request.FormTemplateRequest; import net.gepafin.tendermanagement.model.response.FormTemplateResponseBean; +import java.util.List; + public interface FormTemplateService { public FormTemplateResponseBean createTemplateForm(HttpServletRequest request, FormTemplateRequest formTemplateRequest); @@ -17,4 +19,6 @@ public interface FormTemplateService { public FormTemplateEntity getFormEntityById(Long id); + public List getAllFormTemplate(HttpServletRequest request); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java index 25ea75fb..a4bf1cdf 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java @@ -9,6 +9,8 @@ import net.gepafin.tendermanagement.service.FormTemplateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class FormTemplateServiceImpl implements FormTemplateService { @@ -39,4 +41,10 @@ public class FormTemplateServiceImpl implements FormTemplateService { public FormTemplateEntity getFormEntityById(Long id) { return formTemplateDao.getFormTemplateEntity(id); } + + @Override + public List getAllFormTemplate(HttpServletRequest request) { + List formTemplateResponseBeans=formTemplateDao.getAllFormTemplate(); + return formTemplateResponseBeans; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormTemplateApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormTemplateApi.java index add01265..7b3db788 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormTemplateApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormTemplateApi.java @@ -15,6 +15,8 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + public interface FormTemplateApi { @Operation(summary = "Api to create form template", @@ -75,4 +77,18 @@ public interface FormTemplateApi { @DeleteMapping(value = "/{formTemplateId}") ResponseEntity> deleteFormTemplate(HttpServletRequest request, @Parameter(description = "The form template ID", required = true) @PathVariable("formTemplateId") Long formTemplateId); + + @Operation(summary = "Api to get all form template", + 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 = "", + produces = { "application/json" }) + ResponseEntity>> getAllFormTemplate(HttpServletRequest request); + } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormTemplateApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormTemplateApiController.java index 52a56f5e..058e1655 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormTemplateApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormTemplateApiController.java @@ -15,6 +15,8 @@ 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/formTemplate}") public class FormTemplateApiController implements FormTemplateApi { @@ -49,4 +51,11 @@ public class FormTemplateApiController implements FormTemplateApi { return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_TEMPLATE_DELETED_SUCCESSFULLY))); } + + @Override + public ResponseEntity>> getAllFormTemplate(HttpServletRequest request) { + List formTemplateResponseBeans=formTemplateService.getAllFormTemplate(request); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formTemplateResponseBeans, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_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 2198fabe..891b525b 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 @@ -505,5 +505,13 @@ - + + + select + setval('gepafin_schema.form_field_id_seq', (select + max(id)+1 + from gepafin_schema.form_field), false) + + diff --git a/src/main/resources/db/dump/inserted_form_field_data_30_08_2024.sql b/src/main/resources/db/dump/inserted_form_field_data_30_08_2024.sql new file mode 100644 index 00000000..06e02a9f --- /dev/null +++ b/src/main/resources/db/dump/inserted_form_field_data_30_08_2024.sql @@ -0,0 +1,128 @@ +INSERT INTO FORM_FIELD (NAME, LABEL, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES ( + 'textinput', + 'Text Input', + '[ + { + "name": "label", + "value": "Text input" + }, + { + "name": "placeholder", + "value": "Placeholder text" + } + ]', + '{ + "isRequired": false, + "minLength": null, + "maxLength": null, + "pattern": null, + "custom": null + }', + '2024-08-30T09:50:31.926Z', + '2024-08-30T09:50:31.926Z' +); +INSERT INTO FORM_FIELD (NAME, LABEL, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES +( 'textarea', + 'Text Area', + '[ + { + "name": "label", + "value": "Text area" + }, + { + "name": "placeholder", + "value": "Placeholder text" + } + ]', + '{ + "isRequired": false, + "minLength": null, + "maxLength": null, + "pattern": null, + "custom": null + }', + '2024-08-30T09:50:31.926Z', + '2024-08-30T09:50:31.926Z' +); + +INSERT INTO FORM_FIELD ( NAME, LABEL, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES +( 'textinput', + 'Number Input', + '[ + { + "name": "label", + "value": "Number" + }, + { + "name": "placeholder", + "value": "" + } + ]', + '{ + "isRequired": false, + "min": null, + "max": null, + "pattern": null, + "custom": null + }', + '2024-08-30T09:50:31.926Z', + '2024-08-30T09:50:31.926Z' +); + +INSERT INTO FORM_FIELD (NAME, LABEL, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES +( 'textinput', + 'P.IVA', + '[ + { + "name": "label", + "value": "P.IVA" + }, + { + "name": "placeholder", + "value": "Insert p.iva number" + } + ]', + '{ + "isRequired": true, + "minLength": null, + "maxLength": null, + "pattern": null, + "custom": "isValidVAT" + }', + '2024-08-30T09:50:31.926Z', + '2024-08-30T09:50:31.926Z' +); + +INSERT INTO FORM_FIELD (NAME, LABEL, SETTINGS, VALIDATORS, CREATED_DATE, UPDATED_DATE) +VALUES +( 'radio', + 'Radio Input', + '[ + { + "name": "label", + "value": "Radio input" + }, + { + "name": "options", + "value": [ + { + "name": "opt1", + "label": "Opt1" + } + ] + } + ]', + '{ + "isRequired": false, + "min": null, + "max": null, + "custom": null + }', + '2024-08-30T09:50:31.926Z', + '2024-08-30T09:50:31.926Z' +); + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 6675d2d1..ff1311e4 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -74,7 +74,7 @@ form.created.successfully=Form created successfully. form.updated.suucessfully=Form updated successfully. form.deleted.successfully=Form deleted successfully. form.fetched.successfully=Form fetched successfully. -required.parameter.not.found.for.form=Label, content, or orderNo cannot be null. +required.parameter.not.found.for.form=Label or content cannot be null. form.not.found.for.call.id=Form not found for corresponding call. #EvaluationCriteria-related messages evaluation.criteria.not.found=EvaluationCriteria not found. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 9670e87b..2485a61c 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -74,7 +74,7 @@ form.created.successfully=Modulo creato correttamente. form.updated.suucessfully=Modulo aggiornato correttamente. form.deleted.successfully=Modulo eliminato correttamente. form.fetched.successfully=Modulo recuperato correttamente. -required.parameter.not.found.for.form=Etichetta, contenuto o orderNo non possono essere nulli. +required.parameter.not.found.for.form=L'etichetta o il contenuto non possono essere nulli. form.not.found.for.call.id=Modulo non trovato per la chiamata corrispondente. #Form-field-related messages