=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/configuration/Configuration.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/configuration/Configuration.java 2011-06-12 09:54:51 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/configuration/Configuration.java 2011-10-07 11:48:18 +0000 @@ -50,6 +50,8 @@ private int id; private UserGroup feedbackRecipients; + + private UserGroup completenessRecipients; private DataElementGroup infrastructuralDataElements; @@ -92,6 +94,16 @@ this.feedbackRecipients = feedbackRecipients; } + public UserGroup getCompletenessRecipients() + { + return completenessRecipients; + } + + public void setCompletenessRecipients( UserGroup completenessRecipients ) + { + this.completenessRecipients = completenessRecipients; + } + public DataElementGroup getInfrastructuralDataElements() { return infrastructuralDataElements; === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java 2011-10-06 15:39:08 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/message/MessageService.java 2011-10-07 11:48:18 +0000 @@ -30,6 +30,7 @@ import java.util.List; import java.util.Set; +import org.hisp.dhis.dataset.CompleteDataSetRegistration; import org.hisp.dhis.user.User; /** @@ -50,6 +51,8 @@ void updateMessageConversation( MessageConversation conversation ); + int sendCompletenessMessage( CompleteDataSetRegistration registration ); + MessageConversation getMessageConversation( int id ); long getUnreadMessageConversationCount(); === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java 2011-10-07 07:42:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserSettingService.java 2011-10-07 11:48:18 +0000 @@ -49,7 +49,6 @@ final String KEY_STYLE = "stylesheet"; final String KEY_STYLE_DIRECTORY = "stylesheetDirectory"; final String KEY_MESSAGE_EMAIL_NOTIFICATION = "keyMessageEmailNotification"; - final String KEY_COMPLETENESS_EMAIL_NOTIFICATION = "keyCompletenessEmailNotification"; final int DEFAULT_CHARTS_IN_DASHBOARD = 4; final List DASHBOARD_CHARTS_TO_DISPLAY = Arrays.asList( 4, 6, 8 ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2011-10-06 15:39:08 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/message/DefaultMessageService.java 2011-10-07 11:48:18 +0000 @@ -32,6 +32,7 @@ import java.util.Set; import org.hisp.dhis.configuration.ConfigurationService; +import org.hisp.dhis.dataset.CompleteDataSetRegistration; import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroup; @@ -43,7 +44,7 @@ @Transactional public class DefaultMessageService implements MessageService -{ +{ // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- @@ -132,7 +133,39 @@ invokeMessageSenders( conversation.getSubject(), text, conversation.getUsers() ); } + + public int sendCompletenessMessage( CompleteDataSetRegistration registration ) + { + UserGroup userGroup = configurationService.getConfiguration().getCompletenessRecipients(); + + if ( userGroup != null && userGroup.getMembers().size() > 0 ) + { + User sender = currentUserService.getCurrentUser(); + + //TODO i18n and string externalization + String subject = "Notification: Form registered as complete"; + String text = "The form " + registration.getDataSet() + " was registered as complete for period " + + registration.getPeriod() + " and organisation unit " + registration.getSource(); + + MessageConversation conversation = new MessageConversation( subject, sender ); + + conversation.addMessage( new Message( text, null, sender ) ); + + for ( User user : userGroup.getMembers() ) + { + conversation.addUserMessage( new UserMessage( user ) ); + } + + int id = saveMessageConversation( conversation ); + + invokeMessageSenders( subject, text, userGroup.getMembers() ); + + return id; + } + return 0; + } + public int saveMessageConversation( MessageConversation conversation ) { return messageConversationStore.save( conversation ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml 2011-06-09 14:43:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/configuration/hibernate/Configuration.hbm.xml 2011-10-07 11:48:18 +0000 @@ -13,6 +13,9 @@ + + === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/RegisterCompleteDataSetAction.java' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/RegisterCompleteDataSetAction.java 2011-08-20 12:10:52 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/RegisterCompleteDataSetAction.java 2011-10-07 11:48:18 +0000 @@ -35,6 +35,7 @@ import org.hisp.dhis.dataset.CompleteDataSetRegistrationService; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; +import org.hisp.dhis.message.MessageService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.Period; @@ -74,6 +75,13 @@ { this.organisationUnitService = organisationUnitService; } + + private MessageService messageService; + + public void setMessageService( MessageService messageService ) + { + this.messageService = messageService; + } // ------------------------------------------------------------------------- // Input @@ -122,9 +130,10 @@ registrationService.saveCompleteDataSetRegistration( registration ); log.info( "DataSet registered as complete: " + registration ); + + messageService.sendCompletenessMessage( registration ); } - return SUCCESS; } } === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml 2011-09-26 17:37:55 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/resources/META-INF/dhis/beans.xml 2011-10-07 11:48:18 +0000 @@ -85,6 +85,7 @@ + aggregationStrategies; public Collection getAggregationStrategies() @@ -150,6 +157,8 @@ feedbackRecipients = configurationService.getConfiguration().getFeedbackRecipients(); + completenessRecipients = configurationService.getConfiguration().getCompletenessRecipients(); + dataElementGroups = new ArrayList( dataElementService.getAllDataElementGroups() ); Collections.sort( dataElementGroups, new DataElementGroupNameComparator() ); === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java 2011-10-06 07:05:49 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetGeneralSettingsAction.java 2011-10-07 11:48:18 +0000 @@ -142,6 +142,13 @@ { this.feedbackRecipients = feedbackRecipients; } + + private Integer completenessRecipients; + + public void setCompletenessRecipients( Integer completenessRecipients ) + { + this.completenessRecipients = completenessRecipients; + } private Integer completenessOffset; @@ -171,10 +178,8 @@ public String execute() { systemSettingManager.saveSystemSetting( KEY_AGGREGATION_STRATEGY, aggregationStrategy ); - systemSettingManager.saveSystemSetting( KEY_OMIT_INDICATORS_ZERO_NUMERATOR_DATAMART, - omitIndicatorsZeroNumeratorDataMart ); - systemSettingManager - .saveSystemSetting( KEY_DISABLE_DATAENTRYFORM_WHEN_COMPLETED, disableDataEntryWhenCompleted ); + systemSettingManager.saveSystemSetting( KEY_OMIT_INDICATORS_ZERO_NUMERATOR_DATAMART, omitIndicatorsZeroNumeratorDataMart ); + systemSettingManager.saveSystemSetting( KEY_DISABLE_DATAENTRYFORM_WHEN_COMPLETED, disableDataEntryWhenCompleted ); systemSettingManager.saveSystemSetting( KEY_FACTOR_OF_DEVIATION, factorDeviation ); systemSettingManager.saveSystemSetting( KEY_COMPLETENESS_OFFSET, completenessOffset ); @@ -185,6 +190,11 @@ configuration.setFeedbackRecipients( userGroupService.getUserGroup( feedbackRecipients ) ); } + if ( completenessRecipients != null ) + { + configuration.setCompletenessRecipients( userGroupService.getUserGroup( completenessRecipients ) ); + } + if ( infrastructuralDataElements != null ) { configuration.setInfrastructuralDataElements( dataElementService === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/GetEmailSettingsAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/GetEmailSettingsAction.java 2011-10-07 08:07:51 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/GetEmailSettingsAction.java 2011-10-07 11:48:18 +0000 @@ -27,7 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.user.UserSettingService.KEY_COMPLETENESS_EMAIL_NOTIFICATION; import static org.hisp.dhis.user.UserSettingService.KEY_MESSAGE_EMAIL_NOTIFICATION; import org.hisp.dhis.user.UserSettingService; @@ -57,13 +56,6 @@ // Output // ------------------------------------------------------------------------- - private Boolean completenessEmailNotification; - - public Boolean getCompletenessEmailNotification() - { - return completenessEmailNotification; - } - private Boolean messageEmailNotification; public Boolean getMessageEmailNotification() @@ -79,13 +71,6 @@ throws Exception { // --------------------------------------------------------------------- - // Get Completeness-email-notification - // --------------------------------------------------------------------- - - completenessEmailNotification = (Boolean) userSettingService.getUserSetting( - KEY_COMPLETENESS_EMAIL_NOTIFICATION, false ); - - // --------------------------------------------------------------------- // Get Message-email-notification // --------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/SetEmailSettingsAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/SetEmailSettingsAction.java 2011-10-07 08:07:51 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/user/SetEmailSettingsAction.java 2011-10-07 11:48:18 +0000 @@ -27,7 +27,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.user.UserSettingService.KEY_COMPLETENESS_EMAIL_NOTIFICATION; import static org.hisp.dhis.user.UserSettingService.KEY_MESSAGE_EMAIL_NOTIFICATION; import org.hisp.dhis.i18n.I18n; @@ -37,7 +36,6 @@ /** * @author Dang Duy Hieu - * @version $Id$ */ public class SetEmailSettingsAction implements Action @@ -64,13 +62,6 @@ this.messageEmailNotification = messageEmailNotification; } - private Boolean completenessEmailNotification; - - public void setCompletenessEmailNotification( Boolean completenessEmailNotification ) - { - this.completenessEmailNotification = completenessEmailNotification; - } - private String message; public String getMessage() @@ -92,8 +83,6 @@ public String execute() throws Exception { - userSettingService.saveUserSetting( KEY_COMPLETENESS_EMAIL_NOTIFICATION, completenessEmailNotification ); - userSettingService.saveUserSetting( KEY_MESSAGE_EMAIL_NOTIFICATION, messageEmailNotification ); message = i18n.getString( "settings_updated" ); === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2011-10-07 08:07:51 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2011-10-07 11:48:18 +0000 @@ -115,4 +115,6 @@ no_feedback_recipients = No message recipients settings_updated = Settings were updated message_email_notification = Message email notification -completeness_email_notification = Completeness email notification \ No newline at end of file +completeness_email_notification = Completeness email notification +completeness_recipients = Completeness notification recipients +no_completeness_recipients = No completeness recipients \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm 2011-10-06 08:48:28 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemGeneralSettings.vm 2011-10-07 11:48:18 +0000 @@ -6,6 +6,7 @@ infrastructuralDataElements: getFieldValue( 'infrastructuralDataElements' ), infrastructuralPeriodType: getFieldValue( 'infrastructuralPeriodType' ), feedbackRecipients: getFieldValue( 'feedbackRecipients' ), + completenessRecipients: getFieldValue( 'completenessRecipients' ), omitIndicatorsZeroNumeratorDataMart: jQuery( '#omitIndicatorsZeroNumeratorDataMart' ).is( ':checked' ), disableDataEntryWhenCompleted: jQuery( '#disableDataEntryWhenCompleted' ).is( ':checked' ), factorDeviation: getFieldValue( 'factorDeviation' ), @@ -63,6 +64,18 @@

+ +

$i18n.getString( "completeness_recipients" )

+ +

+ +

+

$i18n.getString( "omit_indicators_zero_numerator_data_mart" )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/userEmailSettings.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/userEmailSettings.vm 2011-10-07 08:07:51 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/userEmailSettings.vm 2011-10-07 11:48:18 +0000 @@ -3,7 +3,6 @@ jQuery(document).ready(function() { jQuery("input[type=button]").click(function() { jQuery.postJSON( 'setUserEmailSettings.action', { - completenessEmailNotification: jQuery( '#completenessEmailNotification' ).is(':checked' ), messageEmailNotification: jQuery( '#messageEmailNotification' ).is(':checked' ) }, function ( json ) { if ( json.response == "success" ) @@ -15,9 +14,6 @@

$i18n.getString("user_email_settings")

-

$i18n.getString( "completeness_email_notification" )

- -

$i18n.getString( "message_email_notification" )