using OASystem.Domain.Dtos.System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.ViewModels.System
{
    /// <summary>
    /// 审核模板View
    /// </summary>
    public class ApprovalProcessView : AuditTemplateView
    {
        public int Id { get; set; }
    }

    /// <summary>
    /// 审核流程 View
    /// </summary>
    public class AuditTemplateView
    {
        /// <summary>
        /// 模板名称
        /// </summary>
        public string TemplateName { get; set; }
        /// <summary>
        /// 模板编码
        /// </summary>
        public string TemplateCode { get; set; }
        /// <summary>
        /// 业务类型(1-物资领用)
        /// </summary>
        public int BusinessType { get; set; }

        /// <summary>
        /// 状态(0-禁用,1-启用)
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 模板审核节点
        /// </summary>
        public List<AuditTemplateNodeView> TempNodes { get; set; }
    }

    /// <summary>
    /// 审核流程节点
    /// </summary>
    public class AuditTemplateNodeView
    {
        public int Id { get; set; }
        /// <summary>
        /// 模板ID
        /// </summary>
        public int TemplateId { get; set; }
        /// <summary>
        /// 节点名称
        /// </summary>
        public string? NodeName { get; set; }
        /// <summary>
        /// 节点顺序
        /// </summary>
        public int NodeOrder { get; set; } = 0;
        /// <summary>
        /// 审批类型(1-会签:必须所有审核人通过,2-或签:只要有一个审核人通过,整个节点就通过)
        /// </summary>
        public int ApproveType { get; set; } = 0;
        /// <summary>
        /// 是否必审
        /// </summary>
        public bool IsRequired { get; set; }

        /// <summary>
        /// 审核人
        /// </summary>
        public List<AuditTemplateNodeUserView> NodeUsers { get; set; }
    }

    /// <summary>
    /// 审核流程节点用户
    /// </summary>
    public class AuditTemplateNodeUserView
    {
        public int Id { get; set; }
        /// <summary>
        /// 审核节点Id
        /// </summary>
        public int NodeId { get; set; }
        /// <summary>
        /// 用户ID
        /// </summary>
        public int UserId { get; set; }
        /// <summary>
        /// 用户姓名
        /// </summary>
        public string UserName { get; set; }
    }
}