using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace NPP.SmartSchedue.Api.Contracts.Services.Work.Input;

/// <summary>
/// 工作任务人员分配修改输入
/// </summary>
public class WorkOrderPersonnelUpdateInput
{
    /// <summary>
    /// 任务ID
    /// </summary>
    [Required(ErrorMessage = "任务ID不能为空")]
    public long WorkOrderId { get; set; }

    /// <summary>
    /// 任务实施人员ID（可为空，表示取消分配）
    /// </summary>
    public long? AssignedPersonnelId { get; set; }

    /// <summary>
    /// 任务实施人员姓名
    /// </summary>
    [MaxLength(100, ErrorMessage = "人员姓名长度不能超过100个字符")]
    public string AssignedPersonnelName { get; set; }

    /// <summary>
    /// FL人员信息列表（完整替换现有分配）
    /// </summary>
    public List<FLPersonnelUpdateInfo> FLPersonnels { get; set; } = new List<FLPersonnelUpdateInfo>();

    /// <summary>
    /// 是否强制更新（忽略冲突警告）
    /// </summary>
    public bool ForceUpdate { get; set; } = false;

    /// <summary>
    /// 修改原因
    /// </summary>
    [MaxLength(500, ErrorMessage = "修改原因长度不能超过500个字符")]
    public string UpdateReason { get; set; } = "";
}

/// <summary>
/// FL人员更新信息
/// </summary>
public class FLPersonnelUpdateInfo
{
    /// <summary>
    /// FL人员ID
    /// </summary>
    [Required(ErrorMessage = "FL人员ID不能为空")]
    public long FLPersonnelId { get; set; }

    /// <summary>
    /// FL人员姓名
    /// </summary>
    [Required(ErrorMessage = "FL人员姓名不能为空")]
    [MaxLength(100, ErrorMessage = "FL人员姓名长度不能超过100个字符")]
    public string FLPersonnelName { get; set; }
}