package com.yuchen.saas.payment.api.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Objects;

/**
 * @Author: caiwq
 * @Date: 2023/9/15 15:18
 * @Description: 发票状态枚举类型
 */
@Getter
@AllArgsConstructor
public enum SaasInvoiceStatusEnum {

    // 开票状态(0:开票中 1:开票成功 2:开票失败 3:红冲中(待退票) 4:已红冲(已退票) 5:被驳回 6:重开发票申请中 7:待作废 8:已作废 9:未开票 10:被驳回且重新申请 11:待红冲 12:红冲失败)
    /**
     * 开票中
     */
    WAITING(0, "开票中"),
    /**
     * 开票成功
     */
    SUCCESS(1, "开票成功"),
    /**
     * 开票失败
     */
    FAIL(2, "开票失败"),
    /**
     * 待红冲
     */
    TO_HONG_CHONG(11, "待红冲"),
    /**
     * 红冲中(待退票)
     */
    HONG_CHONG_ZHONG(3, "红冲中(待退票)"),
    /**
     * 已红冲(已退票)
     */
    HONG_CHONG_LE(4, "已红冲(已退票)"),
    /**
     * 红冲失败
     */
    HONG_CHONG_FAIL(12, "红冲失败"),
    /**
     * 被驳回
     */
    REJECTED(5, "被驳回"),
    /**
     * 重开发票申请中
     */
    APPLY_INVOICE_AGAIN_WAITING(6, "重开发票申请中"),
    /**
     * 待作废
     */
    TOBECANCEL(7, "待作废"),
    /**
     * 已作废
     */
    CANCEL(8, "已作废"),
    /**
     * 未开票
     */
    NO(9, "未开票"),
    /**
     * 被驳回且重新申请
     */
    REJECTED_AND_APPLY_AGAIN(10, "被驳回且重新申请");

    private final int value;
    private final String desc;

    public static String getDescByCode(Integer value) {
        if (Objects.isNull(value)) {
            return "";
        }
        SaasInvoiceStatusEnum[] enumArray = SaasInvoiceStatusEnum.values();
        for (SaasInvoiceStatusEnum e : enumArray) {
            if (e.getValue() == value) {
                return e.getDesc();
            }
        }
        return "";
    }
}
