package com.neptune.plugin.models;

import com.neptune.utils.MyLog;
import com.pax.dal.entity.EBeepMode;
import com.pax.dal.entity.EPinBlockMode;

import org.json.JSONException;
import org.json.JSONObject;

public class BeepModel {
    private EBeepMode beepMode;
    private int delayTime;

    public BeepModel(EBeepMode beepMode, int delayTime) {
        this.beepMode = beepMode;
        this.delayTime = delayTime;
        this.toString();
    }

    public BeepModel(JSONObject jsonObject) throws JSONException {
        this(
                EBeepModeToEnum(jsonObject.getString("beepMode")),
                jsonObject.getInt("delayTime")
        );
    }

    public EBeepMode getBeepMode() {
        return beepMode;
    }

    public int getDelayTime() {
        return delayTime;
    }


    private static EBeepMode EBeepModeToEnum(String modeType){
        for (EBeepMode type : EBeepModeValues()) {
            MyLog.logI(type.name());
            if (type.name().equals(modeType)) {
                return type;
            }
        }
        return null;
    }

    public static EBeepMode[] EBeepModeValues(){
        return new EBeepMode[]{
                EBeepMode.FREQUENCE_LEVEL_0,
                EBeepMode.FREQUENCE_LEVEL_1,
                EBeepMode.FREQUENCE_LEVEL_2,
                EBeepMode.FREQUENCE_LEVEL_3,
                EBeepMode.FREQUENCE_LEVEL_4,
                EBeepMode.FREQUENCE_LEVEL_5,
                EBeepMode.FREQUENCE_LEVEL_6,
        };
    }


    @Override
    public String toString() {
        return "BeepModel{" +
                "beepMode=" + beepMode +
                ", delayTime=" + delayTime +
                '}';
    }
}
