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

101 lines
3.8 KiB
Java

package net.gepafin.tendermanagement.dao;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.entities.HubEntity;
import net.gepafin.tendermanagement.model.request.HubReq;
import net.gepafin.tendermanagement.model.response.HubResponseBean;
import net.gepafin.tendermanagement.model.util.NanoIdUtils;
import net.gepafin.tendermanagement.repositories.HubRepository;
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;
@Component
public class HubDao {
@Autowired
private HubRepository hubRepository;
public HubResponseBean createHub(HubReq hubReq) {
HubEntity hubEntity = createOrUpdateHubEntity(new HubEntity(), hubReq);
hubRepository.save(hubEntity);
return convertToHubResponseBean(hubEntity);
}
public HubResponseBean updateHub(Long hubId, HubReq hubReq) {
HubEntity hubEntity = validateHub(hubId);
createOrUpdateHubEntity(hubEntity, hubReq);
return convertToHubResponseBean(hubEntity);
}
public HubResponseBean getHubById(Long hubId) {
return convertToHubResponseBean(validateHub(hubId));
}
public List<HubResponseBean> getAllHubs() {
List<HubEntity> hubs = hubRepository.findAll();
return hubs.stream().map(this::convertToHubResponseBean).toList();
}
public void deleteHub(Long hubId) {
HubEntity hubEntity = validateHub(hubId);
hubRepository.deleteById(hubId);
hubRepository.save(hubEntity);
}
public HubEntity validateHub(Long hubId) {
return hubRepository.findById(hubId)
.orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.HUB_NOT_FOUND)));
}
private HubEntity createOrUpdateHubEntity(HubEntity hubEntity, HubReq hubReq) {
hubEntity.setCompanyName(hubReq.getCompanyName());
hubEntity.setFirstName(hubReq.getFirstName());
hubEntity.setLastName(hubReq.getLastName());
hubEntity.setEmail(hubReq.getEmail());
hubEntity.setCity(hubReq.getCity());
hubEntity.setCountry(hubReq.getCountry());
hubEntity.setVatNumber(hubReq.getVatNumber());
hubEntity.setUniqueUuid(NanoIdUtils.randomNanoId());
hubEntity.setDomainName(hubReq.getDomainName());
hubEntity.setAppConfig(hubReq.getAppConfig() != null ? hubReq.getAppConfig().toString() : null);
hubEntity.setCreatedDate(hubEntity.getCreatedDate() == null ? LocalDateTime.now() : hubEntity.getCreatedDate());
hubEntity.setUpdatedDate(LocalDateTime.now());
return hubEntity;
}
private HubResponseBean convertToHubResponseBean(HubEntity hubEntity) {
HubResponseBean responseBean = new HubResponseBean();
responseBean.setId(hubEntity.getId());
responseBean.setCompanyName(hubEntity.getCompanyName());
responseBean.setFirstName(hubEntity.getFirstName());
responseBean.setLastName(hubEntity.getLastName());
responseBean.setEmail(hubEntity.getEmail());
responseBean.setCity(hubEntity.getCity());
responseBean.setCountry(hubEntity.getCountry());
responseBean.setVatNumber(hubEntity.getVatNumber());
responseBean.setUniqueUuid(hubEntity.getUniqueUuid());
responseBean.setDomainName(hubEntity.getDomainName());
responseBean.setAppConfig(hubEntity.getAppConfig());
responseBean.setCreatedDate(hubEntity.getCreatedDate());
responseBean.setUpdatedDate(hubEntity.getUpdatedDate());
return responseBean;
}
public HubEntity getHubByUuid(String hubUuid) {
return hubRepository.findByUniqueUuid(hubUuid).orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND,
Translator.toLocale(GepafinConstant.HUB_NOT_FOUND)));
}
public HubResponseBean getHubByHubUuid(String uuid) {
return convertToHubResponseBean(getHubByUuid(uuid));
}
}