package cn.fateverse.workflow.entity.vo;

import cn.fateverse.workflow.entity.ProcessListener;
import com.alibaba.fastjson2.JSON;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 系统内置监听器对象 wk_re_process_listener
 *
 * @author clay
 * @date 2023-03-27
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("系统内置监听器Vo")
public class ProcessListenerVo {

    /**
     * 监听器id
     */
    @ApiModelProperty("监听器id")
    private String id;

    /**
     * 监听器类型 1 : 任务监听 2: 执行监听
     */
    @ApiModelProperty("监听器类型 1 : 任务监听 2: 执行监听")
    private String listenerType;

    /**
     * 监听类型 create assignment complete end take
     */
    @ApiModelProperty("监听类型 create assignment complete end take")
    private List<String> eventType;

    /**
     * 监听器名称
     */
    @ApiModelProperty("监听器名称")
    private String listenerName;

    /**
     * 监听器值
     */
    @ApiModelProperty("监听器值")
    private String listenerValue;

    /**
     * 监听器数据类型 0: Java类 1: 表达式 2: 代理表达式
     */
    @ApiModelProperty("监听器数据类型 0: Java类 1: 表达式 2: 代理表达式")
    private String listenerValueType;

    public static ProcessListenerVo toProcessListenerVo(ProcessListener processListener) {
        return ProcessListenerVo.builder()
                .id(processListener.getId())
                .listenerType(processListener.getListenerType())
                .eventType(JSON.parseArray(processListener.getEventType(),String.class))
                .listenerName(processListener.getListenerName())
                .listenerValue(processListener.getListenerValue())
                .listenerValueType(processListener.getListenerValueType())
                .build();
    }
}