using MediatR;

namespace MembershipService.API.Application.Commands;

/// <summary>
/// EN: Command to add a stamp to a member's active card after a purchase.
/// VI: Command de them stamp vao card dang hoat dong cua member sau khi mua hang.
/// </summary>
public record AddStampCommand(
    Guid ShopId,
    Guid MemberId,
    Guid? OrderId = null
) : IRequest<AddStampResult>;

/// <summary>
/// EN: Result of add stamp command.
/// VI: Ket qua cua add stamp command.
/// </summary>
public record AddStampResult(
    Guid StampCardId,
    int CurrentStamps,
    int TotalStampsRequired,
    bool IsCompleted,
    bool CardWasAutoCreated
);
