package net.gepafin.tendermanagement.dao; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.EvaluationCriteriaEntity; import net.gepafin.tendermanagement.entities.LookUpDataEntity; import net.gepafin.tendermanagement.model.request.EvaluationCriteriaRequest; import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.repositories.EvaluationCriteriaRepository; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.LookUpDataService; 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.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Component; @Component public class EvaluationCriteriaDao { @Autowired private EvaluationCriteriaRepository evaluationCriteriaRepository; @Autowired private CallService callService; @Autowired private LookUpDataService lookUpDataService; public EvaluationCriteriaResponseBean createEvaluationCriteria( EvaluationCriteriaRequest evaluationCriteriaRequest) { EvaluationCriteriaEntity entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity( evaluationCriteriaRequest); return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity); } private EvaluationCriteriaEntity convertEvaluationCriteriaRequestToEvaluationCriteriaEntity( EvaluationCriteriaRequest evaluationCriteriaRequest) { EvaluationCriteriaEntity entity = new EvaluationCriteriaEntity(); CallEntity callEntity = callService.validateCall(evaluationCriteriaRequest.getCallId()); LookUpDataEntity looDataEntity = lookUpDataService .validateLookUpData(evaluationCriteriaRequest.getLookUpDataId()); entity.setCall(callEntity); entity.setLookupData(looDataEntity); entity.setScore(evaluationCriteriaRequest.getScore()); entity = evaluationCriteriaRepository.save(entity); return entity; } public EvaluationCriteriaResponseBean getEvaluationCriteriaById(Long id) { return evaluationCriteriaRepository.findById(id) .map(this::convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND))); } public EvaluationCriteriaResponseBean updateEvaluationCriteria(Long id, EvaluationCriteriaRequest request) { EvaluationCriteriaEntity entity = evaluationCriteriaRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND))); entity = convertEvaluationCriteriaRequestToEvaluationCriteriaEntity(request); return convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean(entity); } public void deleteEvaluationCriteria(Long id) { try { evaluationCriteriaRepository.deleteById(id); } catch (EmptyResultDataAccessException e) { throw new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.EVALUATION_CRITERIA_NOT_FOUND)); } } private EvaluationCriteriaResponseBean convertEvaluationCriteriaEntityEvaluationCriteriaToResponseBean( EvaluationCriteriaEntity entity) { EvaluationCriteriaResponseBean response = new EvaluationCriteriaResponseBean(); response.setId(entity.getId()); response.setScore(entity.getScore()); response.setCreatedDate(entity.getCreatedDate()); response.setUpdatedDate(entity.getUpdatedDate()); response.setLookUpDataId(entity.getLookupData().getId()); response.setTitle(entity.getLookupData().getTitle()); response.setValue(entity.getLookupData().getValue()); return response; } }