package com.aircraft.modules.order.domain.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 *
 * 结算单状态枚举类
 * <p>
 *   TODO 注意：这个是结算单状态枚举类与订单结算状态枚举类不是同一个类, 订单结算状态依赖于结算单状态变化
 * </p>
 *
 * @author chenxiky
 * @version 1.0.0
 * @since 2025/7/12
 */
@Getter
@AllArgsConstructor
public enum SettlementStatusEnum {
    /**
     * 结算中
     */
    SETTLING(0, "结算中"),
    /**
     * 已确认
     */
    SETTLED(1, "已确认"),
    /**
     * 结算完成
     */
    CONFIRMED(2, "结算完成"),
    /**
     * 已取消
     */
    CANCELED(3, "已取消"),
    ;

    /**
     * code值
     */
    private final Integer code;

    /**
     * 描述
     */
    private final String description;

    /**
     * 根据code获取枚举
     *
     * @param code 编码
     * @return  {@link SettlementStatusEnum}
     */
    public static SettlementStatusEnum getInstance(Integer code) {

        return Arrays.stream(SettlementStatusEnum.values())
                .filter(o -> o.getCode().equals(code)).findFirst().orElse(null);
    }
}
