namespace YD_Event.Application.Client.Dtos; public class CheckinGroupOptionDto { public long Id { get; set; } public long EventProjectId { get; set; } public long ProjectId { get; set; } public string ProjectName { get; set; } = string.Empty; public string GroupName { get; set; } = string.Empty; public int Order { get; set; } public int TotalUnits { get; set; } public int CheckedUnits { get; set; } public int LockedUnits { get; set; } public int ProgressPercent { get; set; } public bool IsCompleted { get; set; } } public class CheckinProjectOptionDto { public long EventProjectId { get; set; } public long ProjectId { get; set; } public string ProjectName { get; set; } = string.Empty; public int Order { get; set; } public List Groups { get; set; } = new(); public int TotalUnits { get; set; } public int CheckedUnits { get; set; } public int LockedUnits { get; set; } public int ProgressPercent { get; set; } public bool IsCompleted { get; set; } } /// 秩序册中的一列;团队项目的一列可以包含多名运动员。 public class CheckinOrderBookUnitDto { public string UnitKey { get; set; } = string.Empty; public int Order { get; set; } public int SessionIndex { get; set; } public int VenueIndex { get; set; } public string VenueName { get; set; } = string.Empty; public long EventProjectId { get; set; } public long ProjectId { get; set; } public string ProjectName { get; set; } = string.Empty; public long? GroupId { get; set; } public string GroupName { get; set; } = string.Empty; public long RegistrationItemId { get; set; } public string TeamName { get; set; } = string.Empty; public string UnitName { get; set; } = string.Empty; public List RegistrationPersonIds { get; set; } = new(); public List Athletes { get; set; } = new(); } public class CheckinRoundOptionDto { public int Round { get; set; } public string RoundName { get; set; } = string.Empty; public List Groups { get; set; } = new(); } public class CheckinEventOptionsDto { public long EventId { get; set; } public string EventName { get; set; } = string.Empty; public List Sessions { get; set; } = new(); public List Projects { get; set; } = new(); public List Units { get; set; } = new(); public int MaxCheckers { get; set; } = 3; public List AssignedCheckinNumbers { get; set; } = new(); public int NextCheckinNo { get; set; } = 1; // 兼容旧版小程序字段;场次检录启用后不再作为数据源。 public List Rounds { get; set; } = new(); } public class CheckinSessionOptionDto { public string SessionKey { get; set; } = string.Empty; public int Order { get; set; } public int SessionIndex { get; set; } public long EventProjectId { get; set; } public long ProjectId { get; set; } public string ProjectName { get; set; } = string.Empty; public string SessionName { get; set; } = string.Empty; public string GroupName { get; set; } = string.Empty; public string VenueName { get; set; } = string.Empty; public List GroupIds { get; set; } = new(); public List RegistrationPersonIds { get; set; } = new(); } public class SaveCheckerInput { public long? CheckerUserId { get; set; } [Required(ErrorMessage = "赛事ID不能为空")] public long EventId { get; set; } [Required(ErrorMessage = "姓名不能为空")] public string Name { get; set; } = string.Empty; [Required(ErrorMessage = "手机号不能为空")] [RegularExpression(@"^1[3-9]\d{9}$", ErrorMessage = "手机号格式不正确")] public string Mobile { get; set; } = string.Empty; public int CheckinNo { get; set; } public string? Password { get; set; } public string? CurrentSessionKey { get; set; } public int? CurrentRound { get; set; } public long? CurrentGroupId { get; set; } public string? Venue { get; set; } } public class UpdateCheckinProgressInput { [Required(ErrorMessage = "任务ID不能为空")] public long TaskId { get; set; } public long EventProjectId { get; set; } public long GroupId { get; set; } } public class UnbindCheckerInput { [Required(ErrorMessage = "任务ID不能为空")] public long TaskId { get; set; } } public class CheckinCheckerDto { public long CheckerUserId { get; set; } public string Name { get; set; } = string.Empty; public string Mobile { get; set; } = string.Empty; public int CheckinNo { get; set; } public long TaskId { get; set; } public long EventId { get; set; } public string EventName { get; set; } = string.Empty; public int CurrentRound { get; set; } public string RoundName { get; set; } = string.Empty; public long? CurrentGroupId { get; set; } public string CurrentGroupName { get; set; } = string.Empty; public string Venue { get; set; } = string.Empty; public string CurrentSessionKey { get; set; } = string.Empty; public int CurrentSessionOrder { get; set; } public string CurrentSessionName { get; set; } = string.Empty; public string CurrentSessionVenue { get; set; } = string.Empty; public int TaskStatus { get; set; } public DateTime CreatedTime { get; set; } } public class CheckerAccountAvailabilityDto { public bool Available { get; set; } public string Message { get; set; } = string.Empty; }