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.model.request.CreateCallRequestStep1; import net.gepafin.tendermanagement.model.request.CreateCallRequestStep2; import net.gepafin.tendermanagement.model.request.UpdateCallRequestStep1; import net.gepafin.tendermanagement.model.response.CallDetailsResponseBean; import net.gepafin.tendermanagement.model.response.CallResponse; 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(call, updateCallRequest, user); } @Override @Transactional(readOnly = true) public CallResponse getCallById(HttpServletRequest request, Long callId) { UserEntity user = validator.validateUser(request); CallEntity call = validator.validateUserWithCall(user, callId); return callDao.getCallById(user,call); } @Override @Transactional(readOnly = true) public List getAllCalls(HttpServletRequest request) { UserEntity user = validator.validateUser(request); return callDao.getAllCalls(user); } @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); } }