package cn.fateverse.workflow.entity.bpmn;

import cn.fateverse.workflow.enums.AssigneeTypeEnums;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 节点配置信息
 * @author Clay
 * @date 2022/12/27
 */
@Data
public class Properties {
    /**
     * 审批人类型
     */
    private AssigneeTypeEnums assignedType;
    /**
     * 审批用户
     */
    private List<UserInfo> assignedUser;
    /**
     * 发起人自旋  multiple true false
     */
    private Map<String,Object> selfSelect;
    /**
     * 连续主管 endCondition TOP   LEAVE    endLevel  level
     */
    private Map<String,Object> leaderTop=new HashMap<>();
    /**
     * 指定主管审批
     */
    private Map<String,Object> leader=new HashMap<>();
    /**
     * 系统角色
     */
    private List<RoleInfo> roleList;
    /**
     * 表单人员
     */
    private String formUser;
    /**
     * 审批人为空的规则  hander 和 assignedUser
     */
    private Map<String,Object> nobody;
    /**
     * 会签模式
     * NEXT: 会签 （按选择顺序审批，每个人必须同意）
     * AND: 会签（可同时审批，每个人必须同意）
     * OR: 或签（有一人同意即可）
     */
    private String mode;
    /**
     * 签字
     */
    private Boolean sign;
    /**
     * 审批超时
     */
    private JSONObject timeLimit;

    private Map<String,Object> refuse;
    /**
     * 表单权限
     */
    private List<FormOperates> formPerms;

    /**
     * 条件配置类型
     */
    private String groupsType;
    /**
     * 条件表达式
     */
    private String expression;
    /**
     * 条件组
     */
    private List<GroupsInfo> groups;

    /**
     * 允许发起人添加抄送人
     */
    private Boolean shouldAdd;
    /**
     * 延时类型
     */
    private String type;
    /**
     * 时间,时间戳
     */
    private Long time;
    /**
     * 计时单位
     */
    private String unit;
    /**
     * 时间
     */
    private String dateTime;

    /**
     * http节点相关配置信息
     */
    private HttpInfo http;

    /**
     * 监听器信息
     */
    private ListenerInfo listener;
    /**
     * email对象相关细腻系
     */
    private EmailInfo email;
}

