public static async Task SendApprovalRequest(string accessToken, string userId, string fileId, string[] approvers) { // Get file info var fileInfo = await GraphHelper.GetFileInfo(accessToken, fileId); // Info on requestor var requestor = await GraphHelper.GetUser(accessToken); // Requestor pic URI var requestorPicUri = await GraphHelper.GetUserPhotoDataUri(accessToken, "48x48"); // File thumbnail URI var thumbnailUri = await GraphHelper.GetFileThumbnailDataUri(accessToken, fileInfo.Id); // Create an approval to store in the database var approval = new Approval() { Requestor = userId, File = fileInfo, Approvers = new List <ApproverInfo>(), RequestDate = DateTimeOffset.UtcNow }; // Add approvers foreach (string approver in approvers) { approval.Approvers.Add(new ApproverInfo() { EmailAddress = approver, Response = Models.ResponseStatus.NotResponded, ResponseNote = string.Empty }); } // Add to database var dbApproval = await DatabaseHelper.CreateApprovalAsync(approval); // Build and send card for each recipient foreach (string approver in approvers) { var approvalRequestCard = BuildRequestCard(requestor, requestorPicUri, fileInfo, thumbnailUri, approver, dbApproval.Id); await GraphHelper.SendRequestCard(accessToken, approvalRequestCard, approver, messageSender); } }
public static async Task <List <AdaptiveCard> > GetApprovalsForUserCard(string accessToken, string userId) { // Get all approvals requested by current user var approvals = await DatabaseHelper.GetApprovalsAsync(a => a.Requestor == userId); if (approvals.Count() == 0) { // Return a simple message return(null); } else if (approvals.Count() == 1) { // Return status card of the only approval return(new List <AdaptiveCard>() { GetApprovalStatusCard(approvals.First()) }); } else { var approvalCardList = new List <AdaptiveCard>(); foreach (var approval in approvals) { var approvalDetailCard = new AdaptiveCard(); var approvalColumnSet = new AdaptiveColumnSet(); // Get thumbnail var thumbnailUri = await GraphHelper.GetFileThumbnailDataUri(accessToken, approval.File.Id); var fileThumbCol = new AdaptiveColumn() { Width = AdaptiveColumnWidth.Auto.ToLower() }; fileThumbCol.Items.Add(new AdaptiveImage() { Url = new Uri(thumbnailUri), AltText = "File thumbnail", Size = AdaptiveImageSize.Small }); approvalColumnSet.Columns.Add(fileThumbCol); var fileNameCol = new AdaptiveColumn() { Width = AdaptiveColumnWidth.Stretch.ToLower() }; fileNameCol.Items.Add(new AdaptiveTextBlock() { Size = AdaptiveTextSize.Medium, Text = approval.File.Name }); fileNameCol.Items.Add(new AdaptiveTextBlock() { IsSubtle = true, Spacing = AdaptiveSpacing.None, Text = $"Requested: {TimeZoneHelper.GetAdaptiveDateTimeString(approval.RequestDate)}" }); approvalColumnSet.Columns.Add(fileNameCol); approvalDetailCard.Body.Add(approvalColumnSet); approvalDetailCard.Actions.Add(new AdaptiveSubmitAction() { Title = "This one", DataJson = $@"{{ ""cardAction"": ""{CardActionTypes.SelectApproval}"", ""selectedApproval"": ""{approval.Id}"" }}" }); approvalCardList.Add(approvalDetailCard); } return(approvalCardList); } }