using MediatR;

namespace MembershipService.API.Application.Commands;

/// <summary>
/// EN: Command to update member profile.
/// VI: Command để cập nhật profile member.
/// </summary>
public class UpdateMemberProfileCommand : IRequest<UpdateMemberProfileResult>
{
    /// <summary>
    /// EN: Member ID.
    /// VI: ID member.
    /// </summary>
    public Guid MemberId { get; set; }

    /// <summary>
    /// EN: Gender.
    /// VI: Giới tính.
    /// </summary>
    public string? Gender { get; set; }

    /// <summary>
    /// EN: User preferences (JSON string).
    /// VI: Preferences của user (chuỗi JSON).
    /// </summary>
    public string? Preferences { get; set; }

    /// <summary>
    /// EN: Country code (ISO 3166-1 alpha-2).
    /// VI: Mã quốc gia (ISO 3166-1 alpha-2).
    /// </summary>
    public string? CountryCode { get; set; }
}

/// <summary>
/// EN: Result of update member profile command.
/// VI: Kết quả của update member profile command.
/// </summary>
public class UpdateMemberProfileResult
{
    public Guid MemberId { get; set; }
    public bool Success { get; set; }
    public DateTime UpdatedAt { get; set; }
}
