package com.pusong.business.enums;

import com.pusong.common.core.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.List;

/**
 * 任务状态枚举
 */
@Getter
@AllArgsConstructor
public enum TaskStatusEnum {
    INIT("10","任务初始化（待派单）"),
    ING("20","进行中"),
//    OA("25","完成审批中"),
    FINISH("30","完成"),
    PAUSE("40","暂停"),
    CANCEL("50","作废"),
    CANCELAPPO("55","作废审批中");

    private String code;
    private String text;

    /**
     * 返回已完成的任务状态
     * @return
     */
    public static List<String> returnFinish() {
        return List.of(FINISH.code,CANCEL.code);
    }

    /**
     * 判断能否派单
     */
    public static Boolean canAppoint(String taskStatus){
        if(StringUtils.equals(taskStatus,INIT.getCode()) || StringUtils.equals(taskStatus,ING.getCode())){
            return true;
        }
        return false;
    }
    /**
     * 判断能否上传资料
     */
    public static Boolean canUpload(String taskStatus){
        if(StringUtils.equals(taskStatus,FINISH.getCode())
                || StringUtils.equals(taskStatus,CANCEL.getCode())){
            return false;
        }
        return true;
    }
    /**
     * 判断能否点击完成
     */
    public static Boolean canFinish(String taskStatus){
        //不能点：作废 完成 审批中
        if(StringUtils.equals(taskStatus,CANCEL.getCode()) || StringUtils.equals(taskStatus,FINISH.getCode())
                || /*StringUtils.equals(taskStatus,OA.getCode())||*/ StringUtils.equals(taskStatus,CANCELAPPO.getCode())){
            return false;
        }
        return true;
    }


    /**
     * 委派表状态枚举
     */
    @Getter
    @AllArgsConstructor
    public enum AppointStatusEnum {
        ING("20","进行中"),
        OA("25","完成审批中"),
        FINISH("30","完成"),
        PAUSE("40","暂停"),
        CANCEL("50","作废");
        private String code;
        private String text;
        /**
         * 判断能否完成
         */
        public static Boolean canFinish(String taskStatus){
            //作废和完成的不能点
            if(StringUtils.equals(taskStatus,ING.getCode())){
                return true;
            }
            return false;
        }
        /**
         * 判断能否改派
         */
        public static Boolean canReset(String taskStatus){
            //作废和完成的不能点
            if(StringUtils.equals(taskStatus,CANCEL.getCode()) || StringUtils.equals(taskStatus,FINISH.getCode())){
                return false;
            }
            return true;
        }
        /**
         * 获取结束的状态
         */
        public static List<String> getEndStauts(){
           return List.of(FINISH.getCode(),CANCEL.getCode());
        }
    }

}
