Files
OnboardXAdmin/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskInput.cs
T

147 lines
3.9 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace SimpleAdmin.Application;
/// <summary>
/// 创建新员工入职任务参数。
/// </summary>
public class OnboardingTaskCreateInput
{
/// <summary>
/// 入职业务公司 Id。
/// </summary>
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public long CompanyId { get; set; }
/// <summary>
/// 入职业务部门 Id。
/// </summary>
[IdNotNull(ErrorMessage = "部门Id不能为空")]
public long DepartmentId { get; set; }
/// <summary>
/// 入职任务所属岗位 Id。
/// </summary>
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
public long PositionId { get; set; }
/// <summary>
/// 本次任务使用的入职模板 Id。
/// </summary>
[IdNotNull(ErrorMessage = "入职模板Id不能为空")]
public long OnboardingTemplateId { get; set; }
/// <summary>
/// 创建任务时由人事预先填写的合同变量。
/// </summary>
public List<OnboardingInitialContractVariableInput> ContractVariables { get; set; } = new();
/// <summary>
/// 创建任务时指定的审核人用户 Id。
/// </summary>
public long? AssignedReviewerUserId { get; set; }
/// <summary>
/// 链接过期时间;实际有效期由系统配置计算。
/// </summary>
public DateTime? LinkExpireAt { get; set; }
/// <summary>
/// 业务备注。
/// </summary>
[Required(ErrorMessage = "人事备注不能为空")]
public string Remark { get; set; }
}
/// <summary>
/// 批量复制入职任务参数。
/// </summary>
public class OnboardingTaskCopyInput
{
/// <summary>
/// 被复制的原入职任务 Id。
/// </summary>
[IdNotNull(ErrorMessage = "原入职任务Id不能为空")]
public long SourceTaskId { get; set; }
/// <summary>
/// 在原任务之外需要新建的任务数量。
/// </summary>
public int Count { get; set; }
/// <summary>
/// 每条新任务分别填写的人事备注。
/// </summary>
public List<OnboardingTaskCopyItemInput> Items { get; set; } = new();
}
/// <summary>
/// 单条复制任务的个性化参数。
/// </summary>
public class OnboardingTaskCopyItemInput
{
/// <summary>
/// 新任务的人事备注,用于区分候选人和专属链接。
/// </summary>
[Required(ErrorMessage = "人事备注不能为空")]
public string Remark { get; set; }
}
/// <summary>
/// 创建任务时填写的单个合同变量。
/// </summary>
public class OnboardingInitialContractVariableInput
{
/// <summary>
/// 变量所属合同模板版本 Id。
/// </summary>
[IdNotNull(ErrorMessage = "合同模板版本Id不能为空")]
public long ContractTemplateVersionId { get; set; }
/// <summary>
/// DOCX 中的完整变量编码,例如 hr.MonthlySalary。
/// </summary>
public string VariableCode { get; set; }
/// <summary>
/// 人事录入的变量值。
/// </summary>
public string VariableValue { get; set; }
}
/// <summary>
/// 入职任务创建结果。
/// </summary>
public class OnboardingTaskCreatedOutput
{
/// <summary>
/// 入职任务 Id。
/// </summary>
public long TaskId { get; set; }
/// <summary>
/// 入职任务编号。
/// </summary>
public string TaskNo { get; set; }
/// <summary>
/// 新生成的员工填写链接 Token,仅在创建结果中返回。
/// </summary>
public string LinkToken { get; set; }
/// <summary>
/// 员工填写链接过期时间。
/// </summary>
public DateTime ExpiresAt { get; set; }
}
/// <summary>
/// 批量复制入职任务结果。
/// </summary>
public class OnboardingTaskCopyOutput
{
/// <summary>
/// 本次复制生成的全部新任务及独立链接信息。
/// </summary>
public List<OnboardingTaskCreatedOutput> Tasks { get; set; } = new();
}