use of com.odysseusinc.arachne.portal.model.AnalysisUnlockRequest in project ArachneCentralAPI by OHDSI.
the class BaseAnalysisServiceImpl method processAnalysisUnlockRequest.
@Override
public void processAnalysisUnlockRequest(IUser user, Long invitationId, Boolean invitationAccepted) throws NotExistException {
final Long userId = user.getId();
final AnalysisUnlockRequest exist = analysisUnlockRequestRepository.findOneByIdAndLeadId(invitationId, userId).orElseThrow(() -> {
final String message = String.format(UNLOCK_REQUEST_NOT_EXIST_EXCEPTION, invitationId, userId);
return new NotExistException(message, AnalysisUnlockRequest.class);
});
if (invitationAccepted != null && invitationAccepted) {
exist.setStatus(AnalysisUnlockRequestStatus.APPROVED);
final A analysis = (A) exist.getAnalysis();
analysis.setLocked(false);
analysisRepository.save(analysis);
} else {
exist.setStatus(AnalysisUnlockRequestStatus.DECLINED);
}
analysisUnlockRequestRepository.save(exist);
}
use of com.odysseusinc.arachne.portal.model.AnalysisUnlockRequest in project ArachneCentralAPI by OHDSI.
the class BaseAnalysisServiceImpl method sendAnalysisUnlockRequest.
@Override
public AnalysisUnlockRequest sendAnalysisUnlockRequest(Long analysisId, AnalysisUnlockRequest analysisUnlockRequest) throws NotExistException, AlreadyExistException {
final Optional<A> analysisOptional = analysisRepository.findByIdAndAndLockedTrue(analysisId);
final Analysis analysis = analysisOptional.orElseThrow(() -> new NotExistException(ANALYSIS_NOT_FOUND_EXCEPTION, Analysis.class));
IUser user = analysisUnlockRequest.getUser();
final AnalysisUnlockRequest existUnlockRequest = analysisUnlockRequestRepository.findByAnalysisAndStatus(analysis, AnalysisUnlockRequestStatus.PENDING);
if (existUnlockRequest != null) {
String message = String.format(UNLOCK_REQUEST_ALREADY_EXISTS_EXCEPTION, analysis.getId(), user.getId());
throw new AlreadyExistException(message);
}
analysisUnlockRequest.setAnalysis(analysis);
final AnalysisUnlockRequest savedUnlockRequest = analysisUnlockRequestRepository.save(analysisUnlockRequest);
studyService.findLeads((S) savedUnlockRequest.getAnalysis().getStudy()).forEach(lead -> mailSender.send(new UnlockAnalysisRequestMailMessage(WebSecurityConfig.getDefaultPortalURI(), lead, savedUnlockRequest)));
return savedUnlockRequest;
}
use of com.odysseusinc.arachne.portal.model.AnalysisUnlockRequest in project ArachneCentralAPI by OHDSI.
the class BaseAnalysisController method sendUnlockRequest.
@ApiOperation("Send analysis unlock request")
@RequestMapping(value = "/api/v1/analysis-management/analyses/{analysisId}/unlock-request", method = POST)
public JsonResult<FileDTO> sendUnlockRequest(Principal principal, @PathVariable("analysisId") Long analysisId, @RequestBody AnalysisUnlockRequestDTO analysisUnlockRequestDTO) throws NotExistException, PermissionDeniedException, AlreadyExistException {
JsonResult result;
final IUser user = getUser(principal);
final AnalysisUnlockRequest unlockRequest = new AnalysisUnlockRequest();
unlockRequest.setUser(user);
unlockRequest.setStatus(AnalysisUnlockRequestStatus.PENDING);
unlockRequest.setCreated(new Date());
unlockRequest.setToken(UUID.randomUUID().toString().replace("-", ""));
unlockRequest.setDescription(analysisUnlockRequestDTO.getDescription());
try {
final AnalysisUnlockRequest analysisUnlockRequest = analysisService.sendAnalysisUnlockRequest(analysisId, unlockRequest);
analysisService.findLeads((T) analysisUnlockRequest.getAnalysis()).forEach(lead -> wsTemplate.convertAndSendToUser(lead.getUsername(), "/topic/invitations", new UpdateNotificationDTO()));
result = new JsonResult<>(NO_ERROR);
} catch (AlreadyExistException ex) {
result = new JsonResult<>(VALIDATION_ERROR);
result.setErrorMessage("Unlock request for the analysis was already created");
}
return result;
}
Aggregations