package cn.axzo.msg.center.api.request.v4;

import cn.axzo.msg.center.api.request.v3.PendingSendInfo;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @author yanglin
 */
@Setter
@Getter
@Slf4j
public class MessageSendRequestV4 implements Serializable {

    // !! biz fields

    /**
     * 发送IM和待办的基本信息, 必传
     */
    @NotNull
    private MessageSendBasicInfoV4 sendBasicInfo;

    /**
     * 发送待办时必传
     */
    private PendingSendInfo pendingSendInfo;

    // !! internal fields

    /**
     * 事件映射code
     */
    private String eventMappingCode;

    /**
     * 业务方不用传这个字段, 不用关心这个字段
     */
    private List<TemplateInfo> templates = new ArrayList<>();

    public void addTemplate(TemplateInfo templateInfo) {
        templates.add(templateInfo);
    }

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

}