package net.gepafin.tendermanagement.service.impl; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.ApplicationDao; import net.gepafin.tendermanagement.dao.FlowFormDao; import net.gepafin.tendermanagement.entities.ApplicationEntity; import net.gepafin.tendermanagement.entities.FormEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.enums.FormActionEnum; import net.gepafin.tendermanagement.model.request.ApplicationRequestBean; import net.gepafin.tendermanagement.model.response.ApplicationGetResponseBean; import net.gepafin.tendermanagement.model.response.ApplicationResponse; import net.gepafin.tendermanagement.model.response.ApplicationResponseBean; import net.gepafin.tendermanagement.model.response.NextOrPreviousFormResponse; import net.gepafin.tendermanagement.service.ApplicationService; import net.gepafin.tendermanagement.service.FormService; 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 ApplicationServiceImpl implements ApplicationService { @Autowired private ApplicationDao applicationDao; @Autowired private FlowFormDao flowFormDao; @Autowired private FormService formService; @Autowired private Validator validator; @Override @Transactional(rollbackFor = Exception.class) public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId) { UserEntity userEntity = validator.validateUser(request); return applicationDao.createApplication(applicationRequestBean,userEntity,formId); } @Override @Transactional(readOnly = true) public ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId) { UserEntity userEntity = validator.validateUser(request); return applicationDao.getApplicationByFormId(applicationId,formId,userEntity); } @Override @Transactional(rollbackFor = Exception.class) public void deleteApplication(HttpServletRequest request, Long applicationId) { applicationDao.deleteById(applicationId); } @Override public ApplicationEntity validateApplication(Long id) { return applicationDao.validateApplication(id); } @Override @Transactional(rollbackFor = Exception.class) public ApplicationResponse createApplication(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId) { UserEntity userEntity = validator.validateUser(request); return applicationDao.createApplicationByCallId(applicationRequest,callId,userEntity); } @Override public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action) { ApplicationEntity applicationEntity = validateApplication(applicationId); return flowFormDao.getnextOrPreviousForm(applicationEntity, formId, action); } @Override public void updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status) { applicationDao.updateApplicationStatus(applicationId, status); } @Override @Transactional(readOnly = true) public List getAllApplications(HttpServletRequest request) { UserEntity userEntity = validator.validateUser(request); return applicationDao.getAllApplications(userEntity); } }