using MediatR;
using System.ComponentModel.DataAnnotations;
using TakeoutSaaS.Application.App.Tenants.Dto;

namespace TakeoutSaaS.Application.App.Tenants.Commands;

/// <summary>
/// 自助注册租户命令。
/// </summary>
public sealed record SelfRegisterTenantCommand : IRequest<SelfRegisterResultDto>
{
    /// <summary>
    /// 初始管理员账号。
    /// </summary>
    [Required]
    [StringLength(64)]
    public string AdminAccount { get; init; } = string.Empty;

    /// <summary>
    /// 初始管理员展示名称。
    /// </summary>
    [StringLength(64)]
    public string? AdminDisplayName { get; init; }

    /// <summary>
    /// 初始管理员邮箱。
    /// </summary>
    [EmailAddress]
    [StringLength(128)]
    public string? AdminEmail { get; init; }

    /// <summary>
    /// 初始管理员手机号。
    /// </summary>
    [Required]
    [StringLength(32)]
    public string AdminPhone { get; init; } = string.Empty;

    /// <summary>
    /// 初始管理员登录密码（前端自定义）。
    /// </summary>
    [Required]
    [StringLength(128, MinimumLength = 8)]
    public string AdminPassword { get; init; } = string.Empty;
}
