package cn.axzo.msg.center.api.response.v3;

import cn.axzo.msg.center.api.custombutton.ProposedButton;
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TodoType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * @author yanglin
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SearchPendingMessageResp {
    /**
     * 待办业务id
     */
    private Long todoBusinessId;
    /**
     * 消息的唯一标识
     */
    private String identityCode;
    /**
     * 请求批次号
     */
    private String requestNo;
    /**
     * 发起者ID
     */
    private Long promoterId;
    /**
     * 发起者的自然人ID
     */
    private Long promoterPersonId;
    /**
     * 发起者姓名
     */
    private String promoterName;
    private Long promoterOuId;
    private Long promoterOrgId;
    private OrganizationTypeEnum promoterOrgType;
    /**
     * 执行者ID
     */
    private Long executorId;
    /**
     * 执行者的自然人ID
     */
    private Long executorPersonId;
    /**
     * 执行者姓名
     */
    private String executorName;
    /**
     * 执行者身份
     */
    private IdentityTypeEnum executorType;
    /**
     * 模板编码
     */
    private String templateCode;
    /**
     * 消息标题
     */
    private String title;
    /**
     * 消息内容
     */
    private String content;
    /**
     * 消息所属组织类型
     */
    private OrganizationTypeEnum orgType;
    /**
     * 消息所属组织Id
     */
    private Long orgId;
    /**
     * 消息所属组织名称
     */
    private String orgName;
    /**
     * 消息所属企业ID
     */
    private Long ouId;
    /**
     * 待办状态
     */
    private PendingMessageStateEnum state;
    /**
     * 业务类型
     */
    private BizCategoryEnum bizCategory;
    /**
     * 关联业务主键
     */
    private String bizCode;
    /**
     * 流程类代办的流程结点编码
     */
    private String subBizCode;
    /**
     * 业务描述eg:流程结点描述
     */
    private String bizDesc;
    /**
     * 业务标签
     */
    private String bizFlag;
    /**
     * 业务扩展参数
     */
    private String bizExtParam;
    /**
     * 路由参数（留存）
     */
    private String routerParams;
    /**
     * 业务终态，可为空
     */
    private BizFinalStateEnum bizFinalState;
    /**
     * 待办的截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-hh HH:mm:ss")
    private Date deadline;
    /**
     * 重试次数
     */
    private Integer retryCount;
    /**
     * 最终失败原因
     */
    private String failCause;
    /**
     * 在这个时间之前不显示
     */
    @JsonFormat(pattern = "yyyy-MM-hh HH:mm:ss")
    private Date hideUntil;

    /**
     * 待办类型
     */
    private TodoType type;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createAt;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateAt;

    /**
     * 自定义按钮
     */
    private List<ProposedButton> proposedButtons;
}
