package com.friday.tooldriver.dto.infodator.response;

import com.friday.operation.api.tooldriver.dto.rpa.JobDto;
import com.friday.operation.api.tooldriver.dto.rpa.ReleaseDto;
import com.friday.operation.api.tooldriver.dto.rpa.RobotDto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Task implements Serializable {
    /**
     * 任务id
     */
    private Integer id;
    /**
     * 历史表中任务id
     */
    private String taskId;
    /**
     * 启动任务返回的队列任务id
     */
    private String taskExecutionQueueId;
    /**
     * 流程名
     */
    private String name;
    /**
     * 描述
     */
    private String description;
    private Integer taskType;
    private Integer triggerId;
    private String triggerName;
    private String scheduleId;
    private Integer processMode;
    //任务执行次数 ，默认为0（一次）
    private Integer taskPriority;
    private Integer taskStatus;
    private Integer countConsecutiveExecute;
    private Integer executeSort;
    private String agentRobotIds;
    private Integer agentGroupIds;
    //任务是否是有效状态
    private boolean enabled;
    private Integer templateId;
    private Integer groupId;
    private String estimateSecondsOnce;
    private String dutyMode;
    //任务的启动模式
    private String launchMode;
    /**
     *任务启动时，如果对应的机器人处于繁忙状态，是否等待该机器人空闲？
     * true:进入排队队列，等待该机器人空闲后再执行；
     * false:取消该机器人的本次执行(不影响本任务中的其它机器人)。
     */
    private boolean waitIfRobotBusy;
    /**
     *任务启动时，如果对应机器人处于离线状态，是否等待该机器人在线？
     * true:等待该机器人在线后再执行；
     * false:取消该机器人的本次执行(不影响本任务中的其它机器人)。
     */
    private boolean waitIfRobotOffline;
    private String createUserName;
    private Integer creatorId;
    private String updatorId;
    private String createTime;
    private String updateTime;
    private String inputArguments;

    public JobDto createInfodatorJobDto(){
        return JobDto.builder()
                .jobId(String.valueOf(this.getTaskExecutionQueueId()))
                .source("")
                .release(ReleaseDto.builder().build())
                .robot(RobotDto.builder().build())
                .creationTime(this.getCreateTime())
                .startTime("")
                .endTime("")
                .inputArguments(this.getInputArguments())
                .outputArguments("")
                .info("")
                .build();
    }
}
