using Database.Database;

namespace SicboSub.Api.Business
{
    /// <summary>
    /// Interface cho Authentication Service
    /// Xác thực token và lấy thông tin thuê bao
    /// </summary>
    public interface IAuthService
    {
        /// <summary>
        /// Xác thực token từ URL query parameter hoặc header
        /// Trả về thông tin user nếu token hợp lệ
        /// </summary>
        Task<AccountUser?> ValidateToken(string token);

        /// <summary>
        /// Lấy MSISDN từ token
        /// </summary>
        Task<string?> GetMsisdnFromToken(string token);

        /// <summary>
        /// Validate token và trả về kết quả chi tiết
        /// </summary>
        Task<TokenValidationResult> ValidateTokenWithDetails(string token);
    }

    /// <summary>
    /// Kết quả xác thực token
    /// </summary>
    public class TokenValidationResult
    {
        public bool IsValid { get; set; }
        public string? Msisdn { get; set; }
        public AccountUser? User { get; set; }
        public string? ErrorCode { get; set; }
        public string? ErrorMessage { get; set; }
    }
}
