Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/dao/FormFieldDao.java

142 lines
6.9 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.enums.VersionActionTypeEnum;
import net.gepafin.tendermanagement.model.request.FormFieldRequest;
import net.gepafin.tendermanagement.model.request.SettingRequestBean;
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
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.LoggingUtil;
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 jakarta.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class FormFieldDao {
@Autowired
private FormFieldRepository formFieldRepository;
@Autowired
private LoggingUtil loggingUtil;
@Autowired
private HttpServletRequest request;
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 = formFieldRepository.save(formFieldEntity);
/** This code is responsible for adding a version history log for the "Create FormField" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(formFieldEntity).build());
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);
FormFieldEntity oldFormFieldEntity = Utils.getClonedEntityForData(formFieldEntity);
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 = formFieldRepository.save(formFieldEntity);
/** This code is responsible for adding a version history log for the "Update FormField" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldFormFieldEntity).newData(formFieldEntity).build());
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);
/** This code is responsible for adding a version history log for the "Delete FormField" operation. **/
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.DELETE).oldData(formEntity).newData(null).build());
}
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;
}
}