@Override public void deleteProgramInstance( ProgramInstance programInstance ) { for ( ProgramStageInstance programStageInstance : programInstance.getProgramStageInstances() ) { programStageInstanceService.deleteProgramStageInstance( programStageInstance, false ); } }
private List<ImportConflict> isAllowedToDelete( User user, ProgramInstance pi ) { List<ImportConflict> importConflicts = new ArrayList<>(); Set<ProgramStageInstance> notDeletedProgramStageInstances = pi.getProgramStageInstances().stream() .filter( psi -> !psi.isDeleted() ) .collect( Collectors.toSet() ); if ( !notDeletedProgramStageInstances.isEmpty() && !user.isAuthorized( Authorities.F_ENROLLMENT_CASCADE_DELETE.getAuthority() ) ) { importConflicts.add( new ImportConflict( pi.getUid(), "Enrollment " + pi.getUid() + " cannot be deleted as it has associated events and user does not have authority: " + Authorities.F_ENROLLMENT_CASCADE_DELETE.getAuthority() ) ); } List<String> errors = trackerAccessManager.canWrite( user, pi ); if ( !errors.isEmpty() ) { errors.forEach( error -> importConflicts.add( new ImportConflict( pi.getUid(), error ) ) ); } return importConflicts; } }
@Override public boolean canAutoCompleteProgramInstanceStatus( ProgramInstance programInstance ) { Set<ProgramStageInstance> programStageInstances = new HashSet<>( programInstance.getProgramStageInstances() ); Set<ProgramStage> programStages = new HashSet<>(); for ( ProgramStageInstance programStageInstance : programStageInstances ) { if ( (!programStageInstance.isCompleted() && programStageInstance.getStatus() != EventStatus.SKIPPED) || programStageInstance.getProgramStage().getRepeatable() ) { return false; } programStages.add( programStageInstance.getProgramStage() ); } return programStages.size() == programInstance.getProgram().getProgramStages().size(); }
List<RuleEvent> ruleEvents = programRuleEntityMapperService.toMappedRuleEvents( enrollment.getProgramStageInstances() );
List<RuleEvent> ruleEvents = programRuleEntityMapperService.toMappedRuleEvents( enrollment.getProgramStageInstances(), programStageInstance );
for ( ProgramStageInstance programStageInstance : programInstance.getProgramStageInstances() )
completedBy, storedBy, event.getEvent(), aoc, importOptions ); programInstance.getProgramStageInstances().add( programStageInstance );
for ( ProgramStageInstance programStageInstance : programInstance.getProgramStageInstances() )