using System.ComponentModel.DataAnnotations;

namespace TakeoutSaaS.Module.Sms.Options;

/// <summary>
/// 短信模块配置。
/// </summary>
public sealed class SmsOptions
{
    /// <summary>
    /// 默认服务商，默认为腾讯云。
    /// </summary>
    public SmsProviderKind Provider { get; set; } = SmsProviderKind.Tencent;

    /// <summary>
    /// 默认签名。
    /// </summary>
    public string? DefaultSignName { get; set; }

    /// <summary>
    /// 是否启用模拟发送（仅日志，不实际调用），方便开发环境。
    /// </summary>
    public bool UseMock { get; set; }

    /// <summary>
    /// 腾讯云短信配置。
    /// </summary>
    [Required]
    public TencentSmsOptions Tencent { get; set; } = new();

    /// <summary>
    /// 阿里云短信配置。
    /// </summary>
    [Required]
    public AliyunSmsOptions Aliyun { get; set; } = new();

    /// <summary>
    /// 场景与模板映射（如 login: TEMPLATE_ID）。
    /// </summary>
    public Dictionary<string, string> SceneTemplates { get; set; } = new(StringComparer.OrdinalIgnoreCase);
}
