/// <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 = Strings.IgnoreEventShare; ShareEventPayload shareEventPayload = ((JObject)message.Value).ToObject <ShareEventPayload>(); // Update the card IMessageActivity updatedMessage = context.MakeMessage(); updatedMessage.Attachments.Add(CelebrationCard.GetShareEventAttachmentWithoutActionButton(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.Select(x => x.AsTeamsChannelAccount()).Where(x => x.ObjectId == shareEventPayload.UserAadObjectId).FirstOrDefault(); // Fetch teamDetails from DB to check if bot is still present or un-installed from team var document = await this.userManagementHelper.GetTeamsDetailsByTeamIdAsync(shareEventPayload.TeamId); if (user == null) { replyMessage = string.Format(Strings.ShareWithTeamNotAMemberError, shareEventPayload.TeamName); } else if (document == null) { replyMessage = string.Format(Strings.ShareWithTeamsNotInstalledError, shareEventPayload.TeamName); } else { // Fetch all the events of user and share with team var celebrationEvents = await this.eventDataProvider.GetEventsByOwnerObjectIdAsync(shareEventPayload.UserAadObjectId); if (celebrationEvents.Count > 0) { foreach (var celebrationEvent in celebrationEvents) { celebrationEvent.Teams.Add(new Team { Id = shareEventPayload.TeamId }); await this.eventDataProvider.UpdateEventAsync(celebrationEvent); } } replyMessage = Strings.ShareWithTeamSuccessMessage; // Update the card IMessageActivity updatedMessage = context.MakeMessage(); updatedMessage.Attachments.Add(CelebrationCard.GetShareEventAttachmentWithoutActionButton(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 }, { "UserAadObjectId", shareEventPayload.UserAadObjectId }, }); replyMessage = Strings.ShareWithTeamGenericError; } await context.PostAsync(replyMessage); context.Done <object>(null); } }