Ejemplo n.º 1
0
        private string ValidateCue(SignalDbRecord signal, Cue cue)
        {
            try
            {
                CueOption cueExists = signal.Signal.Cues[cue.CueId];
            }
            catch (Exception)
            {
                throw new Exception($"Cue [{cue.CueId}] Does Not Exist In Signal [{signal.Id}].");
            }

            if (signal.IsActive == false)
            {
                return($"Signal [{cue.Id}] Is Not Active.");
            }

            if (signal.Signal.MaxReplies > 0)
            {
                int validCount = 0;
                foreach (string actionKey in signal.Actions.Keys)
                {
                    if (signal.Actions[actionKey].IsValid)
                    {
                        validCount++;
                    }
                }

                if (validCount >= signal.Signal.MaxReplies)
                {
                    return($"Signal [{cue.Id}] Has Exceeded the Maximum Valid Replies Allowed.");
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
        private void SendStatusNotification(Status status, string reporterId, string routerId, string routerType)
        {
            Signal signal = new Signal();

            signal.ReporterId  = reporterId;
            signal.RouterId    = routerId;
            signal.RouterType  = routerType;
            signal.Name        = "Status Update";
            signal.Description = $"Id: [{status.Id}], ActionId [{status.ActionId}]";
            signal.IncludeId   = false;

            CueOption cue = new CueOption();

            cue.Name = status.NewStatus.ToString();
            if (!String.IsNullOrWhiteSpace(status.Message))
            {
                cue.Description = status.Message;
            }
            else if (status.Data != null)
            {
                cue.Description = JsonTools.Serialize(status.Data, false);
            }

            signal.Cues           = new Dictionary <string, CueOption>();
            signal.Cues["update"] = cue;

            SendStatusNotification(signal);
        }
Ejemplo n.º 3
0
        public static SlackMessage CreateSlackMessage(ChannelRequest request)
        {
            SlackMessage message = new SlackMessage();
            Signal       signal  = request.Signal;

            String webHook = request?.Channel?.Target;

            string mainTitle = $"{signal.Name}\n{signal.Description}";

            if (String.IsNullOrEmpty(signal.Name))
            {
                mainTitle = signal.Description;
            }
            else if (String.IsNullOrEmpty(signal.Description))
            {
                mainTitle = signal.Name;
            }

            if (!String.IsNullOrWhiteSpace(mainTitle))
            {
                message.Text = mainTitle;
            }
            else if (signal.Cues == null)
            {
                message.Text = " ";
            }

            if (signal.IncludeId)
            {
                if (String.IsNullOrWhiteSpace(message.Text))
                {
                    message.Text = $"Id : {request.Id}";
                }
                else
                {
                    message.Text += $"\n(Id : {request.Id})";
                }
            }

            if (signal.Cues != null)
            {
                foreach (string key in signal.Cues.Keys)
                {
                    CueOption       cue        = signal.Cues[key];
                    SlackAttachment attachment = CreateSlackAttachment(request.Id, key, cue);
                    message.Attachments.Add(attachment);
                }
            }

            return(message);
        }
Ejemplo n.º 4
0
        // ******************************************************************
        // *** MessageCard Methods
        // ******************************************************************

        public static MessageCard CreateMessageCardMessage(ChannelRequest request)
        {
            MessageCard message = new MessageCard();
            Signal      signal  = request.Signal;

            message.Title = String.IsNullOrEmpty(signal.Name) ? " " : signal.Name;
            message.Text  = String.IsNullOrEmpty(signal.Description) ? " " : signal.Description;
            if (signal.IncludeId)
            {
                if (String.IsNullOrWhiteSpace(message.Title))
                {
                    message.Title = $"Id: {request.Id}";
                }
                else
                {
                    message.Title += $" (Id: {request.Id})";
                }
            }

            if (signal.Cues != null)
            {
                int totalCues = signal.Cues.Count;
                foreach (string key in signal.Cues.Keys)
                {
                    CueOption          cue     = signal.Cues[key];
                    MessageCardSection section = new MessageCardSection
                    {
                        Title = cue.Name,
                        Text  = cue.Description
                    };
                    message.Sections.Add(section);

                    foreach (SignalVariable cueAction in cue.Actions)
                    {
                        MessageCardAction action = CreateMessageCardAction(request, key, cueAction);
                        if (action != null)
                        {
                            message.PotentialActions.Add(action);
                        }
                    }
                }
            }

            return(message);
        }
Ejemplo n.º 5
0
        public static SlackAttachment CreateSlackAttachment(string signalId, string cueId, CueOption cue)
        {
            SlackAttachment attachment = new SlackAttachment();

            string cueTitle = $"{cue.Name}\n{cue.Description}";

            if (String.IsNullOrEmpty(cue.Name))
            {
                cueTitle = cue.Description;
            }
            else if (String.IsNullOrEmpty(cue.Description))
            {
                cueTitle = cue.Name;
            }
            attachment.Text       = cueTitle;
            attachment.CallbackId = $"{signalId}|{cueId}";

            foreach (SignalVariable action in cue.Actions)
            {
                SlackAction slackAction = CreateSlackAction(action);
                attachment.Actions.Add(slackAction);
            }


            return(attachment);
        }
Ejemplo n.º 6
0
        public static AdaptiveCard CreateAdaptiveCard(string signalId, string cueId, CueOption cue)
        {
            AdaptiveCard card = new AdaptiveCard();

            card.Body.Add(new AdaptiveCardBody());
            card.Body[0].Separator = true;

            AdaptiveCardBodyItems header = new AdaptiveCardBodyItems();

            header.Weight = "Bolder";
            header.Type   = "TextBlock";
            header.Size   = "Medium";
            header.Text   = cue.Name;
            header.Wrap   = true;
            card.Body[0].Items.Add(header);

            AdaptiveCardBodyItems description = new AdaptiveCardBodyItems();

            description.Text = cue.Description;
            description.Type = "TextBlock";
            description.Size = "Medium";
            description.Wrap = true;
            card.Body[0].Items.Add(description);

            foreach (SignalVariable action in cue.Actions)
            {
                AdaptiveCardAction myAction = new AdaptiveCardAction();
                if (action.Type == VariableType.button)
                {
                    myAction.Type            = "Action.Submit";
                    myAction.Id              = action.Id;
                    myAction.Title           = action.Text;
                    myAction.Data            = new AdaptiveCardActionData();
                    myAction.Data.CallbackId = $"{signalId}|{cueId}";
                    myAction.Data.Action     = action.DefaultValue;

                    card.Actions.Add(myAction);
                }
                else if (action.Type == VariableType.choice)
                {
                    myAction.Type  = "Action.ShowCard";
                    myAction.Title = action.Text;

                    myAction.Card      = new AdaptiveCard();
                    myAction.Card.Type = "AdaptiveCard";

                    AdaptiveCardAction choiceAction = new AdaptiveCardAction();
                    choiceAction.Type            = "Action.Submit";
                    choiceAction.Title           = "Submit";
                    choiceAction.Data            = new AdaptiveCardActionData();
                    choiceAction.Data.CallbackId = $"{signalId}|{cueId}";
                    myAction.Card.Actions.Add(choiceAction);

                    AdaptiveCardBody myBody = new AdaptiveCardBody();
                    myBody.Type      = "Container";
                    myBody.Separator = true;
                    myBody.Items     = new System.Collections.Generic.List <AdaptiveCardBodyItems>();

                    AdaptiveCardBodyItems choiceItems = new AdaptiveCardBodyItems();
                    choiceItems.Type = "Input.ChoiceSet";
                    choiceItems.Id   = action.Id;

                    foreach (string key in action.Values.Keys)
                    {
                        AdaptiveCardBodyChoice teamsChoice = new AdaptiveCardBodyChoice();
                        teamsChoice.Title = action.Values[key];
                        teamsChoice.Value = key;
                        choiceItems.Choices.Add(teamsChoice);
                    }

                    myBody.Items.Add(choiceItems);
                    myAction.Card.Body.Add(myBody);
                    card.Actions.Add(myAction);
                }
            }

            return(card);
        }