Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java
2024-09-13 18:39:46 +05:30

115 lines
5.6 KiB
Java

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.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;
public FormFieldEntity convertFormFieldRequestToFormFieldEntity(FormFieldRequest formFieldRequest) {
FormFieldEntity formFieldEntity = new FormFieldEntity();
formFieldEntity.setLabel(formFieldRequest.getLabel());
formFieldEntity.setName(formFieldRequest.getName());
formFieldEntity.setDescription(formFieldRequest.getDescription());
formFieldEntity.setSortOrder(formFieldRequest.getSortOrder());
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.setDescription(formFieldEntity.getDescription());
formFieldResponseBean.setSortOrder(formFieldEntity.getSortOrder());
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 = validateFormField(formFieldId);
Utils.setIfUpdated(formFieldEntity::getName, formFieldEntity::setName, formFieldRequest.getName());
Utils.setIfUpdated(formFieldEntity::getLabel, formFieldEntity::setLabel, formFieldRequest.getLabel());
Utils.setIfUpdated(formFieldEntity::getDescription, formFieldEntity::setDescription, formFieldRequest.getDescription());
Utils.setIfUpdated(formFieldEntity::getSortOrder, formFieldEntity::setSortOrder, formFieldRequest.getSortOrder());
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 validateFormField(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 = validateFormField(formFieldId);
return convertFormFieldEntityToFormFieldResponseBean(formEntity);
}
public void deleteFormById(Long formFieldId) {
FormFieldEntity formEntity = validateFormField(formFieldId);
formFieldRepository.delete(formEntity);
}
public String setSettingRequestBean(List<SettingRequestBean> settingRequestBeans) {
return Utils.convertListToJsonString(settingRequestBeans);
}
public List<FormFieldResponseBean> getAllFormField() {
List<FormFieldEntity> formFieldEntities = formFieldRepository.findAll();
List<FormFieldResponseBean> formFieldResponseBeans = formFieldEntities.stream()
.map(req -> convertFormFieldEntityToFormFieldResponseBean(req)).collect(Collectors.toList());
return formFieldResponseBeans;
}
}