
package dev.sonpx.loyalty.mcp.reward.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Arrays;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * Created by SonPhung on Friday, 10-Nov-2023
 */
@Getter
@RequiredArgsConstructor
public enum RuleType {
    @JsonPropertyDescription("Thưởng điểm")
    AWARD("AWD"),
    
    @JsonPropertyDescription("Đổi điểm lấy quà")
    REDEEM("RED"),
    
    @JsonPropertyDescription("Đổi quà đặc biệt")
    ITEM_REDEEM("IRED"),
    
    @JsonPropertyDescription("Điều chỉnh điểm (tăng/giảm)")
    ADJUSTMENT("ADJ"),
    
    @JsonPropertyDescription("Sự kiện trích xuất bộ đếm")
    COUNTER_EXTRACT("CEP"),
    
    @JsonPropertyDescription("Đổi điểm trích xuất từ hệ thống khác")
    REDEEM_EXTRACT("REP"),
    
    @JsonPropertyDescription("Giao dịch trích xuất (Tích lũy theo GD)")
    TRANSACTION_EXTRACT("TEP"),
    
    @JsonPropertyDescription("Thưởng Marketing qua sự kiện/app")
    MARKETING_AWARD("MAWD");

    @JsonValue
    private final String code;

    @JsonCreator
    public static RuleType fromCode(String code) {
        return Arrays.stream(values())
                .filter(e -> e.code.equalsIgnoreCase(code))
                .findFirst()
                .orElse(null);
    }
}
