package cn.axzo.msg.center.service.pending.request;

import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * @description
 *   代办记录查询参数的数模型
 * @author cold_blade
 * @date 2023/9/23
 * @version 1.0
 */
@Setter
@Getter
public class PendingMessageQueryRequest implements Serializable {

    private static final long serialVersionUID = 3981382821433771344L;

    /**
     * APP终端类型(前端不care)
     *   WEB: web端页面
     *   MINI_PROGRAM: 安心筑小程序端页面
     *   IOS: 原生IOS端页面
     *   ANDROID: 原生Android端页面
     *   WEB_VIEW: H5页面
     *   WECHAT_MINI_PROGRAM: 微信小程序页面
     */
    private TerminalTypeEnum terminalType;
    /**
     * 代办消息状态
     *   UNSENT: 未发送
     *   HAS_BEEN_SENT: 已发送
     *   COMPLETED: 已办
     *   RETRACT: 已撤回
     *   DELETED: 已删除
     */
    private PendingMessageStateEnum msgState;
    /**
     * COMPLETED: 已处理
     * RETRACT: 已撤销
     * PASSED: 已通过
     * REJECTED: 已拒绝
     */
    private BizFinalStateEnum bizFinalState;
    /**
     * 消息标题
     */
    private String title;
    /**
     * 工作台id
     */
    private Long workspaceId;
    /**
     * 待办消息记录的唯一标识
     */
    @NotBlank(message = "msgIdentityCode is required")
    private String msgIdentityCode;

    /**
     * 查询类型
     *  HAS_BEEN_SENT: 待处理
     *  COMPLETED: 已处理
     *  SEND_BY_ME: 我发起
     *  COPIED_TO_ME: 抄送我
     */
    private TodoQueryType queryType;

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
