diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index ed1b30d4..74fad92c 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -43,6 +43,25 @@ public class GepafinConstant { public static final String EMAIL_ALREADY_EXISTS = "email.already.exists"; public static final String DOCUMENT_ID_NOT_FOUND="document.id.not.found"; public static final String INVALID_DATE_MSG = "call.invalid.date"; + public static final String FORM_NOT_FOUND = "form.not.found"; + public static final String FORM_CREATED_SUCCESSFULLY = "form.created.successfully"; + public static final String FORM_UPDATED_SUCCESSFULLY = "form.updated.suucessfully"; + public static final String FORM_DELETED_SUCCESSFULLY = "form.deleted.successfully"; + public static final String FORM_FETCHED_SUCCESSFULLY = "form.fetched.successfully"; + public static final String REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM = "required.parameter.not.found.for.form"; + public static final String FORM_FIELD_NOT_FOUND = "form.field.not.found"; + public static final String FORM_FIELD_CREATED_SUCCESSFULLY = "form.field.created.successfully"; + public static final String FORM_FIELD_UPDATED_SUCCESSFULLY = "form.field.updated.suucessfully"; + public static final String FORM_FIELD_DELETED_SUCCESSFULLY = "form.field.deleted.successfully"; + public static final String FORM_FIELD_FETCHED_SUCCESSFULLY = "form.field.fetched.successfully"; + public static final String REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM_FIELD = "required.parameter.not.found.for.form.field"; + public static final String FORM_TEMPLATE_NOT_FOUND = "form.template.not.found"; + public static final String FORM_TEMPLATE_CREATED_SUCCESSFULLY = "form.template.created.successfully"; + public static final String FORM_TEMPLATE_UPDATED_SUCCESSFULLY = "form.template.updated.suucessfully"; + public static final String FORM_TEMPLATE_DELETED_SUCCESSFULLY = "form.template.deleted.successfully"; + public static final String FORM_TEMPLATE_FETCHED_SUCCESSFULLY = "form.template.fetched.successfully"; + public static final String REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM_TEMPLATE = "required.parameter.not.found.for.form.template"; + public static final String FORM_NOT_FOUND_FOR_CALL_ID="form.not.found.for.call.id"; public static final String STEP_1 = "STEP_1"; public static final String STEP_2 = "STEP_2"; public static final String VALIDATE_REQUEST = "VALIDATE_REQUEST"; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java index 5e5a1c6c..cc7f8d80 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CallDao.java @@ -690,6 +690,13 @@ public class CallDao { callResponseBean.setStatus(CallStatusEnum.READY_TO_PUBLISH); return callResponseBean; } + public CallEntity getCallEntityById(Long id){ + CallEntity callEntity=callRepository.findByIdAndStatusNotIn(id,List.of(CallStatusEnum.PUBLISH.getValue())); + if(callEntity==null){ + throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.CALL_NOT_FOUND)); + } + return callEntity; + } public CallResponse updateCallStatus(Long callId, CallStatusEnum statusReq) { CallEntity callEntity = callRepository.findById(callId) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java new file mode 100644 index 00000000..4b9ada4f --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java @@ -0,0 +1,111 @@ +package net.gepafin.tendermanagement.dao; + +import net.gepafin.tendermanagement.config.Translator; +import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.CallEntity; +import net.gepafin.tendermanagement.entities.FormEntity; +import net.gepafin.tendermanagement.model.request.ContentRequestBean; +import net.gepafin.tendermanagement.model.request.FormRequest; +import net.gepafin.tendermanagement.model.response.ContentResponseBean; +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; +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 FormDao { + + @Autowired + private FormRepository formRepository; + + @Autowired + private CallService callService; + + @Autowired + private FormService formService; + + public FormEntity saveFormEntity(FormEntity formEntity){ + formEntity=formRepository.save(formEntity); + return formEntity; + } + + public FormEntity convertFormRequestToFormEntity(Long callId,FormRequest formRequest){ + FormEntity formEntity=new FormEntity(); + CallEntity callEntity=callService.getCallEntityById(callId); + formEntity.setCall(callEntity); + formEntity.setLabel(formRequest.getLabel()); + formEntity.setContent(setContentResponseBean(formRequest.getContent())); + formEntity.setOrderNo(formRequest.getOrderNo()); + formEntity=saveFormEntity(formEntity); + return formEntity; + } + public FormResponseBean convertFormEntityToFormResponseBean(FormEntity formEntity){ + FormResponseBean formResponseBean=new FormResponseBean(); + formResponseBean.setId(formEntity.getId()); + formResponseBean.setContent(Utils.convertJsonStringToList(formEntity.getContent(), ContentResponseBean.class)); + formResponseBean.setLabel(formEntity.getLabel()); + formResponseBean.setCallId(formEntity.getCall().getId()); + formResponseBean.setOrderNo(formEntity.getOrderNo()); + return formResponseBean; + } + public FormResponseBean createForm(Long callId,FormRequest formRequest){ + validateForm(formRequest); + FormEntity formEntity=convertFormRequestToFormEntity(callId,formRequest); + return convertFormEntityToFormResponseBean(formEntity); + } + public void validateForm(FormRequest formRequest){ + if(formRequest.getContent()==null || formRequest.getLabel()==null ){ + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM)); + } + } + public FormResponseBean updateForm(Long formId, FormRequest formRequest){ + FormEntity formEntity = formService.getFormEntityById(formId); + Utils.setIfUpdated(formEntity::getLabel,formEntity::setLabel,formRequest.getLabel()); + Utils.setIfUpdated(formEntity::getContent,formEntity::setContent,setContentResponseBean(formRequest.getContent())); + 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); + } + + public FormEntity getFormEntity(Long formId) { + FormEntity formEntity = formRepository.findById(formId) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.FORM_NOT_FOUND))); + return formEntity; + } + + public FormResponseBean getFormEntityById(Long formId) { + FormEntity formEntity = formService.getFormEntityById(formId); + return convertFormEntityToFormResponseBean(formEntity); + } + public void deleteFormById(Long formId){ + FormEntity formEntity=formService.getFormEntityById(formId); + formRepository.delete(formEntity); + } + public List getFormsByCallId(Long callId){ + List formEntities=formRepository.findByCallId(callId); + if(formEntities.isEmpty()){ + throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.FORM_NOT_FOUND_FOR_CALL_ID)); + } + List formResponseBeanList = formEntities.stream() + .map(req -> convertFormEntityToFormResponseBean(req)) + .collect(Collectors.toList()); + return formResponseBeanList; + } + public String setContentResponseBean(List contentRequestBeans){ + return Utils.convertListToJsonString(contentRequestBeans); + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java new file mode 100644 index 00000000..c69e777d --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java @@ -0,0 +1,102 @@ +package net.gepafin.tendermanagement.dao; + +import net.gepafin.tendermanagement.config.Translator; +import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.FormFieldEntity; +import net.gepafin.tendermanagement.model.request.FormFieldRequest; +import net.gepafin.tendermanagement.model.request.SettingRequestBean; +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; +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 FormFieldDao { + + @Autowired + private FormFieldRepository formFieldRepository; + + @Autowired + private FormFieldService formFieldService; + + + public FormFieldEntity convertFormFieldRequestToFormFieldEntity(FormFieldRequest formFieldRequest) { + FormFieldEntity formFieldEntity = new FormFieldEntity(); + formFieldEntity.setLabel(formFieldRequest.getLabel()); + formFieldEntity.setName(formFieldRequest.getName()); + formFieldEntity.setValidators(Utils.convertMapIntoJsonString(formFieldRequest.getValidators())); + formFieldEntity.setSettings(setSettingRequestBean(formFieldRequest.getSettings())); + formFieldEntity = saveFormFieldEntity(formFieldEntity); + return formFieldEntity; + } + + public FormFieldResponseBean convertFormFieldEntityToFormFieldResponseBean(FormFieldEntity formFieldEntity) { + FormFieldResponseBean formFieldResponseBean = new FormFieldResponseBean(); + formFieldResponseBean.setId(formFieldEntity.getId()); + formFieldResponseBean.setName(formFieldEntity.getName()); + formFieldResponseBean.setSettings(Utils.convertJsonStringToList(formFieldEntity.getSettings(), SettingResponseBean.class)); + formFieldResponseBean.setLabel(formFieldEntity.getLabel()); + formFieldResponseBean.setValidators(Utils.convertIntoJson(formFieldEntity.getValidators())); + return formFieldResponseBean; + } + + public FormFieldEntity saveFormFieldEntity(FormFieldEntity formFieldEntity) { + formFieldEntity = formFieldRepository.save(formFieldEntity); + return formFieldEntity; + } + + public void validateFormField(FormFieldRequest formFieldRequest) { + if (formFieldRequest.getSettings() == null || formFieldRequest.getLabel() == null) { + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM_FIELD)); + } + } + public FormFieldResponseBean createFormField(FormFieldRequest formFieldRequest){ + validateFormField(formFieldRequest); + FormFieldEntity formFieldEntity=convertFormFieldRequestToFormFieldEntity(formFieldRequest); + return convertFormFieldEntityToFormFieldResponseBean(formFieldEntity); + } + public FormFieldResponseBean updateFormField(Long formFieldId,FormFieldRequest formFieldRequest){ + FormFieldEntity formFieldEntity = formFieldService.getFormFieldEntityById(formFieldId); + Utils.setIfUpdated(formFieldEntity::getName,formFieldEntity::setName,formFieldRequest.getName()); + 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); + } + public FormFieldEntity getFormFieldEntity(Long formFieldId) { + FormFieldEntity formFieldEntity=formFieldRepository.findById(formFieldId) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.FORM_FIELD_NOT_FOUND))); + return formFieldEntity; + } + + public FormFieldResponseBean getFormFieldEntityById(Long formFieldId) { + FormFieldEntity formEntity = formFieldService.getFormFieldEntityById(formFieldId); + return convertFormFieldEntityToFormFieldResponseBean(formEntity); + } + public void deleteFormById(Long formFieldId){ + FormFieldEntity formEntity=formFieldService.getFormFieldEntityById(formFieldId); + formFieldRepository.delete(formEntity); + } + public String setSettingRequestBean(List settingRequestBeans){ + return Utils.convertListToJsonString(settingRequestBeans); + } + public List getAllFormField(){ + List formFieldEntities=formFieldRepository.findAll(); + List formFieldResponseBeans = formFieldEntities.stream() + .map(req -> convertFormFieldEntityToFormFieldResponseBean(req)).collect(Collectors.toList()); + return formFieldResponseBeans; + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java new file mode 100644 index 00000000..e9bb787c --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java @@ -0,0 +1,95 @@ +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; +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 { + + @Autowired + private FormTemplateRepository formTemplateRepository; + + @Autowired + private FormTemplateService formTemplateService; + + + public FormTemplateEntity convertFormTemplateRequestToFormTemplateRequest(FormTemplateRequest formTemplateRequest){ + FormTemplateEntity formTemplateEntity=new FormTemplateEntity(); + formTemplateEntity.setContent(setContentResponseBean(formTemplateRequest.getContent())); + formTemplateEntity.setLabel(formTemplateRequest.getLabel()); + formTemplateEntity=saveFormTemplateEntity(formTemplateEntity); + return formTemplateEntity; + } + public FormTemplateEntity saveFormTemplateEntity(FormTemplateEntity formTemplateEntity){ + formTemplateEntity=formTemplateRepository.save(formTemplateEntity); + return formTemplateEntity; + } + public FormTemplateResponseBean convertFormTemplateEntityToFormTemplateResponseBean(FormTemplateEntity formTemplateEntity){ + FormTemplateResponseBean formTemplateResponseBean=new FormTemplateResponseBean(); + formTemplateResponseBean.setId(formTemplateEntity.getId()); + formTemplateResponseBean.setContent(Utils.convertJsonStringToList(formTemplateEntity.getContent(), ContentResponseBean.class)); + formTemplateResponseBean.setLabel(formTemplateEntity.getLabel()); + return formTemplateResponseBean; + } + + public FormTemplateResponseBean createFormTemplate(FormTemplateRequest formTemplateRequest){ + validateFormTemplate(formTemplateRequest); + FormTemplateEntity formTemplateEntity=convertFormTemplateRequestToFormTemplateRequest(formTemplateRequest); + return convertFormTemplateEntityToFormTemplateResponseBean(formTemplateEntity); + } + public void validateFormTemplate(FormTemplateRequest formTemplateRequest){ + if(formTemplateRequest.getContent()==null || formTemplateRequest.getLabel()==null ){ + throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.REQUIRED_PARAMETER_NOT_FOUND_FOR_FORM_TEMPLATE)); + } + } + 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,setContentResponseBean(formTemplateRequest.getContent())); + formTemplateEntity.setUpdatedDate(DateTimeUtil.DateServerToUTC(LocalDateTime.now())); + formTemplateEntity=saveFormTemplateEntity(formTemplateEntity); + return convertFormTemplateEntityToFormTemplateResponseBean(formTemplateEntity); + } + + public FormTemplateEntity getFormTemplateEntity(Long formTemplateId) { + FormTemplateEntity formTemplateEntity = formTemplateRepository.findById(formTemplateId) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.FORM_TEMPLATE_NOT_FOUND))); + return formTemplateEntity; + } + + public FormTemplateResponseBean getFormTemplateEntityById(Long formTemplateId) { + FormTemplateEntity formTemplateEntity = formTemplateService.getFormEntityById(formTemplateId); + return convertFormTemplateEntityToFormTemplateResponseBean(formTemplateEntity); + } + public void deleteFormTemplateById(Long formTemplateId){ + 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/entities/FormEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/FormEntity.java new file mode 100644 index 00000000..d4a8c5f2 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/entities/FormEntity.java @@ -0,0 +1,29 @@ +package net.gepafin.tendermanagement.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Builder; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "FORM") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class FormEntity extends BaseEntity{ + + @Column(name = "LABEL", length = 255) + private String label; + + @ManyToOne + @JoinColumn(name = "CALL_ID", foreignKey = @ForeignKey(name = "fk_call_form")) + private CallEntity call; + + @Column(name = "CONTENT", length = 255) + private String content; + + @Column(name = "ORDER_NO") + private Integer orderNo; +} diff --git a/src/main/java/net/gepafin/tendermanagement/entities/FormFieldEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/FormFieldEntity.java new file mode 100644 index 00000000..bffa49be --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/entities/FormFieldEntity.java @@ -0,0 +1,28 @@ +package net.gepafin.tendermanagement.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Builder; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "FORM_FIELD") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class FormFieldEntity extends BaseEntity{ + + @Column(name = "NAME", length = 255) + private String name; + + @Column(name = "LABEL", length = 255) + private String label; + + @Column(name = "SETTINGS") + private String settings; + + @Column(name = "VALIDATORS") + private String validators; +} diff --git a/src/main/java/net/gepafin/tendermanagement/entities/FormTemplateEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/FormTemplateEntity.java new file mode 100644 index 00000000..897a9dfd --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/entities/FormTemplateEntity.java @@ -0,0 +1,22 @@ +package net.gepafin.tendermanagement.entities; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Builder; +import lombok.NoArgsConstructor; + +@Entity +@Table(name = "FORM_TEMPLATE") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class FormTemplateEntity extends BaseEntity{ + + @Column(name = "LABEL", length = 255) + private String label; + + @Column(name = "CONTENT", length = 255) + private String content; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java new file mode 100644 index 00000000..f0399ead --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ContentRequestBean.java @@ -0,0 +1,18 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class ContentRequestBean { + + private String id; + private String name; + private String label; + private List settings; + private Map validators; + private Integer dbId; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FormFieldRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/FormFieldRequest.java new file mode 100644 index 00000000..30ddd40b --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FormFieldRequest.java @@ -0,0 +1,18 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class FormFieldRequest { + + private String name; + + private String label; + + private List settings; + + private Map validators; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FormRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/FormRequest.java new file mode 100644 index 00000000..af541630 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FormRequest.java @@ -0,0 +1,16 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class FormRequest { + + private String label; + + private List content; + + private Integer orderNo; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java b/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java new file mode 100644 index 00000000..7e587852 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/FormTemplateRequest.java @@ -0,0 +1,13 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +import java.util.List; + +@Data +public class FormTemplateRequest { + + private String label; + + private List content; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/SettingRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/SettingRequestBean.java new file mode 100644 index 00000000..98db2c59 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/request/SettingRequestBean.java @@ -0,0 +1,11 @@ +package net.gepafin.tendermanagement.model.request; + +import lombok.Data; + +@Data +public class SettingRequestBean { + + private String name; + + private String value; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java new file mode 100644 index 00000000..6ee1367d --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ContentResponseBean.java @@ -0,0 +1,17 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class ContentResponseBean { + + private String id; + private String name; + private String label; + private List settings; + private Map validators; + private Integer dbId; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FormFieldResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/FormFieldResponseBean.java new file mode 100644 index 00000000..b779b353 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FormFieldResponseBean.java @@ -0,0 +1,20 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class FormFieldResponseBean { + + private Long id; + + private String name; + + private String label; + + private List settings; + + private Map validators; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FormResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/FormResponseBean.java new file mode 100644 index 00000000..3c347901 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FormResponseBean.java @@ -0,0 +1,20 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; +import net.gepafin.tendermanagement.model.BaseBean; + +import java.util.List; + +@Data +public class FormResponseBean { + + private Long id; + + private String label; + + private Long callId; + + private List content; + + private Integer orderNo; +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java new file mode 100644 index 00000000..9e9503d5 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/FormTemplateResponseBean.java @@ -0,0 +1,16 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +import java.util.List; + +@Data +public class FormTemplateResponseBean { + + private Long id; + + private String label; + + private List content; + +} diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/SettingResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/SettingResponseBean.java new file mode 100644 index 00000000..dcddf149 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/model/response/SettingResponseBean.java @@ -0,0 +1,11 @@ +package net.gepafin.tendermanagement.model.response; + +import lombok.Data; + +@Data +public class SettingResponseBean { + + private String name; + + private String value; +} diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java index 093e4086..dd2c8b40 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/CallRepository.java @@ -3,8 +3,11 @@ import net.gepafin.tendermanagement.entities.CallEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface CallRepository extends JpaRepository { + public CallEntity findByIdAndStatusNotIn(Long id, List status); } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/FormFieldRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/FormFieldRepository.java new file mode 100644 index 00000000..358e4cf9 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/repositories/FormFieldRepository.java @@ -0,0 +1,9 @@ +package net.gepafin.tendermanagement.repositories; + +import net.gepafin.tendermanagement.entities.FormFieldEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface FormFieldRepository extends JpaRepository { +} diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/FormRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/FormRepository.java new file mode 100644 index 00000000..6250b21b --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/repositories/FormRepository.java @@ -0,0 +1,13 @@ +package net.gepafin.tendermanagement.repositories; + +import net.gepafin.tendermanagement.entities.FormEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface FormRepository extends JpaRepository { + + List findByCallId(Long callId); +} diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/FormTemplateRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/FormTemplateRepository.java new file mode 100644 index 00000000..f9ce4f4d --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/repositories/FormTemplateRepository.java @@ -0,0 +1,9 @@ +package net.gepafin.tendermanagement.repositories; + +import net.gepafin.tendermanagement.entities.FormTemplateEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface FormTemplateRepository extends JpaRepository { +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/CallService.java b/src/main/java/net/gepafin/tendermanagement/service/CallService.java index 9be1c8ef..636392e5 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CallService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CallService.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.service; import java.util.List; import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; @@ -26,6 +27,8 @@ public interface CallService { CallResponse validateCall(Long callId); + public CallEntity getCallEntityById(Long id); + CallResponse updateCallStatus(Long callId, CallStatusEnum statusReq); } diff --git a/src/main/java/net/gepafin/tendermanagement/service/FormFieldService.java b/src/main/java/net/gepafin/tendermanagement/service/FormFieldService.java new file mode 100644 index 00000000..94c67190 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/FormFieldService.java @@ -0,0 +1,24 @@ +package net.gepafin.tendermanagement.service; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.FormFieldEntity; +import net.gepafin.tendermanagement.model.request.FormFieldRequest; +import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; + +import java.util.List; + +public interface FormFieldService { + + public FormFieldResponseBean createFormField(HttpServletRequest request, FormFieldRequest formFieldRequest); + + public FormFieldResponseBean updateFormField(HttpServletRequest request, Long formFieldId, FormFieldRequest formFieldRequest); + + public FormFieldResponseBean getFormFieldById(HttpServletRequest request, Long formFieldId); + + public void deleteFormField(HttpServletRequest request, Long formFieldId); + + public FormFieldEntity getFormFieldEntityById(Long id); + + public List getAllFormField(HttpServletRequest request); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/FormService.java b/src/main/java/net/gepafin/tendermanagement/service/FormService.java new file mode 100644 index 00000000..743b4b36 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/FormService.java @@ -0,0 +1,23 @@ +package net.gepafin.tendermanagement.service; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.FormEntity; +import net.gepafin.tendermanagement.model.request.FormRequest; +import net.gepafin.tendermanagement.model.response.FormResponseBean; + +import java.util.List; + +public interface FormService { + + public FormResponseBean createForm(HttpServletRequest request,Long callId,FormRequest formRequest); + + public FormResponseBean updateForm(HttpServletRequest request, Long formId, FormRequest formRequest); + + public FormResponseBean getFormById(HttpServletRequest request, Long formId); + + public void deleteForm(HttpServletRequest request, Long formId); + + public FormEntity getFormEntityById(Long id); + + public List getFormsByCallId(HttpServletRequest request,Long callId); +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java b/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java new file mode 100644 index 00000000..7f69ae2e --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/FormTemplateService.java @@ -0,0 +1,24 @@ +package net.gepafin.tendermanagement.service; + +import jakarta.servlet.http.HttpServletRequest; +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); + + public FormTemplateResponseBean updateTemplateForm(HttpServletRequest request, Long formTemplateId, FormTemplateRequest formTemplateRequest); + + public FormTemplateResponseBean getFormTemplateById(HttpServletRequest request, Long formTemplateId); + + public void deleteFormTemplate(HttpServletRequest request, Long formTemplateId); + + public FormTemplateEntity getFormEntityById(Long id); + + public List getAllFormTemplate(HttpServletRequest request); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java index d151b6c5..2fed41ee 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CallServiceImpl.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.dao.CallDao; +import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.UserStatusEnum; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep1; @@ -68,6 +69,11 @@ public class CallServiceImpl implements CallService { public CallResponse validateCall(Long callId) { return callDao.validateCall(callDao.validateCall(callId)); } + + @Override + public CallEntity getCallEntityById(Long id){ + return callDao.getCallEntityById(id); + } @Override @Transactional(rollbackFor = Exception.class) public CallResponse updateCallStatus(Long callId, CallStatusEnum statusReq) { diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FormFieldServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FormFieldServiceImpl.java new file mode 100644 index 00000000..07b7bdcc --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FormFieldServiceImpl.java @@ -0,0 +1,50 @@ +package net.gepafin.tendermanagement.service.impl; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.dao.FormFieldDao; +import net.gepafin.tendermanagement.entities.FormFieldEntity; +import net.gepafin.tendermanagement.model.request.FormFieldRequest; +import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; +import net.gepafin.tendermanagement.service.FormFieldService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class FormFieldServiceImpl implements FormFieldService { + + @Autowired + private FormFieldDao formFieldDao; + + @Override + public FormFieldResponseBean createFormField(HttpServletRequest request, FormFieldRequest formFieldRequest) { + return formFieldDao.createFormField(formFieldRequest); + } + + @Override + public FormFieldResponseBean updateFormField(HttpServletRequest request, Long formFieldId, FormFieldRequest formFieldRequest) { + return formFieldDao.updateFormField(formFieldId,formFieldRequest); + } + + @Override + public FormFieldResponseBean getFormFieldById(HttpServletRequest request, Long formFieldId) { + return formFieldDao.getFormFieldEntityById(formFieldId); + } + + @Override + public void deleteFormField(HttpServletRequest request, Long formFieldId) { + formFieldDao.deleteFormById(formFieldId); + return; + } + + @Override + public FormFieldEntity getFormFieldEntityById(Long id) { + return formFieldDao.getFormFieldEntity(id); + } + + @Override + public List getAllFormField(HttpServletRequest request) { + return formFieldDao.getAllFormField(); + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FormServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FormServiceImpl.java new file mode 100644 index 00000000..378a4dce --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FormServiceImpl.java @@ -0,0 +1,50 @@ +package net.gepafin.tendermanagement.service.impl; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.dao.FormDao; +import net.gepafin.tendermanagement.entities.FormEntity; +import net.gepafin.tendermanagement.model.request.FormRequest; +import net.gepafin.tendermanagement.model.response.FormResponseBean; +import net.gepafin.tendermanagement.service.FormService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class FormServiceImpl implements FormService { + + @Autowired + private FormDao formDao; + + @Override + public FormResponseBean createForm(HttpServletRequest request,Long callId, FormRequest formRequest) { + return formDao.createForm(callId,formRequest); + } + + @Override + public FormResponseBean updateForm(HttpServletRequest request, Long formId, FormRequest formRequest) { + return formDao.updateForm(formId,formRequest); + } + + @Override + public FormResponseBean getFormById(HttpServletRequest request, Long formId) { + return formDao.getFormEntityById(formId); + } + + @Override + public void deleteForm(HttpServletRequest request, Long formId) { + formDao.deleteFormById(formId); + return; + } + + @Override + public FormEntity getFormEntityById(Long id) { + return formDao.getFormEntity(id); + } + + @Override + public List getFormsByCallId(HttpServletRequest request, Long callId) { + return formDao.getFormsByCallId(callId); + } +} diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java new file mode 100644 index 00000000..a4bf1cdf --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FormTemplateServiceImpl.java @@ -0,0 +1,50 @@ +package net.gepafin.tendermanagement.service.impl; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.dao.FormTemplateDao; +import net.gepafin.tendermanagement.entities.FormTemplateEntity; +import net.gepafin.tendermanagement.model.request.FormTemplateRequest; +import net.gepafin.tendermanagement.model.response.FormTemplateResponseBean; +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 { + + @Autowired + private FormTemplateDao formTemplateDao; + + @Override + public FormTemplateResponseBean createTemplateForm(HttpServletRequest request, FormTemplateRequest formTemplateRequest) { + return formTemplateDao.createFormTemplate(formTemplateRequest); + } + + @Override + public FormTemplateResponseBean updateTemplateForm(HttpServletRequest request, Long formTemplateId, FormTemplateRequest formTemplateRequest) { + return formTemplateDao.updateFormTemplate(formTemplateId,formTemplateRequest); + } + + @Override + public FormTemplateResponseBean getFormTemplateById(HttpServletRequest request, Long formTemplateId) { + return formTemplateDao.getFormTemplateEntityById(formTemplateId); + } + + @Override + public void deleteFormTemplate(HttpServletRequest request, Long formTemplateId) { + formTemplateDao.deleteFormTemplateById(formTemplateId); + } + + @Override + 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/util/Utils.java b/src/main/java/net/gepafin/tendermanagement/util/Utils.java index d0cba04c..c1819495 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Utils.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Utils.java @@ -1,19 +1,25 @@ package net.gepafin.tendermanagement.util; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.json.JsonReadFeature; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import io.micrometer.common.util.StringUtils; +import org.apache.commons.collections4.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.nio.charset.StandardCharsets; import java.util.Base64; import java.util.List; +import java.util.Map; import java.util.function.Consumer; import java.util.function.Supplier; import java.util.stream.Collectors; + public class Utils { public static final Logger log = LoggerFactory.getLogger(Utils.class); @@ -82,5 +88,46 @@ public class Utils { setter.accept(newValue); } } + public static String convertListToJsonString(List list) { + try { + return mapper.writeValueAsString(list); + } catch (JsonProcessingException e) { + e.printStackTrace(); + // Handle exception or throw a custom exception + return null; + } + } + public static List convertJsonStringToList(String jsonString, Class clazz) { + try { + return mapper.readValue(jsonString, new TypeReference>() {}); + } catch (Exception e) { + e.printStackTrace(); + // Handle the exception appropriately (e.g., throw a custom exception) + return null; + } + } + public static String convertMapIntoJsonString(Map map) { + try { + ObjectMapper mapper = new ObjectMapper(); + if (MapUtils.isNotEmpty(map)) { + return mapper.writeValueAsString(map); + } + } catch (JsonProcessingException e) { + log.error(e.getMessage()); + } + return null; + } + public static Map convertIntoJson(String jsonString) { + if (jsonString != null && !jsonString.isEmpty()) { + try { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS.mappedFeature(), true); + return mapper.readValue(jsonString, Map.class); + } catch (Exception e) { + log.error(e.getMessage()); + } + } + return null; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/util/Validator.java b/src/main/java/net/gepafin/tendermanagement/util/Validator.java new file mode 100644 index 00000000..70263878 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/util/Validator.java @@ -0,0 +1,20 @@ +package net.gepafin.tendermanagement.util; + +import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.config.jwt.TokenProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Component +public class Validator { + + @Autowired + private TokenProvider tokenProvider; + + public Map getUserInfoFromToken(HttpServletRequest request) { + return tokenProvider.getUserInfoAndUserIdFromToken(request); + } + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormApi.java new file mode 100644 index 00000000..001de040 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormApi.java @@ -0,0 +1,96 @@ +package net.gepafin.tendermanagement.web.rest.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +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.FormRequest; +import net.gepafin.tendermanagement.model.response.FormResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + + +public interface FormApi { + + @Operation(summary = "Api to create form", + 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 = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity> createForm(HttpServletRequest request,@Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId, + @Parameter(description = "form request object", required = true) + @Valid @RequestBody FormRequest formRequest); + + + @Operation(summary = "Api to update form", + 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) })) }) + @PutMapping(value = "/{formId}", + produces = { "application/json" }) + ResponseEntity> updateForm(HttpServletRequest request, + @Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId, + @Parameter(description = "form request object", required = true) @Valid @RequestBody FormRequest formRequest); + + @Operation(summary = "Api to get form by id", + 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 = "/{formId}", + produces = { "application/json" }) + ResponseEntity> getFormById(HttpServletRequest request, + @Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId); + + + @Operation(summary = "Api to delete form", + 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) })) }) + @DeleteMapping(value = "/{formId}") + ResponseEntity> deleteForm(HttpServletRequest request, + @Parameter(description = "The form ID", required = true) @PathVariable("formId") Long formId); + + @Operation(summary = "Api to get forms by callId", + 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 = "/call/{callId}", + produces = { "application/json" }) + ResponseEntity>> getFormsByCallId(HttpServletRequest request, + @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormFieldApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormFieldApi.java new file mode 100644 index 00000000..341b3fed --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormFieldApi.java @@ -0,0 +1,94 @@ +package net.gepafin.tendermanagement.web.rest.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +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.FormFieldRequest; +import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +public interface FormFieldApi { + + @Operation(summary = "Api to create form field", + 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 = "", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity> createFormField(HttpServletRequest request, + @Parameter(description = "form field request object", required = true) + @Valid @RequestBody FormFieldRequest formFieldRequest); + + + @Operation(summary = "Api to update form field", + 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) })) }) + @PutMapping(value = "/{formFieldId}", + produces = { "application/json" }) + ResponseEntity> updateFormField(HttpServletRequest request, + @Parameter(description = "The form field ID", required = true) @PathVariable("formFieldId") Long formFieldId, + @Parameter(description = "form field request object", required = true) @Valid @RequestBody FormFieldRequest formFieldRequest); + + @Operation(summary = "Api to get form field by id", + 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 = "/{formFieldId}", + produces = { "application/json" }) + ResponseEntity> getFormFieldById(HttpServletRequest request, + @Parameter(description = "The form field ID", required = true) @PathVariable("formFieldId") Long formFieldId); + + + @Operation(summary = "Api to delete form field", + 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) })) }) + @DeleteMapping(value = "/{formFieldId}") + ResponseEntity> deleteForm(HttpServletRequest request, + @Parameter(description = "The form field ID", required = true) @PathVariable("formFieldId") Long formFieldId); + + @Operation(summary = "Api to get all form field", + 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>> getAllFormField(HttpServletRequest request); + +} 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 new file mode 100644 index 00000000..7b3db788 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FormTemplateApi.java @@ -0,0 +1,94 @@ +package net.gepafin.tendermanagement.web.rest.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +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.FormTemplateRequest; +import net.gepafin.tendermanagement.model.response.FormTemplateResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.web.rest.api.errors.ErrorConstants; +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", + 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 = "", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity> createFormTemplate(HttpServletRequest request, + @Parameter(description = "form template request object", required = true) + @Valid @RequestBody FormTemplateRequest formTemplateRequest); + + + @Operation(summary = "Api to update 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) })) }) + @PutMapping(value = "/{formTemplateId}", + produces = { "application/json" }) + ResponseEntity> updateFormTemplate(HttpServletRequest request, + @Parameter(description = "The form template ID", required = true) @PathVariable("formTemplateId") Long formTemplateId, + @Parameter(description = "form template request object", required = true) @Valid @RequestBody FormTemplateRequest formTemplateRequest); + + @Operation(summary = "Api to get form template by id", + 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 = "/{formTemplateId}", + produces = { "application/json" }) + ResponseEntity> getFormTemplateById(HttpServletRequest request, + @Parameter(description = "The form template ID", required = true) @PathVariable("formTemplateId") Long formTemplateId); + + + @Operation(summary = "Api to delete 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) })) }) + @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/FormApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormApiController.java new file mode 100644 index 00000000..72e8bd2b --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormApiController.java @@ -0,0 +1,62 @@ +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.FormRequest; +import net.gepafin.tendermanagement.model.response.FormResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.service.FormService; +import net.gepafin.tendermanagement.web.rest.api.FormApi; +import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +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/form}") +public class FormApiController implements FormApi { + + @Autowired + private FormService formService; + + @Override + public ResponseEntity> createForm(HttpServletRequest request,Long callId, FormRequest formRequest) { + FormResponseBean formResponseBean = formService.createForm(request,callId, formRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_CREATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> updateForm(HttpServletRequest request, Long formId, FormRequest formRequest) { + FormResponseBean formResponseBean = formService.updateForm(request, formId, formRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_UPDATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> getFormById(HttpServletRequest request, Long formId) { + FormResponseBean formResponseBean=formService.getFormById(request,formId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FETCHED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> deleteForm(HttpServletRequest request, Long formId) { + formService.deleteForm(request,formId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_DELETED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity>> getFormsByCallId(HttpServletRequest request, Long callId) { + List formResponseBean=formService.getFormsByCallId(request,callId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FETCHED_SUCCESSFULLY))); + } + +} diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java new file mode 100644 index 00000000..e491d498 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormFieldApiController.java @@ -0,0 +1,61 @@ +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.FormFieldRequest; +import net.gepafin.tendermanagement.model.response.FormFieldResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.service.FormFieldService; +import net.gepafin.tendermanagement.web.rest.api.FormFieldApi; +import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +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/formField}") +public class FormFieldApiController implements FormFieldApi { + + @Autowired + private FormFieldService formFieldService; + + @Override + public ResponseEntity> createFormField(HttpServletRequest request, FormFieldRequest formFieldRequest) { + FormFieldResponseBean formFieldResponseBean=formFieldService.createFormField(request,formFieldRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_CREATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> updateFormField(HttpServletRequest request, Long formFieldId, FormFieldRequest formFieldRequest) { + FormFieldResponseBean formFieldResponseBean=formFieldService.updateFormField(request,formFieldId,formFieldRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_UPDATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> getFormFieldById(HttpServletRequest request, Long formFieldId) { + FormFieldResponseBean formFieldResponseBean=formFieldService.getFormFieldById(request,formFieldId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formFieldResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_FETCHED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> deleteForm(HttpServletRequest request, Long formFieldId) { + formFieldService.deleteFormField(request,formFieldId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(null, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_DELETED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity>> getAllFormField(HttpServletRequest request) { + List formFieldResponseBeans=formFieldService.getAllFormField(request); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formFieldResponseBeans, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_FIELD_FETCHED_SUCCESSFULLY))); + } +} 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 new file mode 100644 index 00000000..058e1655 --- /dev/null +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FormTemplateApiController.java @@ -0,0 +1,61 @@ +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.FormTemplateRequest; +import net.gepafin.tendermanagement.model.response.FormTemplateResponseBean; +import net.gepafin.tendermanagement.model.util.Response; +import net.gepafin.tendermanagement.service.FormTemplateService; +import net.gepafin.tendermanagement.web.rest.api.FormTemplateApi; +import net.gepafin.tendermanagement.web.rest.api.errors.Status; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +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 { + + @Autowired + private FormTemplateService formTemplateService; + + @Override + public ResponseEntity> createFormTemplate(HttpServletRequest request, FormTemplateRequest formTemplateRequest) { + FormTemplateResponseBean formTemplateResponseBean=formTemplateService.createTemplateForm(request,formTemplateRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formTemplateResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_TEMPLATE_CREATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> updateFormTemplate(HttpServletRequest request, Long formTemplateId, FormTemplateRequest formTemplateRequest) { + FormTemplateResponseBean formTemplateResponseBean=formTemplateService.updateTemplateForm(request,formTemplateId,formTemplateRequest); + return ResponseEntity.status(HttpStatus.CREATED) + .body(new Response<>(formTemplateResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_TEMPLATE_UPDATED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> getFormTemplateById(HttpServletRequest request, Long formTemplateId) { + FormTemplateResponseBean formTemplateResponseBean=formTemplateService.getFormTemplateById(request, formTemplateId); + return ResponseEntity.status(HttpStatus.OK) + .body(new Response<>(formTemplateResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.FORM_TEMPLATE_FETCHED_SUCCESSFULLY))); + } + + @Override + public ResponseEntity> deleteFormTemplate(HttpServletRequest request, Long formTemplateId) { + formTemplateService.deleteFormTemplate(request,formTemplateId); + 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 6fc805d6..ad959c40 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 @@ -395,6 +395,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + 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 10f36d79..c581f97c 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -44,6 +44,7 @@ file.deleted.successfully=File deleted successfully. document.not.found=Document not found. document.id.not.found=Document ID not found. call.invalid.date=Invalid start or end date. +call.id.not.null=Call id cannot be null. call.update.successfully=Call updated successfully. call.fetch.success=Call details fetched successfully. call.not.found=Call not found. @@ -69,6 +70,14 @@ invalid_signature=Invalid token. invalid_login=Invalid username or password. req_validation_er=Request Validation Error +#Form-related messages +form.not.found=Form not found. +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 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. evaluation.criteria.created.successfully=EvaluationCriteria created successfully. @@ -88,8 +97,22 @@ logout.successful.msg=Logout successful. You have been logged out successfully. update.user.status.success=User status has been successfully updated. +#Form-field-related messages +form.field.not.found=Form field not found. +form.field.created.successfully=Form field created successfully. +form.field.updated.suucessfully=Form field updated successfully. +form.field.deleted.successfully=Form field deleted successfully. +form.field.fetched.successfully=Form field fetched successfully. +required.parameter.not.found.for.form.field=Label or definition cannot be null. +#Form-template-related messages +form.template.not.found=Form template not found. +form.template.created.successfully=Form template created successfully. +form.template.updated.suucessfully=Form template updated successfully. +form.template.deleted.successfully=Form template deleted successfully. +form.template.fetched.successfully=Form template fetched successfully. +required.parameter.not.found.for.form.template=Label or content cannot be null. #Faq-related messages faq.not.found=Faq not found. faq.created.successfully=Faq created successfully. @@ -106,4 +129,4 @@ lookupdata.deleted.successfully=LookUpData deleted successfully. #Document-related message document.updated.successfully=Document updated successfully. -document.fetched.successfully=Document fetched successfully. \ No newline at end of file +document.fetched.successfully=Document fetched successfully. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 2d1fcc5f..15264c64 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -44,17 +44,18 @@ file.deleted.successfully=File eliminato con successo. document.not.found=Documento non trovato. document.id.not.found=ID documento non trovato. call.invalid.date=Data di inizio o fine non valida. +call.id.not.null=L'ID della chiamata non pu� essere nullo. call.update.successfully=Chiamata aggiornata con successo. call.fetch.success=Dettagli della chiamata recuperati con successo. call.not.found=Chiamata non trovata. score.not.null=Il punteggio non pu� essere nullo o zero. -field.not.null={0} non può essere nullo. -field.not.empty=la {0} non può essere vuota. -update_call_status_success_msg=Lo stato della chiamata è stato aggiornato con successo. -status.same.error=Lo stato è già impostato. -invalid.status.change.from.draft=Lo stato non può essere cambiato in READY_TO_PUBLISH o PUBLISH da DRAFT. -status.cannot.be.changed=Lo stato non può essere cambiato. -published.call.not.update=Il bando pubblicato non può essere aggiornato. +field.not.null={0} non pu� essere nullo. +field.not.empty=la {0} non pu� essere vuota. +update_call_status_success_msg=Lo stato della chiamata � stato aggiornato con successo. +status.same.error=Lo stato � gi� impostato. +invalid.status.change.from.draft=Lo stato non pu� essere cambiato in READY_TO_PUBLISH o PUBLISH da DRAFT. +status.cannot.be.changed=Lo stato non pu� essere cambiato. +published.call.not.update=Il bando pubblicato non pu� essere aggiornato. # Login-related messages @@ -68,6 +69,30 @@ invalid_signature=Gettone non valido. invalid_login=Nome utente o password errati req_validation_er=Errore di convalida +#Form-related messages +form.not.found=Modulo non trovato. +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=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 +form.field.not.found=Campo modulo non trovato. +form.field.created.successfully=Campo del modulo creato correttamente. +form.field.updated.suucessfully=Campo del modulo aggiornato correttamente. +form.field.deleted.successfully=Campo del modulo eliminato correttamente. +form.field.fetched.successfully=Campo del modulo recuperato correttamente. +required.parameter.not.found.for.form.field=Etichetta o definizione non possono essere nulli. + +#Form-template-related messages +form.template.not.found=Modello di modulo non trovato. +form.template.created.successfully=Modello di modulo creato correttamente. +form.template.updated.suucessfully=Modello di modulo aggiornato correttamente. +form.template.deleted.successfully=Modello di modulo eliminato correttamente. +form.template.fetched.successfully=Modello di modulo recuperato correttamente. +required.parameter.not.found.for.form.template=Etichetta o contenuto non possono essere nulli. #EvaluationCriteria-related messages evaluation.criteria.not.found=EvaluationCriteria non trovato. evaluation.criteria.created.successfully=EvaluationCriteria creato con successo.