Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/dao/FormTemplateDao.java
2024-09-03 20:11:29 +05:30

103 lines
5.0 KiB
Java

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.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;
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 = validateFormTemplate(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 validateFormTemplate(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 = validateFormTemplate(formTemplateId);
return convertFormTemplateEntityToFormTemplateResponseBean(formTemplateEntity);
}
public void deleteFormTemplateById(Long formTemplateId) {
FormTemplateEntity formTemplateEntity = validateFormTemplate(formTemplateId);
formTemplateRepository.delete(formTemplateEntity);
}
public String setContentResponseBean(List<ContentRequestBean> contentRequestBeans) {
return Utils.convertListToJsonString(contentRequestBeans);
}
public List<FormTemplateResponseBean> getAllFormTemplate() {
List<FormTemplateEntity> formTemplateEntities = formTemplateRepository.findAll();
List<FormTemplateResponseBean> formTemplateResponseBeans = formTemplateEntities.stream()
.map(req -> convertFormTemplateEntityToFormTemplateResponseBean(req)).collect(Collectors.toList());
return formTemplateResponseBeans;
}
}