Ejemplo n.º 1
0
        public async Task <HttpResponseMessage> PublishNotification([FromBody] PublishUpdate data)
        {
            foreach (var conversation in SubscribedPublishConversations.Keys)
            {
                var conversationReference = SubscribedPublishConversations[conversation];

                IMessageActivity message = Activity.CreateMessageActivity();
                message.ChannelId    = conversationReference.ChannelId;
                message.From         = conversationReference.Bot;
                message.Recipient    = conversationReference.User;
                message.Conversation = conversationReference.Conversation;
                message.Locale       = "en-US";

                if (data.State == State.Ended)
                {
                    message.Text = $"Publish completed, was started by {data.FullName} ({data.UserName})";
                }
                else if (data.State == State.Started)
                {
                    if (data.Mode == "Full" && data.CompareRevisions)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish differences between source and target database)";
                    }
                    else if (data.Mode == "Full" && !data.CompareRevisions)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything)";
                    }
                    else if (data.Mode == "Incremental")
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a incremental publish (publish only changed items)";
                    }
                    else if (data.Mode == "SingleItem" && data.CompareRevisions && data.Deep)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish only changed items) for everything under {data.RootItemPath}";
                    }
                    else if (data.Mode == "SingleItem" && data.CompareRevisions && !data.Deep)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish only changed items) only for {data.RootItemPath}";
                    }
                    else if (data.Mode == "SingleItem" && !data.CompareRevisions && data.Deep)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything) for everything under {data.RootItemPath}";
                    }
                    else if (data.Mode == "SingleItem" && !data.CompareRevisions && !data.Deep)
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything) only for {data.RootItemPath}";
                    }
                    else
                    {
                        message.Text = $"{data.FullName} ({data.UserName}) just started a publish for {data.RootItemPath}";
                    }
                }

                var connector = new ConnectorClient(new Uri(conversationReference.ServiceUrl));
                await connector.Conversations.SendToConversationAsync((Activity)message);
            }

            return(Request.CreateResponse("OK"));
        }
Ejemplo n.º 2
0
        public void Ended(object sender, EventArgs args)
        {
            try
            {
                if (args != null)
                {
                    SitecoreEventArgs sitecoreEventArg = args as SitecoreEventArgs;
                    if (sitecoreEventArg != null)
                    {
                        Publisher parameters = sitecoreEventArg.Parameters[0] as Publisher;
                        if (parameters != null)
                        {
                            try
                            {
                                var publishData = new PublishUpdate
                                {
                                    UserName            = parameters.Options.UserName,
                                    CompareRevisions    = parameters.Options.CompareRevisions,
                                    Deep                = parameters.Options.Deep,
                                    FromDate            = parameters.Options.FromDate,
                                    Language            = parameters.Options.Language.Name,
                                    Mode                = parameters.Options.Mode.ToString(),
                                    PublishDate         = parameters.Options.PublishDate,
                                    PublishingTargets   = parameters.Options.PublishingTargets,
                                    PublishRelatedItems = parameters.Options.PublishRelatedItems,
                                    RecoveryId          = parameters.Options.RecoveryId,
                                    RepublishAll        = parameters.Options.RepublishAll,
                                    RootItemPath        = parameters.Options.RootItem?.Paths.FullPath,
                                    State               = State.Ended
                                };

                                User user = User.FromName(parameters.Options.UserName, false);
                                if (user != null)
                                {
                                    publishData.FullName = user.Profile.FullName;
                                }

                                new Services.NotificationService <PublishUpdate>().Send(publishData);
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
            }
        }