namespace WebClientTpos.Shared.DTOs;

/// <summary>
/// EN: Token response from Duende IdentityServer.
/// VI: Response token từ Duende IdentityServer.
/// </summary>
public class TokenResponse
{
    public string AccessToken { get; set; } = string.Empty;
    public string TokenType { get; set; } = "Bearer";
    public int ExpiresIn { get; set; }
    public string? RefreshToken { get; set; }
    public string? Scope { get; set; }
}

/// <summary>
/// EN: DTO for merchant registration.
/// VI: DTO cho đăng ký merchant.
/// </summary>
public class MerchantRegisterDto
{
    public string BusinessName { get; set; } = string.Empty;
    public string Type { get; set; } = "Individual";
    public string? TaxId { get; set; }
    public string? BusinessLicenseNumber { get; set; }
}

/// <summary>
/// EN: Result from merchant registration API.
/// VI: Kết quả từ API đăng ký merchant.
/// </summary>
public class MerchantRegisterResult
{
    public Guid MerchantId { get; set; }
    public string BusinessName { get; set; } = string.Empty;
    public string Status { get; set; } = string.Empty;
}

/// <summary>
/// EN: DTO for shop creation.
/// VI: DTO cho tạo shop.
/// </summary>
public class ShopCreateDto
{
    public string Name { get; set; } = string.Empty;
    public string Slug { get; set; } = string.Empty;
    public string Type { get; set; } = "Hybrid";
    public string Category { get; set; } = "FnB";
    public string? Description { get; set; }
    public string? Phone { get; set; }
    public string? Email { get; set; }
    public string? Website { get; set; }
}

/// <summary>
/// EN: Result from shop creation API.
/// VI: Kết quả từ API tạo shop.
/// </summary>
public class ShopCreateResult
{
    public Guid ShopId { get; set; }
    public string Name { get; set; } = string.Empty;
    public string Slug { get; set; } = string.Empty;
    public string Status { get; set; } = string.Empty;
}

/// <summary>
/// EN: DTO for updating an existing shop.
/// VI: DTO cho cập nhật shop.
/// </summary>
public class ShopUpdateDto
{
    public string? Name { get; set; }
    public string? Description { get; set; }
    public string? Phone { get; set; }
    public string? Email { get; set; }
    public string? Website { get; set; }
}
