private ProgramMessageRecipients resolveProgramNotificationRecipients( ProgramNotificationTemplate template, OrganisationUnit organisationUnit, ProgramInstance programInstance ) { return resolveRecipients( template, organisationUnit, programInstance.getEntityInstance(), programInstance ); }
@Override protected Map<String, String> resolveTrackedEntityAttributeValues( Set<String> attributeKeys, ProgramInstance entity ) { if ( attributeKeys.isEmpty() ) { return Maps.newHashMap(); } return entity.getEntityInstance().getTrackedEntityAttributeValues().stream() .filter( av -> attributeKeys.contains( av.getAttribute().getUid() ) ) .collect( Collectors.toMap( av -> av.getAttribute().getUid(), ProgramNotificationMessageRenderer::filterValue ) ); }
@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 ) ); }
@Override public List<Enrollment> getEnrollments( Iterable<ProgramInstance> programInstances ) { List<Enrollment> enrollments = new ArrayList<>(); User user = currentUserService.getCurrentUser(); for ( ProgramInstance programInstance : programInstances ) { if ( programInstance != null && programInstance.getEntityInstance() != null && trackerAccessManager.canRead( user, programInstance ).isEmpty() ) { enrollments.add( getEnrollment( user, programInstance, TrackedEntityInstanceParams.FALSE ) ); } } return enrollments; }
@Override public void incompleteEnrollment( String uid ) { ProgramInstance programInstance = programInstanceService.getProgramInstance( uid ); programInstanceService.incompleteProgramInstanceStatus( programInstance ); teiService.updateTrackedEntityInstance( programInstance.getEntityInstance() ); }
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 public void completeEnrollment( String uid ) { ProgramInstance programInstance = programInstanceService.getProgramInstance( uid ); programInstanceService.completeProgramInstanceStatus( programInstance ); teiService.updateTrackedEntityInstance( programInstance.getEntityInstance() ); }
@Override public void cancelEnrollment( String uid ) { ProgramInstance programInstance = programInstanceService.getProgramInstance( uid ); programInstanceService.cancelProgramInstanceStatus( programInstance ); teiService.updateTrackedEntityInstance( programInstance.getEntityInstance() ); }
@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 ); }
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() ); } }
&& template.getRecipientProgramAttribute() != null ) List<String> recipientList = pi.getEntityInstance().getTrackedEntityAttributeValues().stream() .filter( av -> template.getRecipientProgramAttribute().getUid().equals( av.getAttribute().getUid() ) ) .map( TrackedEntityAttributeValue::getPlainValue )
@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() ); }
if ( !ownershipAccessManager.hasAccess( user, programInstance.getEntityInstance(), program ) )
if ( !ownershipAccessManager.hasAccess( user, programInstance.getEntityInstance(), program ) )
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(); } }
private void saveTrackedEntityComment( ProgramInstance programInstance, Enrollment enrollment, String storedBy ) { for ( Note note : enrollment.getNotes() ) { String noteUid = CodeGenerator.isValidUid( note.getNote() ) ? note.getNote() : CodeGenerator.generateUid(); if ( !commentService.trackedEntityCommentExists( noteUid ) && !StringUtils.isEmpty( note.getValue() ) ) { TrackedEntityComment comment = new TrackedEntityComment(); comment.setUid( noteUid ); comment.setCommentText( note.getValue() ); comment.setCreator( StringUtils.isEmpty( note.getStoredBy() ) ? User.getSafeUsername( storedBy ) : note.getStoredBy() ); Date created = DateUtils.parseDate( note.getStoredDate() ); comment.setCreated( created ); commentService.addTrackedEntityComment( comment ); programInstance.getComments().add( comment ); programInstanceService.updateProgramInstance( programInstance ); teiService.updateTrackedEntityInstance( programInstance.getEntityInstance() ); } } }
teiService.updateTrackedEntityInstance( programInstance.getEntityInstance() );
if ( programInstance.getEntityInstance() != null ) enrollment.setTrackedEntityType( programInstance.getEntityInstance().getTrackedEntityType().getUid() ); enrollment.setTrackedEntityInstance( programInstance.getEntityInstance().getUid() );