package cn.axzo.workflow.common.model.request.bpmn.process;

import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;

/**
 * 查询流程实例日志
 *
 * @author wangli
 * @since 2024-09-07 17:32
 */
@ApiModel("查询流程实例日志")
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class BpmnProcessInstanceLogQueryDTO {

    /**
     * 流程实例 ID
     */
    @ApiModelProperty(value = "流程实例 ID")
    @NotBlank(message = "流程实例 ID 不能为空")
    private String processInstanceId;

    /**
     * 谁来访问该实例日志，如果为空，则始终不就返回按钮信息
     * <p>
     * 注意，为了确保历史审批数据的查询，需要将除 avatar 外的其他所有属性补全
     */
    @ApiModelProperty(value = "访问者信息", notes = "如果为空，则始终不就返回按钮信息")
    private BpmnTaskDelegateAssigner visitor;

    /**
     * 返回结果中是否包含按钮
     */
    @ApiModelProperty(value = "返回结果中是否包含按钮", notes = "如果访问者为空，该属性为 true 时，同样也不会返回按钮")
    @Builder.Default
    private Boolean hasButton = false;

    /**
     * 是否需要加密（同一个实例的日志，在不同端[cms/oms]下，审批人的信息需要按一定规则进行隐藏控制）
     */
    @ApiModelProperty(value = "是否需要加密", notes = "同一个实例的日志，在不同端[cms/oms]下，审批人的信息需要按一定规则进行隐藏控制")
    private Boolean encrypt;
}
