Exemplo n.º 1
0
        /// <summary>
        /// Handles Ignore event sharing action.
        /// </summary>
        /// <param name="context">IDialogContext object.</param>
        /// <param name="activity">IAwaitable message activity.</param>
        /// <returns>Task.</returns>
        public async Task HandleIgnoreEventSharingAction(IDialogContext context, IAwaitable <IMessageActivity> activity)
        {
            var message = (Activity)await activity;

            if (message.Value != null)
            {
                var replyMessage = "Ok, if you change your mind you can share the events from the Events tab.";
                ShareEventPayload shareEventPayload = ((JObject)message.Value).ToObject <ShareEventPayload>();

                // Update the card
                IMessageActivity updatedMessage = context.MakeMessage();
                updatedMessage.Attachments.Add(CelebrationCard.GetShareEventAttachementWithoutActionButton(shareEventPayload.TeamName));
                updatedMessage.ReplyToId = message.ReplyToId;
                await this.connectorClient.Conversations.UpdateActivityAsync(message.Conversation.Id, message.ReplyToId, (Activity)updatedMessage);

                await context.PostAsync(replyMessage);

                context.Done <object>(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Handles event Share action.
        /// </summary>
        /// <param name="context">IDialogContext object.</param>
        /// <param name="activity">IAwaitable message activity.</param>
        /// <returns>Task.</returns>
        public async Task HandleEventShareAction(IDialogContext context, IAwaitable <IMessageActivity> activity)
        {
            var message      = (Activity)await activity;
            var replyMessage = string.Empty;

            if (message.Value != null)
            {
                ShareEventPayload shareEventPayload = ((JObject)message.Value).ToObject <ShareEventPayload>();

                try
                {
                    var teamMembers = await this.connectorClient.Conversations.GetConversationMembersAsync(shareEventPayload.TeamId);

                    var user = teamMembers.Where(x => x.Properties["objectId"].ToString() == shareEventPayload.UserAadObjectId).ToList().FirstOrDefault();

                    var document = await this.userManagementHelper.GetTeamsDetailsByTeamIdAsync(shareEventPayload.TeamId);

                    bool isBotUnintsalledFromTeam = document == null ? true : false;

                    if (user == null)
                    {
                        replyMessage = $"You are no longer a member of {shareEventPayload.TeamName}.";
                    }
                    else if (isBotUnintsalledFromTeam)
                    {
                        replyMessage = "Someone uninstalled me from your team, I can no longer share these events there";
                    }
                    else
                    {
                        List <CelebrationEvent> celebrationEvents = await(await this.eventHelper.GetEventsByOwnerObjectIdAsync(
                                                                              shareEventPayload.UserAadObjectId)).ToListAsync();
                        if (celebrationEvents.Count > 0)
                        {
                            foreach (var celebrationEvent in celebrationEvents)
                            {
                                celebrationEvent.Teams.Add(new Team {
                                    Id = shareEventPayload.TeamId
                                });
                                CelebrationEvent updatedEvent = (dynamic)celebrationEvent;
                                updatedEvent.Teams = celebrationEvent.Teams;
                                await this.eventHelper.UpdateEventAsync(updatedEvent);
                            }
                        }

                        replyMessage = "I’ve set those events to be shared with the team when they occur.";

                        // Update the card
                        IMessageActivity updatedMessage = context.MakeMessage();
                        updatedMessage.Attachments.Add(CelebrationCard.GetShareEventAttachementWithoutActionButton(shareEventPayload.TeamName));
                        updatedMessage.ReplyToId = message.ReplyToId;
                        await this.connectorClient.Conversations.UpdateActivityAsync(message.Conversation.Id, message.ReplyToId, (Activity)updatedMessage);
                    }
                }
                catch (Exception ex)
                {
                    this.logProvider.LogError("Failed to share the existing event with team", ex, new Dictionary <string, string>()
                    {
                        {
                            "TeamId", shareEventPayload.TeamId
                        },
                        {
                            "TeamName", shareEventPayload.TeamName
                        },
                        {
                            "UserAadObjectId", shareEventPayload.UserAadObjectId
                        },
                    });

                    replyMessage = "Some error occurred to share the event with team. Please try again.";
                }

                await context.PostAsync(replyMessage);

                context.Done <object>(null);
            }
        }