package org.dromara.project.domain.enums;

import lombok.Getter;

/**
 * @author lcj
 * @date 2025/4/8 16:13
 */
@Getter
public enum BusReviewStatusEnum {

    UNREVIEW("待审核", "1"),
    INREVIEW("审核中", "2"),
    AGREED("已同意", "3"),
    DECLINED("已拒绝", "4");

    private final String text;

    private final String value;

    BusReviewStatusEnum(String text, String value) {
        this.text = text;
        this.value = value;
    }

    /**
     * 根据班组长和管理员审核状态获取枚举
     *
     * @param gangerStatus  班组长审核状态
     * @param managerStatus 管理员审核状态
     * @return 施工人员补卡/请假审核状态
     */
    public static String getEnumByOpinionStatus(String gangerStatus, String managerStatus) {
        // 如果其中一个拒绝，返回 DECLINED("已拒绝", "4")
        if (BusOpinionStatusEnum.REFUSE.getValue().equals(gangerStatus)
            || BusOpinionStatusEnum.REFUSE.getValue().equals(managerStatus)) {
            return DECLINED.getValue();
        }
        // 当两个状态都未读，返回 UNREVIEW("待审核", "1")
        if (BusOpinionStatusEnum.UNREAD.getValue().equals(gangerStatus)
            && BusOpinionStatusEnum.UNREAD.getValue().equals(managerStatus)) {
            return UNREVIEW.getValue();
        }
        // 当两个状态都同意，返回 AGREED("已同意", "3")
        if (BusOpinionStatusEnum.PASS.getValue().equals(gangerStatus)
            && BusOpinionStatusEnum.PASS.getValue().equals(managerStatus)) {
            return AGREED.getValue();
        }
        // 当班组长状态不为未读 且管理员状态为未读，返回 INREVIEW("审核中", "2")
        if (!BusOpinionStatusEnum.UNREAD.getValue().equals(gangerStatus)
            && BusOpinionStatusEnum.UNREAD.getValue().equals(managerStatus)) {
            return INREVIEW.getValue();
        }
        return null;
    }

}
