122 lines
6.3 KiB
Java
122 lines
6.3 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.ApplicationEvaluationDao;
|
|
|
|
import net.gepafin.tendermanagement.entities.ApplicationEvaluationEntity;
|
|
import net.gepafin.tendermanagement.entities.AssignedApplicationsEntity;
|
|
import net.gepafin.tendermanagement.entities.UserEntity;
|
|
import net.gepafin.tendermanagement.enums.ApplicationEvaluationStatusTypeEnum;
|
|
import net.gepafin.tendermanagement.model.request.ApplicationEvaluationRequest;
|
|
import net.gepafin.tendermanagement.model.response.ApplicationEvaluationResponse;
|
|
|
|
import net.gepafin.tendermanagement.repositories.AssignedApplicationsRepository;
|
|
import net.gepafin.tendermanagement.service.ApplicationEvaluationService;
|
|
import net.gepafin.tendermanagement.util.Validator;
|
|
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
|
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.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
@Service
|
|
public class ApplicationEvaluationServiceImpl implements ApplicationEvaluationService {
|
|
|
|
@Autowired
|
|
private ApplicationEvaluationDao applicationEvaluationDao;
|
|
@Autowired
|
|
private Validator validator;
|
|
@Autowired
|
|
private AssignedApplicationsRepository assignedApplicationsRepository;
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public ApplicationEvaluationResponse createOrUpdateApplicationEvaluation(HttpServletRequest request, ApplicationEvaluationRequest req,Long assignedApplicationsId) {
|
|
AssignedApplicationsEntity assignedApplication = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationsId).orElseThrow(()->
|
|
new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG)));
|
|
UserEntity user=validator.validatePreInstructor(request,assignedApplication.getUserId());
|
|
return applicationEvaluationDao.createOrUpdateApplicationEvaluation(user,req,assignedApplication.getId());
|
|
}
|
|
|
|
@Override
|
|
@Transactional(readOnly = true)
|
|
public List<ApplicationEvaluationResponse> getApplicationEvaluationByApplicationId(
|
|
HttpServletRequest request, Long applicationId, Long assignedApplicationId) {
|
|
if (applicationId == null && assignedApplicationId == null) {
|
|
throw new CustomValidationException(
|
|
Status.BAD_REQUEST,
|
|
Translator.toLocale(GepafinConstant.EITHER_APPLICATION_OR_ASSIGNED_APPLICATION_ID_REQUIRED_MSG)
|
|
);
|
|
}
|
|
AssignedApplicationsEntity assignedApplications;
|
|
|
|
if (applicationId != null && assignedApplicationId != null) {
|
|
assignedApplications = assignedApplicationsRepository
|
|
.findByApplicationIdAndAssignedApplicationId(applicationId, assignedApplicationId)
|
|
.orElseThrow(() -> new CustomValidationException(
|
|
Status.BAD_REQUEST,
|
|
Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG)
|
|
));
|
|
} else if (assignedApplicationId != null) {
|
|
assignedApplications = assignedApplicationsRepository
|
|
.findByAssignedApplicationId(assignedApplicationId)
|
|
.orElseThrow(() -> new CustomValidationException(
|
|
Status.BAD_REQUEST,
|
|
Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG)
|
|
));
|
|
} else {
|
|
List<AssignedApplicationsEntity> assignedApplicationsList = assignedApplicationsRepository
|
|
.findAllByApplicationId(applicationId);
|
|
|
|
if (assignedApplicationsList.isEmpty()) {
|
|
throw new CustomValidationException(
|
|
Status.BAD_REQUEST,
|
|
Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_WITH_ID_MSG)
|
|
);
|
|
}
|
|
|
|
assignedApplications = assignedApplicationsList.get(0);
|
|
}
|
|
|
|
UserEntity user = validator.validatePreInstructor(request, assignedApplications.getUserId());
|
|
if (applicationId != null && assignedApplicationId == null) {
|
|
return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, assignedApplications.getApplication().getId(), null);
|
|
}
|
|
|
|
if (applicationId != null && assignedApplicationId != null) {
|
|
return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, assignedApplications.getApplication().getId(), assignedApplications.getId());
|
|
}
|
|
return applicationEvaluationDao.getApplicationEvaluationByApplicationId(user, null, assignedApplications.getId());
|
|
}
|
|
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void deleteApplicationEvaluation(HttpServletRequest request,Long id) {
|
|
validator.getUserIdFromToken(request);
|
|
applicationEvaluationDao.deleteById(id);
|
|
}
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public ApplicationEvaluationResponse updateApplicationEvaluationStatus(HttpServletRequest request, Long assignedApplicationId) {
|
|
AssignedApplicationsEntity assignedApplication = assignedApplicationsRepository.findByIdAndIsDeletedFalse(assignedApplicationId).orElseThrow(()->
|
|
new ResourceNotFoundException(Status.NOT_FOUND,Translator.toLocale(GepafinConstant.ASSIGNED_APPLICATION_NOT_FOUND_MSG)));
|
|
validator.validatePreInstructor(request,assignedApplication.getUserId());
|
|
return applicationEvaluationDao.updateApplicationEvaluationStatus(assignedApplication.getApplication(),assignedApplication);
|
|
|
|
}
|
|
|
|
@Override
|
|
public ApplicationEvaluationEntity validateApplicationEvaluation(Long applicationEvaluationId) {
|
|
return applicationEvaluationDao.validateApplicationEvaluation(applicationEvaluationId);
|
|
}
|
|
}
|