package com.ruoyi.common.enums;

public enum RoleType {
    admin(1L, "超级管理员"),
    common(2L, "普通角色"),
    frontCommon(3L, "前端普通用户"),//手机号注册未绑定卡用户
    frontVip(4L, "前端VIP"),//已绑卡用户
    agent(5L, "代理商"),//已绑卡用户
    ;

    private Long value;
    private String remark;

    private RoleType(Long value, String remark) {
        this.value = value;
        this.remark = remark;
    }

    public Long getValue() {
        return value;
    }

    public String getRemark() {
        return remark;
    }

    public static RoleType getByValue(String value) {
        for (RoleType o : RoleType.values()) {
            if (o.getValue().equals(value)) {
                return o;
            }
        }
        return null;
    }

    /**
     * 前端普通用户，VIP用户才可以登录录课app及前端页面
     * @param value
     * @return
     */
    public static Boolean hasLoginFrontPermission(String value) {
        if (frontCommon.name().equalsIgnoreCase(value)||
                frontVip.name().equalsIgnoreCase(value)) {
            return true;
        }

        return false;
    }

    /**
     * 前端学生
     * @param value frontStudent
     * @return
     */
    public static Boolean isFrontCommon(Object value) {
        if(value instanceof String){
            if (frontCommon.name().equalsIgnoreCase(String.valueOf(value).trim())) {
                return true;
            }
        }

        if(value instanceof Long){
            if (frontCommon.getValue().longValue()==Long.valueOf(String.valueOf(value).trim()).longValue()) {
                return true;
            }
        }

        if(value instanceof Integer){
            if (frontCommon.getValue().intValue()==Integer.valueOf(String.valueOf(value).trim()).intValue()) {
                return true;
            }
        }

        return false;
    }

    /**
     * 前端老师
     * @param value frontTeacher
     * @return
     */
    public static Boolean isFrontVip(Object value) {
        if(value instanceof String){
            if (frontVip.name().equalsIgnoreCase(String.valueOf(value).trim())) {
                return true;
            }
        }

        if(value instanceof Long){
            if (frontVip.getValue().longValue()==Long.valueOf(String.valueOf(value).trim()).longValue()) {
                return true;
            }
        }

        if(value instanceof Integer){
            if (frontVip.getValue().intValue()==Integer.valueOf(String.valueOf(value).trim()).intValue()) {
                return true;
            }
        }

        return false;
    }

    public static Boolean isAgent(Object value) {
        if(value instanceof String){
            if (agent.name().equalsIgnoreCase(String.valueOf(value).trim())) {
                return true;
            }
        }

        if(value instanceof Long){
            if (agent.getValue().longValue()==Long.valueOf(String.valueOf(value).trim()).longValue()) {
                return true;
            }
        }

        if(value instanceof Integer){
            if (agent.getValue().intValue()==Integer.valueOf(String.valueOf(value).trim()).intValue()) {
                return true;
            }
        }

        return false;
    }
}
