package com.neptune.plugin.models;

import com.getcapacitor.JSObject;
import com.neptune.utils.MyLog;
import com.pax.dal.entity.EPedType;

import org.json.JSONException;
import org.json.JSONObject;

public class PedModel {

    private EPedType pedType;
    private int pedMode;
    private boolean landscape;
    private boolean random;
    private boolean withTitle;
    private String title;


    public PedModel(EPedType pedType, int pedMode, boolean landscape, boolean random, boolean withTitle, String title) {
        this.pedType = (pedType==null)?pedType:EPedType.INTERNAL;
        this.pedMode = pedMode;
        this.landscape = landscape;
        this.random = random;
        this.withTitle = withTitle;
        this.title = title;
        MyLog.logI(this.toString());
    }

    public PedModel(JSONObject jsonObject) throws JSONException {
        this(
                pedTypeToEnum(jsonObject.getString("pedType")),
                jsonObject.getInt("pedMode"),
                jsonObject.getBoolean("landscape"),
                jsonObject.getBoolean("random"),
                jsonObject.getBoolean("withTitle"),
                jsonObject.getString("title")
        );
    }

    public EPedType getPedType() {
        return pedType;
    }

    public int getPedMode() {
        return pedMode;
    }

    public boolean isLandscape() {
        return landscape;
    }

    public boolean isRandom() {
        return random;
    }

    public boolean isWithTitle() {
        return withTitle;
    }

    public String getTitle() {
        return title;
    }

    private static EPedType pedTypeToEnum(String pedType){
        for (EPedType type : EpedValues()) {
            if (type.name().equals(pedType)) {
                return type;
            }
        }
        return null;
    }

    public static EPedType[] EpedValues(){
        return new EPedType[]{
                EPedType.INTERNAL,
                EPedType.EXTERNAL_TYPEA,
                EPedType.EXTERNAL_TYPEB,
                EPedType.EXTERNAL_TYPEC};
    }

    @Override
    public String toString() {
        return "PedModel{" +
                "pedType=" + pedType +
                ", pedMode=" + pedMode +
                ", landscape=" + landscape +
                ", random=" + random +
                ", withTitle=" + withTitle +
                ", title='" + title + '\'' +
                '}';
    }
}
