namespace MktZaloService.Infrastructure.Zalo;

/// <summary>
/// EN: Configuration options for Zalo Official Account integration.
/// VI: Cấu hình cho tích hợp Zalo Official Account.
/// </summary>
public class ZaloOAOptions
{
    public const string SectionName = "ZaloOA";

    /// <summary>
    /// EN: Zalo Application ID.
    /// VI: ID ứng dụng Zalo.
    /// </summary>
    public string AppId { get; set; } = string.Empty;

    /// <summary>
    /// EN: Zalo Application Secret Key.
    /// VI: Secret Key của ứng dụng Zalo.
    /// </summary>
    public string SecretKey { get; set; } = string.Empty;

    /// <summary>
    /// EN: Zalo OA Access Token (1-year validity).
    /// VI: Access Token của OA Zalo (hiệu lực 1 năm).
    /// </summary>
    public string AccessToken { get; set; } = string.Empty;

    /// <summary>
    /// EN: Webhook secret for signature verification.
    /// VI: Secret cho xác thực chữ ký webhook.
    /// </summary>
    public string WebhookSecret { get; set; } = string.Empty;

    /// <summary>
    /// EN: Base URL for Zalo OpenAPI.
    /// VI: Base URL cho Zalo OpenAPI.
    /// </summary>
    public string BaseUrl { get; set; } = "https://openapi.zalo.me";

    /// <summary>
    /// EN: Request timeout in seconds.
    /// VI: Timeout yêu cầu tính bằng giây.
    /// </summary>
    public int TimeoutSeconds { get; set; } = 30;

    /// <summary>
    /// EN: Maximum retry attempts.
    /// VI: Số lần thử lại tối đa.
    /// </summary>
    public int MaxRetryAttempts { get; set; } = 3;
}
