#nullable enable
using System.ComponentModel.DataAnnotations;
using YD_Event.Core.Enum;
using SqlSugar;
using Easy.Core;
namespace YD_Event.Application.Team.Dtos;
///
/// 团队查询输入参数
///
public class TeamQueryInput : Pagination
{
///
/// 团队名称
///
public string? Name { get; set; }
///
/// 状态
///
public AvailabilityStatus? Status { get; set; }
///
/// 开始时间
///
public DateTime? StartTime { get; set; }
///
/// 结束时间
///
public DateTime? EndTime { get; set; }
}
///
/// 新增团队输入参数
///
public class AddTeamInput
{
///
/// 团队名称
///
[Required(ErrorMessage = "团队名称不能为空"), MaxLength(64)]
public string Name { get; set; } = null!;
///
/// 领队ID集合
///
[Required(ErrorMessage = "请选择领队")]
[MinLength(1, ErrorMessage = "至少需要选择一名领队")]
public List LeaderIds { get; set; } = null!;
///
/// 教练ID集合
///
[Required(ErrorMessage = "请选择教练")]
[MinLength(1, ErrorMessage = "至少需要选择一名教练")]
public List CoachIds { get; set; } = null!;
///
/// 队员ID集合
///
[Required(ErrorMessage = "请选择队员")]
[MinLength(1, ErrorMessage = "至少需要选择一名队员")]
public List MemberIds { get; set; } = null!;
}
///
/// 修改团队输入参数
///
public class UpdateTeamInput : AddTeamInput
{
///
/// 主键Id
///
[Required(ErrorMessage = "Id不能为空")]
public long Id { get; set; }
}
///
/// 团队列表输出
///
public class TeamOutput
{
///
/// 主键Id
///
public long Id { get; set; }
///
/// 团队名称
///
public string Name { get; set; } = null!;
///
/// 状态
///
public AvailabilityStatus Status { get; set; }
///
/// 领队姓名(多个逗号分隔)
///
public string? LeaderNames { get; set; }
///
/// 教练姓名(多个逗号分隔)
///
public string? CoachNames { get; set; }
///
/// 创建时间
///
public DateTime CreatedTime { get; set; }
}
///
/// 团队详情输出
///
public class TeamDetailOutput : TeamOutput
{
///
/// 成员列表
///
public List Members { get; set; } = new();
}
///
/// 团队成员输出
///
public class TeamMemberOutput
{
///
/// 用户ID
///
public long UserId { get; set; }
///
/// 姓名
///
public string Name { get; set; } = null!;
///
/// 角色 (PersonType)
///
public PersonType PersonType { get; set; }
///
/// 角色描述
///
public string RoleName => PersonType.Description();
///
/// 联系电话
///
public string? Mobile { get; set; }
///
/// 性别
///
public Gender Gender { get; set; }
///
/// 出生日期
///
public DateTime? BirthDate { get; set; }
}