120 lines
5.1 KiB
Java
120 lines
5.1 KiB
Java
package net.gepafin.tendermanagement.dao;
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
import net.gepafin.tendermanagement.config.Translator;
|
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|
import net.gepafin.tendermanagement.entities.HubEntity;
|
|
import net.gepafin.tendermanagement.enums.VersionActionTypeEnum;
|
|
import net.gepafin.tendermanagement.model.request.HubReq;
|
|
import net.gepafin.tendermanagement.model.request.VersionHistoryRequest;
|
|
import net.gepafin.tendermanagement.model.response.HubResponseBean;
|
|
import net.gepafin.tendermanagement.model.util.NanoIdUtils;
|
|
import net.gepafin.tendermanagement.repositories.HubRepository;
|
|
import net.gepafin.tendermanagement.util.LoggingUtil;
|
|
import net.gepafin.tendermanagement.util.Utils;
|
|
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;
|
|
|
|
@Autowired
|
|
private LoggingUtil loggingUtil;
|
|
|
|
public HubResponseBean createHub(HttpServletRequest request,HubReq hubReq) {
|
|
HubEntity hubEntity = createOrUpdateHubEntity(new HubEntity(), hubReq);
|
|
hubRepository.save(hubEntity);
|
|
|
|
/** This code is responsible for adding a version history log for the "Create Hub" operation. **/
|
|
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.INSERT).oldData(null).newData(hubEntity).build());
|
|
|
|
return convertToHubResponseBean(hubEntity);
|
|
}
|
|
|
|
public HubResponseBean updateHub(HttpServletRequest request,Long hubId, HubReq hubReq) {
|
|
HubEntity hubEntity = validateHub(hubId);
|
|
HubEntity oldHubEntity = Utils.getClonedEntityForData(hubEntity);
|
|
HubEntity newHubEntity = createOrUpdateHubEntity(hubEntity, hubReq);
|
|
|
|
/** This code is responsible for adding a version history log for the "Update Hub" operation. **/
|
|
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.UPDATE).oldData(oldHubEntity).newData(newHubEntity).build());
|
|
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(HttpServletRequest request,Long hubId) {
|
|
HubEntity hubEntity = validateHub(hubId);
|
|
|
|
/** This code is responsible for adding a version history log for the "Delete Hub" operation. **/
|
|
loggingUtil.addVersionHistory(VersionHistoryRequest.builder().request(request).actionType(VersionActionTypeEnum.DELETE).oldData(hubEntity).build());
|
|
|
|
hubRepository.deleteById(hubId);
|
|
}
|
|
|
|
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));
|
|
}
|
|
}
|