package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.CallDao; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.enums.EvaluationVersionEnum; import net.gepafin.tendermanagement.model.request.*; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CallResponse; import net.gepafin.tendermanagement.model.response.PageableResponseBean; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class CallServiceImpl implements CallService { @Autowired private CallDao callDao; @Autowired private Validator validator; @Override @Transactional(rollbackFor = Exception.class) public CallResponse createCallStep1(HttpServletRequest request, CreateCallRequestStep1 createCallRequest) { UserEntity user = validator.validateUser(request); return callDao.createCallStep1(createCallRequest, user); } @Override @Transactional(rollbackFor = Exception.class) public CallResponse createCallStep2(HttpServletRequest request, Long callId, CreateCallRequestStep2 createCallRequest) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.createCallStep2(call, createCallRequest, user); } @Override @Transactional(rollbackFor = Exception.class) public CallResponse updateCallStep1(HttpServletRequest request, Long callId, UpdateCallRequestStep1 updateCallRequest) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.updateCallStep1(request,call, updateCallRequest, user); } @Override @Transactional(readOnly = true) public CallResponse getCallById(HttpServletRequest request, Long callId,Long companyId) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.getCallById(request,user,call,companyId); } @Override @Transactional(rollbackFor = Exception.class) public List getAllCalls(HttpServletRequest request,Long companyId,Boolean onlyPreferredCall,Boolean onlyConfidiCall) { UserEntity user = validator.validateUser(request); return callDao.getAllCalls(request,user,companyId,onlyPreferredCall,onlyConfidiCall); } @Override @Transactional(rollbackFor = Exception.class) public CallResponse validateCallData(HttpServletRequest request, Long callId) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.validateCallData(call); } @Override @Transactional(rollbackFor = Exception.class) public CallResponse updateCallStatus(HttpServletRequest request, Long callId, CallStatusEnum statusReq) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.updateCallStatus(call, statusReq); } @Override public CallEntity validateCall(Long callId) { return callDao.validateCall(callId); } @Override public CallEntity validatePublishedCall(Long callId, Long hubId) { return callDao.validatePublishedCall(callId, hubId); } @Override @Transactional(readOnly = true) public byte[] downloadCallDocumentsAsZip(HttpServletRequest request, Long callId) { UserEntity user = validator.validateUser(request); validator.validateUserWithCall(user, callId); return callDao.downloadCallDocumentsAsZip(callId); } @Override @Transactional(rollbackFor = Exception.class) public PageableResponseBean> getAllCallsByPagination(HttpServletRequest request,Long companyId , Boolean onlyPreferredCall,Boolean onlyConfidiCall, CallPageableRequestBean callPageableRequestBean) { UserEntity user = validator.validateUser(request); return callDao.getAllCallsByPagination(request,user,companyId,onlyPreferredCall,onlyConfidiCall,callPageableRequestBean); } @Override @Transactional(rollbackFor = Exception.class) public CallResponse createCallStep2EvaluationV2(HttpServletRequest request, Long callId, CreateCallRequestStep2EvaluationV2 createCallRequest) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.createCallStep2EvaluationV2(call, createCallRequest, user); } }