summaryrefslogtreecommitdiffstats
path: root/app/auto_responder.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/auto_responder.go')
-rw-r--r--app/auto_responder.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/app/auto_responder.go b/app/auto_responder.go
new file mode 100644
index 000000000..23402ecd4
--- /dev/null
+++ b/app/auto_responder.go
@@ -0,0 +1,70 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package app
+
+import (
+ l4g "github.com/alecthomas/log4go"
+
+ "github.com/mattermost/mattermost-server/model"
+)
+
+func (a *App) SendAutoResponse(channel *model.Channel, receiver *model.User, rootId string) {
+ if receiver == nil || receiver.NotifyProps == nil {
+ return
+ }
+
+ active := receiver.NotifyProps["auto_responder_active"] == "true"
+ message := receiver.NotifyProps["auto_responder_message"]
+
+ if active && message != "" {
+ autoResponderPost := &model.Post{
+ ChannelId: channel.Id,
+ Message: message,
+ RootId: rootId,
+ ParentId: rootId,
+ Type: model.POST_AUTO_RESPONDER,
+ UserId: receiver.Id,
+ }
+
+ if _, err := a.CreatePost(autoResponderPost, channel, false); err != nil {
+ l4g.Error(err.Error())
+ }
+ }
+}
+
+func (a *App) SetAutoResponderStatus(user *model.User, oldNotifyProps model.StringMap) {
+ active := user.NotifyProps["auto_responder_active"] == "true"
+ oldActive := oldNotifyProps["auto_responder_active"] == "true"
+
+ autoResponderEnabled := !oldActive && active
+ autoResponderDisabled := oldActive && !active
+
+ if autoResponderEnabled {
+ a.SetStatusOutOfOffice(user.Id)
+ } else if autoResponderDisabled {
+ a.SetStatusOnline(user.Id, "", true)
+ }
+}
+
+func (a *App) DisableAutoResponder(userId string, asAdmin bool) *model.AppError {
+ user, err := a.GetUser(userId)
+ if err != nil {
+ return err
+ }
+
+ active := user.NotifyProps["auto_responder_active"] == "true"
+
+ if active {
+ patch := &model.UserPatch{}
+ patch.NotifyProps = user.NotifyProps
+ patch.NotifyProps["auto_responder_active"] = "false"
+
+ _, err := a.PatchUser(userId, patch, asAdmin)
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}