package tech.easyflow.approval.enums;

import org.springframework.util.StringUtils;
import tech.easyflow.common.web.exceptions.BusinessException;

/**
 * 审批对象类型。
 */
public enum ApprovalAssigneeType {

    ROLE("ROLE"),
    USER("USER");

    private final String code;

    ApprovalAssigneeType(String code) {
        this.code = code;
    }

    /**
     * 解析审批对象类型。
     *
     * @param code 类型编码
     * @return 审批对象类型
     */
    public static ApprovalAssigneeType from(String code) {
        if (!StringUtils.hasText(code)) {
            throw new BusinessException("审批对象类型不能为空");
        }
        for (ApprovalAssigneeType value : values()) {
            if (value.code.equalsIgnoreCase(code.trim())) {
                return value;
            }
        }
        throw new BusinessException("审批对象类型非法");
    }

    public String getCode() {
        return code;
    }
}
