@Override public ProgramInstance enrollTrackedEntityInstance( TrackedEntityInstance trackedEntityInstance,Program program, Date enrollmentDate, Date incidentDate, OrganisationUnit organisationUnit, String uid ) { // --------------------------------------------------------------------- // Add program instance // --------------------------------------------------------------------- ProgramInstance programInstance = prepareProgramInstance( trackedEntityInstance, program, ProgramStatus.ACTIVE, enrollmentDate, incidentDate, organisationUnit, uid ); addProgramInstance( programInstance ); // ----------------------------------------------------------------- // Send enrollment notifications (if any) // ----------------------------------------------------------------- programNotificationPublisher.publishEnrollment( programInstance, ProgramNotificationEventType.PROGRAM_ENROLLMENT ); eventPublisher.publishEvent( new TrackedEntityInstanceEnrolledEvent( this, programInstance ) ); // ----------------------------------------------------------------- // Update ProgramInstance and TEI // ----------------------------------------------------------------- updateProgramInstance( programInstance ); trackedEntityInstanceService.updateTrackedEntityInstance( trackedEntityInstance ); return programInstance; }
private void addProrgamInstanceAudits( List<ProgramInstance> programInstances, String accessedBy ) { for ( ProgramInstance programInstance : programInstances ) { addProgramInstanceAudit( programInstance, accessedBy ); } } }
@Override public void deleteProgramInstance( ProgramInstance programInstance ) { deleteProgramInstance( programInstance, false ); }
@Override public List<ProgramInstance> getProgramInstances( ProgramInstanceQueryParams params ) decideAccess( params ); validate( params ); addProrgamInstanceAudits( programInstances, user.getUsername() );
@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 int countProgramInstances( ProgramInstanceQueryParams params ) { decideAccess( params ); validate( params ); User user = currentUserService.getCurrentUser(); if ( user != null && params.isOrganisationUnitMode( OrganisationUnitSelectionMode.ACCESSIBLE ) ) { params.setOrganisationUnits( user.getDataViewOrganisationUnitsWithFallback() ); params.setOrganisationUnitMode( OrganisationUnitSelectionMode.DESCENDANTS ); } else if ( params.isOrganisationUnitMode( CHILDREN ) ) { Set<OrganisationUnit> organisationUnits = new HashSet<>(); organisationUnits.addAll( params.getOrganisationUnits() ); for ( OrganisationUnit organisationUnit : params.getOrganisationUnits() ) { organisationUnits.addAll( organisationUnit.getChildren() ); } params.setOrganisationUnits( organisationUnits ); } params.setSkipPaging( true ); return programInstanceStore.countProgramInstances( params ); }
@Override public void completeProgramInstanceStatus( ProgramInstance programInstance ) { // --------------------------------------------------------------------- // Send sms-message when to completed the program // --------------------------------------------------------------------- programNotificationPublisher.publishEnrollment( programInstance, ProgramNotificationEventType.PROGRAM_COMPLETION ); eventPublisher.publishEvent( new TrackedEntityInstanceEnrolledEvent( this, programInstance ) ); // ----------------------------------------------------------------- // Update program-instance // ----------------------------------------------------------------- programInstance.setStatus( ProgramStatus.COMPLETED ); programInstance.setEndDate( new Date() ); programInstance.setCompletedBy( currentUserService.getCurrentUsername() ); updateProgramInstance( programInstance ); }
updateProgramInstance( programInstance );
@Override public ProgramInstance getProgramInstance( int id ) { ProgramInstance programInstance = programInstanceStore.get( id ); User user = currentUserService.getCurrentUser(); if ( user != null ) { addProgramInstanceAudit( programInstance, user.getUsername() ); } return programInstance; }
@Override public ProgramInstance getProgramInstance( String uid ) { ProgramInstance programInstance = programInstanceStore.getByUid( uid ); User user = currentUserService.getCurrentUser(); if ( user != null ) { addProgramInstanceAudit( programInstance, user.getUsername() ); } return programInstance; }