public async Task <PerMessageAggregationList> GetPerMessageAggregationAsync( string engagementAccount, DateTimeOffset startTime, DateTimeOffset endTime, int count, TableContinuationToken continuationToken) { var historyTable = await this.GetHistoryTableAsync(engagementAccount); var segment = await MessageHistoryTableEntity.GetAsync( historyTable, startTime, endTime, count, continuationToken); var aggregations = await Task.WhenAll( segment.Select(async historyEntity => { var countByState = await MessageDetailTableEntity.CountByStateAsync( this.detailTable, historyEntity.MessageId); return(new PerMessageAggregationList.PerMessageAggregation( historyEntity, countByState)); })); return(new PerMessageAggregationList( aggregations, startTime, endTime, segment.ContinuationToken)); }
public async Task <MessageDetails> GetMessageHistoryAsync(string engagementAccount, string messageId, int count, TableContinuationToken continuationToken) { var historyTable = await this.GetHistoryTableAsync(engagementAccount); var record = await MessageHistoryTableEntity.GetAsync(historyTable, engagementAccount, messageId); if (record == null) { return(null); } var result = new MessageDetails { MessageId = record.MessageId, SendTime = record.SendTime, Targets = record.Targets }; // Calculate success and failed count var tuple = await MessageDetailTableEntity.GetResultAsync(this.detailTable, engagementAccount, messageId); result.Succeed = tuple.Item1; result.Failed = tuple.Item2; // Get details return(await MessageDetailTableEntity.ListAsync(this.detailTable, engagementAccount, messageId, count, continuationToken, result)); }
public async Task OnMessageSentAsync(InputMessage message, SmsMessageInfoExtension extension) { // Create record in summary table var summary = new MessageSummaryTableEntity(message, extension); await MessageSummaryTableEntity.InsertOrMergeAsync(this.summaryTable, summary); // Create record in history table var historyTable = await this.GetHistoryTableAsync(message.MessageInfo.EngagementAccount); if (historyTable == null) { // Create the table in case any issue in account initialize historyTable = await this.GetHistoryTableAsync(message.MessageInfo.EngagementAccount, true); } await MessageHistoryTableEntity.InsertOrMergeAsync(historyTable, summary); }