package com.bb.model;

import com.bb.exception.ApiException;
import com.bb.exception.RequestParameterApiException;
import com.bb.util.StringUtils;
import com.fasterxml.jackson.annotation.JsonInclude;


import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.util.HashMap;
import java.util.Map;


@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BombReponseVo {
    /** 결과 코드 */
    private int code;
    private String accId;
    private String nickName;
    private String balance;
    boolean isDemo;
    
  
    public void success() {
        this.setCode(0);
   
    }


	/**
     * 실패상태 설정
     */
    public void fail() {
    	 this.setCode(-1);
    }
    
    /**
     * 실패상태 설정
     */
    public void fail(int code) {
    	 this.setCode(code);
    }

    /**
     * 필수 파라미터 검증
     * @param value
     * @param paramName
     * @throws ApiException
     */
    public static void require(Object value, String paramName) throws ApiException {
        String stringValue = (value == null) ? null : String.valueOf(value);

        if(StringUtils.isEmpty(stringValue)) {
            throw new RequestParameterApiException( paramName);
        }
    }

    /**
     * 파라미터 조건 검증
     * @param condition
     * @param message
     * @throws ApiException
     */
    public static void then( boolean condition, String message ) throws ApiException {
        if( condition ) {
            throw new ApiException( message );
        }
    }

    /**
     * 파라미터가 특정 목록에 포함되어 있는지 검증
     * @param param
     * @param paramName
     * @param values
     * @throws ApiException
     */
    public static void notMatched( Object param, String paramName, Object... values ) throws ApiException {
        boolean matched = false;

        for( Object value : values ) {
            if( param.equals( value ) ) {
                matched = true;
                break;
            }
        }

        if( !matched ) {
            throw new ApiException( "유효하지 않은 파라미터 : " + paramName );
        }
    }

}
