// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System.Text.Json.Serialization;
using Microsoft.Teams.Common;
namespace Microsoft.Teams.Api.MessageExtensions;
///
/// Possible values include: 'result', 'auth', 'config', 'message', 'botMessagePreview', 'silentAuth'.
///
[JsonConverter(typeof(JsonConverter))]
public class ResultType(string value) : StringEnum(value)
{
public static readonly ResultType Result = new("result");
public bool IsResult => Result.Equals(Value);
public static readonly ResultType Auth = new("auth");
public bool IsAuth => Auth.Equals(Value);
public static readonly ResultType Config = new("config");
public bool IsConfig => Config.Equals(Value);
public static readonly ResultType Message = new("message");
public bool IsMessage => Message.Equals(Value);
public static readonly ResultType BotMessagePreview = new("botMessagePreview");
public bool IsBotMessagePreview => BotMessagePreview.Equals(Value);
public static readonly ResultType SilentAuth = new("silentAuth");
public bool IsSilentAuth => SilentAuth.Equals(Value);
}
///
/// Messaging extension result
///
public class Result
{
///
/// Hint for how to deal with multiple attachments. Possible values include: 'list', 'grid'
///
[JsonPropertyName("attachmentLayout")]
[JsonPropertyOrder(0)]
public Api.Attachment.Layout? AttachmentLayout { get; set; }
///
/// The type of the result. Possible values include:
/// 'result', 'auth', 'config', 'message', 'botMessagePreview'
///
[JsonPropertyName("type")]
[JsonPropertyOrder(1)]
public ResultType? Type { get; set; }
///
/// (Only when type is result) Attachments
///
[JsonPropertyName("attachments")]
[JsonPropertyOrder(2)]
public IList? Attachments { get; set; }
///
/// suggested actions
///
[JsonPropertyName("suggestedActions")]
[JsonPropertyOrder(3)]
public SuggestedActions? SuggestedActions { get; set; }
///
/// (Only when type is message) Text
///
[JsonPropertyName("text")]
[JsonPropertyOrder(4)]
public string? Text { get; set; }
///
/// (Only when type is botMessagePreview) Message activity to preview
///
[JsonPropertyName("activityPreview")]
[JsonPropertyOrder(5)]
public Activities.Activity? ActivityPreview { get; set; }
}