110 lines
4.8 KiB
Java
110 lines
4.8 KiB
Java
package net.gepafin.tendermanagement.dao;
|
|
|
|
import net.gepafin.tendermanagement.entities.LookUpDataEntity;
|
|
import net.gepafin.tendermanagement.entities.LookUpDataEntity.LookUpDataTypeEnum;
|
|
import net.gepafin.tendermanagement.model.request.LookUpDataReq;
|
|
import net.gepafin.tendermanagement.model.request.LookUpDataRequest;
|
|
import net.gepafin.tendermanagement.model.response.LookUpDataResponseBean;
|
|
import net.gepafin.tendermanagement.repositories.LookUpDataRepository;
|
|
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 net.gepafin.tendermanagement.config.Translator;
|
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
import static net.gepafin.tendermanagement.util.Utils.setIfUpdated;
|
|
|
|
@Component
|
|
public class LookUpDataDao {
|
|
|
|
@Autowired
|
|
private LookUpDataRepository lookUpDataRepository;
|
|
|
|
public LookUpDataResponseBean createLookUpData(LookUpDataRequest lookUpDataReq) {
|
|
LookUpDataEntity entity = convertLookUpDataReqToLookUpDataEntity(lookUpDataReq);
|
|
return convertLookUpDataEntityToResponseBean(entity);
|
|
}
|
|
private LookUpDataEntity convertLookUpDataReqToLookUpDataEntity(LookUpDataRequest lookUpDataReq) {
|
|
LookUpDataEntity entity = new LookUpDataEntity();
|
|
entity.setTitle(lookUpDataReq.getTitle());
|
|
entity.setType(lookUpDataReq.getType().getValue());
|
|
entity.setValue(lookUpDataReq.getValue());
|
|
entity.setValue(lookUpDataReq.getResponse());
|
|
validateLookUpDataEntity(entity);
|
|
lookUpDataRepository.save(entity);
|
|
return entity;
|
|
}
|
|
|
|
public void validateLookUpDataEntity(LookUpDataEntity entity) {
|
|
if (entity.getValue() == null || entity.getValue().trim().isEmpty()) {
|
|
throw new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.VALUE_CANNOT_BE_EMPTY));
|
|
}
|
|
}
|
|
|
|
public LookUpDataEntity validateLookUpData(Long id) {
|
|
return lookUpDataRepository.findById(id)
|
|
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.LOOKUP_DATA_NOT_FOUND)));
|
|
}
|
|
|
|
public LookUpDataResponseBean getLookUpDataById(Long id) {
|
|
return convertLookUpDataEntityToResponseBean(validateLookUpData(id));
|
|
}
|
|
|
|
public LookUpDataResponseBean updateLookUpData(Long id, LookUpDataRequest lookUpDataReq) {
|
|
LookUpDataEntity entity = validateLookUpData(id);
|
|
setIfUpdated(entity::getTitle, entity::setTitle, lookUpDataReq.getTitle());
|
|
setIfUpdated(entity::getValue, entity::setValue, lookUpDataReq.getValue());
|
|
setIfUpdated(entity::getResponse, entity::setResponse, lookUpDataReq.getResponse());
|
|
lookUpDataRepository.save(entity);
|
|
return convertLookUpDataEntityToResponseBean(entity);
|
|
}
|
|
|
|
public void deleteLookUpData(Long id) {
|
|
LookUpDataEntity entity = validateLookUpData(id);
|
|
lookUpDataRepository.deleteById(entity.getId());
|
|
}
|
|
|
|
private LookUpDataResponseBean convertLookUpDataEntityToResponseBean(LookUpDataEntity entity) {
|
|
LookUpDataResponseBean response = new LookUpDataResponseBean();
|
|
response.setId(entity.getId());
|
|
response.setTitle(entity.getTitle());
|
|
response.setType(LookUpDataEntity.LookUpDataTypeEnum.valueOf(entity.getType()));
|
|
response.setValue(entity.getValue());
|
|
response.setResponse(entity.getResponse());
|
|
response.setCreatedDate(entity.getCreatedDate());
|
|
response.setUpdatedDate(entity.getUpdatedDate());
|
|
return response;
|
|
}
|
|
|
|
public List<LookUpDataResponseBean> getLookUpDataByTypes(List<LookUpDataTypeEnum> types) {
|
|
return types.stream()
|
|
.flatMap(type -> lookUpDataRepository.findByType(type.getValue()).stream())
|
|
.map(this::convertLookUpDataEntityToResponseBean)
|
|
.collect(Collectors.toList());
|
|
}
|
|
|
|
public LookUpDataEntity getOrCreateLookUpDataEntity(LookUpDataReq req,
|
|
LookUpDataEntity.LookUpDataTypeEnum type) {
|
|
if (req.getLookUpDataId() == null || req.getLookUpDataId().equals(0l)) {
|
|
LookUpDataEntity newEntity = new LookUpDataEntity();
|
|
newEntity.setTitle(req.getTitle());
|
|
newEntity.setValue(req.getValue());
|
|
newEntity.setResponse(req.getResponse());
|
|
newEntity.setType(type.getValue());
|
|
validateLookUpDataEntity(newEntity);
|
|
return lookUpDataRepository.save(newEntity);
|
|
}
|
|
|
|
return lookUpDataRepository.findById(req.getLookUpDataId())
|
|
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
|
|
Translator.toLocale(GepafinConstant.LOOK_UP_DATA_NOT_VALID_MSG)));
|
|
}
|
|
|
|
|
|
}
|