using MediatR;

namespace MembershipService.API.Application.Commands;

/// <summary>
/// EN: Command to create a new member profile.
/// VI: Command để tạo member profile mới.
/// </summary>
public class CreateMemberCommand : IRequest<CreateMemberResult>
{
    /// <summary>
    /// EN: User ID from IAM Service.
    /// VI: User ID từ IAM Service.
    /// </summary>
    public Guid UserId { get; set; }

    /// <summary>
    /// EN: Country code (default: VN).
    /// VI: Mã quốc gia (mặc định: VN).
    /// </summary>
    public string CountryCode { get; set; } = "VN";

    /// <summary>
    /// EN: Gender (optional).
    /// VI: Giới tính (tùy chọn).
    /// </summary>
    public string? Gender { get; set; }
}

/// <summary>
/// EN: Result of create member command.
/// VI: Kết quả của create member command.
/// </summary>
public class CreateMemberResult
{
    public Guid MemberId { get; set; }
    public Guid UserId { get; set; }
    
    /// <summary>
    /// EN: Initial level (always 1 for new members).
    /// VI: Level ban đầu (luôn là 1 cho member mới).
    /// </summary>
    public int CurrentLevel { get; set; }
    
    public DateTime CreatedAt { get; set; }
}
