Exemple #1
0
        private async Task <ReportParameters> GetReportParametersAsync(ITurnContext <IInvokeActivity> turnContext)
        {
            var settings     = ((JObject)turnContext.Activity.Value)["data"].Value <JObject>();
            var reportParams = new ReportParameters();

            if (turnContext.Activity.Conversation.ConversationType == Constants.ChannelConversationType)
            {
                var reportType = settings[ExtractHistoryMessagingExtensionCard.ChannelScopeInputId]?.Value <string>() ?? string.Empty;
                if (reportType.Equals(Resources.Strings.ChannelHistoryOptionConversation))
                {
                    reportParams.ReportType = ReportSourceType.Conversation;
                }
                else if (reportType.Equals(Resources.Strings.ChannelHistoryOptionAll))
                {
                    reportParams.ReportType = ReportSourceType.Channel;
                }
            }
            else
            {
                reportParams.ReportType = ReportSourceType.Chat;
            }

            await reportParams.FillRestDetailsFromActivity(turnContext);

            var timeRange = settings[ExtractHistoryMessagingExtensionCard.TimeRangeInputId]?.Value <string>();

            if (ReportPeriodConverter.TryParse(timeRange, out ReportPeriodType period))
            {
                reportParams.ReportPeriod = period;
            }
            else
            {
                SendUnsupportedMessage(turnContext).Wait();
            }

            var formatType = settings[ExtractHistoryMessagingExtensionCard.ReportTypeInputId]?.Value <string>();

            if (ReportFileFormatConverter.TryParse(formatType, out ReportFormatType type))
            {
                reportParams.Format = type;
            }
            else
            {
                SendUnsupportedMessage(turnContext).Wait();
            }

            return(reportParams);
        }