/// <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); } }
/// <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); } }