using System.ComponentModel.DataAnnotations; using Tiku.Application.Points; namespace Tiku.Api.Contracts; public sealed class PointQueryDto { [Range(1, 200)] public int? Limit { get; set; } [StringLength(32)] public string? Status { get; set; } public Guid? RegionId { get; set; } public PointLimitQuery ToQuery() { return new PointLimitQuery(Limit, Status, RegionId); } } public sealed class ClaimPointTaskDto { [Required] [StringLength(100)] public string TaskKey { get; set; } = string.Empty; [StringLength(100)] public string? SourceType { get; set; } public Guid? SourceId { get; set; } public ClaimPointTaskCommand ToCommand() { return new ClaimPointTaskCommand(TaskKey, SourceType, SourceId); } } public sealed class CreatePointExchangeOrderDto { [Required] public Guid ItemId { get; set; } public CreatePointExchangeOrderCommand ToCommand() { return new CreatePointExchangeOrderCommand(ItemId); } }