@Override public void implement( RuleEffect ruleEffect, ProgramStageInstance programStageInstance ) { ProgramInstance programInstance = programStageInstance.getProgramInstance(); assignValue( ruleEffect, programInstance ); }
private void updateTrackedEntityInstance( List<ProgramStageInstance> programStageInstances, User user, boolean bulkUpdate ) { for ( ProgramStageInstance programStageInstance : programStageInstances ) { if ( programStageInstance.getProgramInstance() != null ) { if ( !bulkUpdate ) { manager.update( programStageInstance.getProgramInstance(), user ); if ( programStageInstance.getProgramInstance().getEntityInstance() != null ) { manager.update( programStageInstance.getProgramInstance().getEntityInstance(), user ); } } else { programInstancesToUpdate.add( programStageInstance.getProgramInstance() ); if ( programStageInstance.getProgramInstance().getEntityInstance() != null ) { trackedEntityInstancesToUpdate.add( programStageInstance.getProgramInstance().getEntityInstance() ); } } } } }
@Override protected Map<String, String> resolveTrackedEntityAttributeValues( Set<String> attributeKeys, ProgramStageInstance entity ) { if ( attributeKeys.isEmpty() ) { return Maps.newHashMap(); } return entity.getProgramInstance().getEntityInstance().getTrackedEntityAttributeValues().stream() .filter( av -> attributeKeys.contains( av.getAttribute().getUid() ) ) .collect( Collectors.toMap( av -> av.getAttribute().getUid(), ProgramStageNotificationMessageRenderer::filterValue ) ); }
private ProgramMessageRecipients resolveProgramStageNotificationRecipients( ProgramNotificationTemplate template, OrganisationUnit organisationUnit, ProgramStageInstance psi ) { ProgramMessageRecipients recipients = new ProgramMessageRecipients(); if ( template.getNotificationRecipient() == ProgramNotificationRecipient.DATA_ELEMENT && template.getRecipientDataElement() != null ) { List<String> recipientList = psi.getDataValues().stream() .filter( dv -> template.getRecipientDataElement().getUid().equals( dv.getDataElement().getUid() ) ) .map( TrackedEntityDataValue::getValue ) .collect( Collectors.toList() ); if ( template.getDeliveryChannels().contains( DeliveryChannel.SMS ) ) { recipients.getPhoneNumbers().addAll( recipientList ); } else if ( template.getDeliveryChannels().contains( DeliveryChannel.EMAIL ) ) { recipients.getEmailAddresses().addAll( recipientList ); } return recipients; } else { TrackedEntityInstance trackedEntityInstance = psi.getProgramInstance().getEntityInstance(); return resolveRecipients( template, organisationUnit, trackedEntityInstance, psi.getProgramInstance() ); } }
ProgramInstance enrollment = programStageInstance.getProgramInstance();
@Override public void implement( RuleEffect ruleEffect, ProgramStageInstance programStageInstance ) { if ( !validate( ruleEffect, programStageInstance.getProgramInstance() ) ) { return; } ProgramNotificationTemplate template = getNotificationTemplate( ruleEffect.ruleAction() ); String key = generateKey( template, programStageInstance.getProgramInstance() ); publisher.publishEvent( template, programStageInstance, ProgramNotificationEventType.PROGRAM_RULE_EVENT ); ExternalNotificationLogEntry entry = createLogEntry( key, template.getUid() ); entry.setNotificationTriggeredBy( NotificationTriggerEvent.PROGRAM_STAGE ); notificationLoggingService.save( entry ); } }
if ( programStageInstance.getProgramInstance().getProgram().isRegistration() ) .canAutoCompleteProgramInstanceStatus( programStageInstance.getProgramInstance() ); programInstanceService.completeProgramInstanceStatus( programStageInstance.getProgramInstance() );
@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 void implement( RuleEffect ruleEffect, ProgramStageInstance programStageInstance ) { if ( !validate( ruleEffect, programStageInstance.getProgramInstance() ) ) { return; } ProgramNotificationTemplate template = getNotificationTemplate( ruleEffect.ruleAction() ); String key = generateKey( template, programStageInstance.getProgramInstance() ); String date = ruleEffect.data(); if ( !isDateValid( date ) ) { return; } ProgramNotificationInstance notificationInstance = createNotificationInstance( template, date ); notificationInstance.setProgramStageInstance( programStageInstance ); notificationInstance.setProgramInstance( null ); programNotificationInstanceStore.save( notificationInstance ); log.info( String.format( "Notification with id:%s has been scheduled", template.getUid() ) ); ExternalNotificationLogEntry entry = createLogEntry( key, template.getUid() ); entry.setNotificationTriggeredBy( NotificationTriggerEvent.PROGRAM_STAGE ); notificationLoggingService.save( entry ); }
.getProgramStageInstance( programStageInstance.getProgramInstance(), otherProgramStage ); entityInstanceDataValues = dataValueService.getTrackedEntityDataValues( otherProgramStageInstance ); mapDataValue.put( programStageUid, entityInstanceDataValues );
if ( !ownershipAccessManager.hasAccess( user, programStageInstance.getProgramInstance().getEntityInstance(), program ) )
if ( !ownershipAccessManager.hasAccess( user, programStageInstance.getProgramInstance().getEntityInstance(), program ) )
@Override public ImportSummary deleteEvent( String uid ) { boolean existsEvent = programStageInstanceService.programStageInstanceExists( uid ); if ( existsEvent ) { ProgramStageInstance programStageInstance = programStageInstanceService.getProgramStageInstance( uid ); List<String> errors = trackerAccessManager.canWrite( currentUserService.getCurrentUser(), programStageInstance ); if ( !errors.isEmpty() ) { return new ImportSummary( ImportStatus.ERROR, errors.toString() ).incrementIgnored(); } programStageInstanceService.deleteProgramStageInstance( programStageInstance ); if ( programStageInstance.getProgramStage().getProgram().isRegistration() ) { entityInstanceService.updateTrackedEntityInstance( programStageInstance.getProgramInstance().getEntityInstance() ); } return new ImportSummary( ImportStatus.SUCCESS, "Deletion of event " + uid + " was successful" ).incrementDeleted(); } else { return new ImportSummary( ImportStatus.SUCCESS, "Event " + uid + " cannot be deleted as it is not present in the system" ).incrementIgnored(); } }
event.setEvent( programStageInstance.getUid() ); if ( programStageInstance.getProgramInstance().getEntityInstance() != null ) event.setTrackedEntityInstance( programStageInstance.getProgramInstance().getEntityInstance().getUid() ); event.setFollowup( programStageInstance.getProgramInstance().getFollowup() ); event.setEnrollmentStatus( EnrollmentStatus.fromProgramStatus( programStageInstance.getProgramInstance().getStatus() ) ); event.setStatus( programStageInstance.getStatus() ); event.setEventDate( DateUtils.getIso8601NoTz( programStageInstance.getExecutionDate() ) ); Program program = programStageInstance.getProgramInstance().getProgram(); event.setEnrollment( programStageInstance.getProgramInstance().getUid() ); event.setProgramStage( programStageInstance.getProgramStage().getUid() ); event.setAttributeOptionCombo( programStageInstance.getAttributeOptionCombo().getUid() ); .getCategoryOptions().stream().map( CategoryOption::getUid ).collect( Collectors.toList() ) ) ); if ( programStageInstance.getProgramInstance().getEntityInstance() != null ) event.setTrackedEntityInstance( programStageInstance.getProgramInstance().getEntityInstance().getUid() );