=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SendSmsAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SendSmsAction.java 2013-09-04 10:01:16 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SendSmsAction.java 2013-09-07 21:25:35 +0000 @@ -35,6 +35,8 @@ import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.patient.PatientReminder; import org.hisp.dhis.patient.PatientReminderService; +import org.hisp.dhis.program.ProgramInstance; +import org.hisp.dhis.program.ProgramInstanceService; import org.hisp.dhis.program.ProgramStageInstance; import org.hisp.dhis.program.ProgramStageInstanceService; import org.hisp.dhis.sms.SmsSender; @@ -84,6 +86,13 @@ this.patientReminderService = patientReminderService; } + private ProgramInstanceService programInstanceService; + + public void setProgramInstanceService( ProgramInstanceService programInstanceService ) + { + this.programInstanceService = programInstanceService; + } + private I18n i18n; public void setI18n( I18n i18n ) @@ -102,6 +111,13 @@ this.programStageInstanceId = programStageInstanceId; } + private Integer programInstanceId; + + public void setProgramInstanceId( Integer programInstanceId ) + { + this.programInstanceId = programInstanceId; + } + private String msg; public void setMsg( String msg ) @@ -131,6 +147,24 @@ public String execute() throws Exception { + if ( programStageInstanceId != null ) + { + sendSMSToEvent(); + } + else if ( programInstanceId != null ) + { + sendSMSToProgram(); + } + + return SUCCESS; + } + + // ------------------------------------------------------------------------- + // Supportive methods + // ------------------------------------------------------------------------- + + private String sendSMSToEvent() + { ProgramStageInstance programStageInstance = programStageInstanceService .getProgramStageInstance( programStageInstanceId ); @@ -155,19 +189,57 @@ outboundSmsList = new ArrayList(); } outboundSmsList.add( outboundSms ); + programStageInstance.setOutboundSms( outboundSmsList ); programStageInstanceService.updateProgramStageInstance( programStageInstance ); - - message = i18n.getString( "message_is_sent" ); - } - catch ( SmsServiceException e ) - { - message = e.getMessage(); - - return ERROR; - } - - return SUCCESS; - } - + message = i18n.getString( "message_is_sent" + " " + phoneNumbers ); + return ERROR; + } + catch ( SmsServiceException e ) + { + message = e.getMessage(); + + return ERROR; + } + } + + private String sendSMSToProgram() + { + ProgramInstance programInstance = programInstanceService + .getProgramInstance( programInstanceId ); + + PatientReminder patientReminder = new PatientReminder(); + patientReminder.setTemplateMessage( msg ); + patientReminder.setSendTo( sendTo ); + + Set phoneNumbers = patientReminderService.getPhonenumbers( patientReminder, programInstance.getPatient() ); + + try + { + OutboundSms outboundSms = new OutboundSms(); + outboundSms.setMessage( msg ); + outboundSms.setRecipients( phoneNumbers ); + outboundSms.setSender( currentUserService.getCurrentUsername() ); + smsSender.sendMessage( outboundSms, null ); + + List outboundSmsList = programInstance.getOutboundSms(); + if ( outboundSmsList == null ) + { + outboundSmsList = new ArrayList(); + } + outboundSmsList.add( outboundSms ); + + programInstance.setOutboundSms( outboundSmsList ); + programInstanceService.updateProgramInstance( programInstance ); + message = i18n.getString( "message_is_sent" + " " + phoneNumbers ); + + return SUCCESS; + } + catch ( SmsServiceException e ) + { + message = e.getMessage(); + + return ERROR; + } + } } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2013-09-06 15:53:07 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2013-09-07 21:25:35 +0000 @@ -1090,6 +1090,8 @@ ref="org.hisp.dhis.program.ProgramStageInstanceService" /> + - + + @@ -187,7 +188,7 @@ || $!programInstance.patient.healthWorker.phoneNumber || $!programInstance.patient.healthWorker.organisationUnit.phoneNumber || $hasUsers )) - + #end #if( $auth.hasAccess( "dhis-web-caseentry", "removeCurrentEncounter" ) ) @@ -200,6 +201,7 @@