Files
bflows-bandi-be/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java

156 lines
7.0 KiB
Java

package net.gepafin.tendermanagement.service.impl;
import jakarta.servlet.http.HttpServletRequest;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.dao.ApplicationDao;
import net.gepafin.tendermanagement.dao.FlowFormDao;
import net.gepafin.tendermanagement.entities.ApplicationEntity;
import net.gepafin.tendermanagement.entities.CompanyEntity;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.model.request.ApplicationPageableRequestBean;
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.*;
import net.gepafin.tendermanagement.service.ApplicationService;
import net.gepafin.tendermanagement.util.Validator;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.ForbiddenAccessException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@Service
public class ApplicationServiceImpl implements ApplicationService {
@Autowired
private ApplicationDao applicationDao;
@Autowired
private FlowFormDao flowFormDao;
@Autowired
private Validator validator;
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationResponseBean createApplication(HttpServletRequest request,
ApplicationRequestBean applicationRequestBean, Long applicationId, Long formId) {
return applicationDao.createApplication(request, applicationRequestBean, formId, applicationId);
}
@Override
@Transactional(readOnly = true)
public ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId) {
return applicationDao.getApplicationByFormId(request, applicationId,formId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteApplication(HttpServletRequest request, Long applicationId) {
applicationDao.deleteById(request, applicationId);
}
@Override
public ApplicationEntity validateApplication(Long applicationId) {
return applicationDao.validateApplication(applicationId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationResponse createApplication(HttpServletRequest request, Long companyId, ApplicationRequest applicationRequest, Long callId) {
UserEntity userEntity = validator.validateUser(request);
if(companyId==null){
throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.USER_MUST_BE_ASSOCIATED_WITH_COMPANY));
}
CompanyEntity companyEntity = validator.validateUserWithCompany(request, companyId);
validator.validateUserWithCall(userEntity, callId);
return applicationDao.createApplicationByCallId(companyEntity, applicationRequest, callId, userEntity);
}
@Override
public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long companyId, Long formId,
FormActionEnum action) {
if (companyId !=null) {
validator.validateUserWithCompany(request, companyId);
}
ApplicationEntity applicationEntity =null;
if(validator.checkIsBeneficiary()){
if(companyId==null){
throw new ForbiddenAccessException(Status.FORBIDDEN,Translator.toLocale(GepafinConstant.COMPANY_ID_MANDATORY));
}
applicationEntity = validateApplicationWithCompany(applicationId, companyId);
}else {
applicationEntity=validateApplication(applicationId);
}
return flowFormDao.getNextOrPreviousForm(applicationEntity, companyId, formId, action);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationResponse updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status) {
return applicationDao.updateApplicationStatus(request, applicationId, status);
}
@Override
@Transactional(readOnly = true)
public List<ApplicationResponse> getAllApplications(HttpServletRequest request, Long callId, Long companyId ,List<ApplicationStatusTypeEnum> statusList) {
UserEntity userEntity = validator.validateUser(request);
if (companyId != null) {
validator.validateUserWithCompany(request, companyId);
}
return applicationDao.getAllApplications(userEntity, callId, companyId , statusList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationSignedDocumentResponse uploadSignedDocument(HttpServletRequest request, Long applicationId, MultipartFile file) {
return applicationDao.uploadSignedDocument(request, applicationId, file);
}
@Override
@Transactional(readOnly = true)
public ApplicationSignedDocumentResponse getSignedDocument(HttpServletRequest request, Long applicationId) {
return applicationDao.getSignedDocument(request, applicationId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteSignedDocument(HttpServletRequest request, Long applicationId) {
applicationDao.deleteSignedDocument(request, applicationId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationResponse validateApplication(HttpServletRequest request, Long applicationId) {
return applicationDao.validateApplication(request, applicationId);
}
@Override
@Transactional(readOnly = true)
public byte[] downloadApplicationDocumentsAsZip(HttpServletRequest request, Long applicationId) {
return applicationDao.downloadApplicationDocumentsAsZip(request,applicationId);
}
@Override
public PageableResponseBean<List<ApplicationResponse>> getAllApplicationByPagination(HttpServletRequest request, Long callId, Long companyId, ApplicationPageableRequestBean applicationPageableRequestBean) {
UserEntity userEntity = validator.validateUser(request);
if (companyId != null) {
validator.validateUserWithCompany(request, companyId);
}
return applicationDao.getAllApplicationByPagination(userEntity,callId,companyId,applicationPageableRequestBean);
}
@Override
@Transactional(rollbackFor = Exception.class)
public ApplicationEntity validateApplicationWithCompany(Long applicationId,Long companyId) {
return applicationDao.validateApplicationWithCompany(applicationId,companyId);
}
}