package cn.axzo.workflow.common.model.request.admin;

import cn.axzo.workflow.common.enums.AdminDataSource;
import cn.axzo.workflow.common.enums.AdminRoleType;
import cn.axzo.workflow.common.enums.AdminTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;

/**
 * 新增管理员模型
 */
@ApiModel("新增管理员模型")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProcessAdminCreateDTO {

    /**
     * 自然人id
     */
    @ApiModelProperty(value = "自然人id")
    @NotNull(message = "人员不能为空")
    private Long personId;

    /**
     * 单位id
     */
    @ApiModelProperty(value = "单位id")
    @NotNull(message = "单位id不能为空")
    private Long organizationalUnitId;

    /**
     * 工作台ID
     */
    @ApiModelProperty(value = "工作台id")
    @NotNull(message = "工作台id不能为空")
    private Long workspaceId;

    /**
     * 工作台类型，1-企业, 2-项目, 3-政务监管平台, 6-oms工作台,参考 WorkspaceType枚举
     */
    @ApiModelProperty(value = "工作台类型")
    @NotNull(message = "工作台类型不能为空")
    private Integer workspaceType;

    /**
     * 管理员类型, SUPER_ADMIN-超级管理员, COMMON_ADMIN-普通管理员
     */
    @ApiModelProperty(value = "管理员类型, super_admin-超级管理员, common_admin-普通管理员")
    private AdminTypeEnum adminType;

    /**
     * 角色类型, ORGANIZATION_ADMIN-单位超管, ORG_WORKSPACE_ADMIN-项目内单位负责人, WORKSPACE_ADMIN-项目超管，OTHER-其他用户
     */
    @ApiModelProperty(value = "角色类型, organization_admin-单位超管, organization_workspace_admin-项目内单位负责人, workspace_admin-项目超管，other-其他用户")
    private AdminRoleType roleType;

    /**
     * 数据来源, SYSTEM_ENTRY-系统录入, USER_ENTRY-用户手动录入
     */
    @ApiModelProperty(value = "数据来源, system-系统录入, user-用户手动录入")
    private AdminDataSource dataSource;

    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者")
    private Long createBy;

    /**
     * 更新者
     */
    @ApiModelProperty(value = "更新者")
    private Long updateBy;
}
