private Set<ProgramNotificationTemplate> resolveTemplates( ProgramInstance programInstance, final NotificationTrigger trigger ) { return programInstance.getProgram().getNotificationTemplates().stream() .filter( t -> t.getNotificationTrigger() == trigger ) .collect( Collectors.toSet() ); }
@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<ProgramRule> implementableProgramRules = getImplementableRules( enrollment.getProgram() ); List<ProgramRuleVariable> programRuleVariables = programRuleVariableService.getProgramRuleVariable( enrollment.getProgram() );
private void addProgramInstanceAudit( ProgramInstance programInstance, String accessedBy ) { if ( programInstance != null && programInstance.getProgram().getAccessLevel() != null && programInstance.getProgram().getAccessLevel() != AccessLevel.OPEN && accessedBy != null ) { ProgramInstanceAudit programInstanceAudit = new ProgramInstanceAudit( programInstance, accessedBy, AuditType.READ ); programInstanceAuditService.addProgramInstanceAudit( programInstanceAudit ); } }
List<ProgramRule> implementableProgramRules = getImplementableRules( enrollment.getProgram() ); List<ProgramRuleVariable> programRuleVariables = programRuleVariableService.getProgramRuleVariable( enrollment.getProgram() );
protected boolean validate( RuleEffect ruleEffect, ProgramInstance programInstance ) { if ( ruleEffect == null ) { return false; } ProgramNotificationTemplate template = getNotificationTemplate( ruleEffect.ruleAction() ); if ( template == null ) { log.info( String.format( "No template found for Program: %s", programInstance.getProgram().getName() ) ); return false; } if ( !notificationLoggingService.isValidForSending( generateKey( template, programInstance ) ) ) { log.info( String.format( "Skipped rule action for template id: %s", template.getUid() ) ); return false; } return true; } }
if ( programInstance.getProgram().getFeatureType().equals( FeatureType.POINT ) ) enrollment.setLastUpdated( DateUtils.getIso8601NoTz( programInstance.getLastUpdated() ) ); enrollment.setLastUpdatedAtClient( DateUtils.getIso8601NoTz( programInstance.getLastUpdatedAtClient() ) ); enrollment.setProgram( programInstance.getProgram().getUid() ); enrollment.setStatus( EnrollmentStatus.fromProgramStatus( programInstance.getStatus() ) ); enrollment.setEnrollmentDate( programInstance.getEnrollmentDate() );
@Override public void incompleteProgramInstanceStatus( ProgramInstance programInstance ) { Program program = programInstance.getProgram(); TrackedEntityInstance tei = programInstance.getEntityInstance(); if ( getProgramInstances( tei, program, ProgramStatus.ACTIVE ).size() > 0 ) { log.warn( "Program has another active enrollment going on. Not possible to incomplete" ); throw new IllegalQueryException( "Program has another active enrollment going on. Not possible to incomplete" ); } // ----------------------------------------------------------------- // Update program-instance // ----------------------------------------------------------------- programInstance.setStatus( ProgramStatus.ACTIVE ); updateProgramInstance( programInstance ); }
@Override public void hasAccess( ProgramMessageQueryParams params, User user ) { ProgramInstance programInstance = null; Set<Program> programs = new HashSet<>(); if ( params.hasProgramInstance() ) { programInstance = params.getProgramInstance(); } if ( params.hasProgramStageInstance() ) { programInstance = params.getProgramStageInstance().getProgramInstance(); } if ( programInstance == null ) { throw new IllegalQueryException( "ProgramInstance or ProgramStageInstance has to be provided" ); } programs = new HashSet<>( programService.getUserPrograms( user ) ); if ( user != null && !programs.contains( programInstance.getProgram() ) ) { throw new IllegalQueryException( "User does not have access to the required program" ); } }
@Override public RuleEnrollment toMappedRuleEnrollment( ProgramInstance enrollment ) { if( enrollment == null ) { return null; } return RuleEnrollment.create( enrollment.getUid(), enrollment.getIncidentDate(), enrollment.getEnrollmentDate(), RuleEnrollment.Status.valueOf( enrollment.getStatus().toString() ), enrollment.getOrganisationUnit() != null ? enrollment.getOrganisationUnit().getUid() : "", enrollment.getEntityInstance().getTrackedEntityAttributeValues().stream().filter( Objects::nonNull ) .map( attr -> RuleAttributeValue.create( attr.getAttribute().getUid(), getTrackedEntityAttributeValue( attr ) ) ) .collect( Collectors.toList() ), enrollment.getProgram().getName() ); }
private boolean hasDataWriteAccess( ProgramMessage message ) { IdentifiableObject object = null; boolean isAuthorized; if ( message.hasProgramInstance() ) { object = message.getProgramInstance().getProgram(); } else if( message.hasProgramStageInstance() ) { object = message.getProgramStageInstance().getProgramStage(); } if ( object != null ) { isAuthorized = aclService.canDataWrite( currentUserService.getCurrentUser(), object ); if ( !isAuthorized ) { log.error( String.format( "Sending message failed. User does not have write access for %s.", object.getName() ) ); return false; } } return true; }
Program program = programInstance.getProgram();
Program program = programInstance.getProgram();
private ImportSummaries handleEvents( Enrollment enrollment, ProgramInstance programInstance, ImportOptions importOptions ) { List<Event> create = new ArrayList<>(); List<Event> update = new ArrayList<>(); List<String> delete = new ArrayList<>(); for ( Event event : enrollment.getEvents() ) { event.setEnrollment( enrollment.getEnrollment() ); event.setProgram( programInstance.getProgram().getUid() ); event.setTrackedEntityInstance( enrollment.getTrackedEntityInstance() ); if ( importOptions.getImportStrategy().isSync() && event.isDeleted() ) { delete.add( event.getEvent() ); } else if ( !programStageInstanceService.programStageInstanceExists( event.getEvent() ) ) { create.add( event ); } else { update.add( event ); } } ImportSummaries importSummaries = new ImportSummaries(); importSummaries.addImportSummaries( eventService.addEvents( create, importOptions, false ) ); importSummaries.addImportSummaries( eventService.updateEvents( update, importOptions, false, false ) ); importSummaries.addImportSummaries( eventService.deleteEvents( delete, false ) ); return importSummaries; }
if ( !programInstance.getProgram().getIgnoreOverdueEvents() || dueDate.before( currentDate ) ) programStageInstance.setStatus( EventStatus.SCHEDULE ); if ( programStage.getOpenAfterEnrollment() || programInstance.getProgram().isWithoutRegistration() || programStage.getPeriodType() != null )
"ProgramInstance '" + itemUid + "' not found." ) ); else if ( !pi.getProgram().equals( constraint.getProgram() ) )
if ( programStageInstance.getProgramInstance().getProgram().isRegistration() )
Program program = programStageInstance.getProgramInstance().getProgram();
program = programInstance.getProgram(); if ( !programInstance.getProgram().hasOrganisationUnit( organisationUnit ) )