package com.bgycc.smartcanteen.state;

import androidx.annotation.IntDef;

import java.util.Objects;

public class PayOnlineState {
    public static final int IDLE = 0;
    public static final int SEND = 1;
    public static final int WAIT = 2;
    public static final int SUCCESS = 3;
    public static final int FAILED = 4;

    @IntDef(value = {IDLE, SEND, WAIT, SUCCESS, FAILED})
    public @interface PAY_ONLINE_STATE {
    }

    private @PAY_ONLINE_STATE
    int state;
    private String message;
    private String original;

    public PayOnlineState(@PAY_ONLINE_STATE int state) {
        this(state, "");
    }

    public PayOnlineState(@PAY_ONLINE_STATE int state, String message) {
        this(state, message, "");
    }

    public PayOnlineState(@PAY_ONLINE_STATE int state, String message, String original) {
        this.state = state;
        this.message = message;
        this.original = original;
    }

    public int getState() {
        return state;
    }

    public void setState(@PAY_ONLINE_STATE int state) {
        this.state = state;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getOriginal() {
        return original;
    }

    public void setOriginal(String original) {
        this.original = original;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        PayOnlineState payOnlineState = (PayOnlineState) o;
        return state == payOnlineState.state &&
                Objects.equals(message, payOnlineState.message) &&
                Objects.equals(original, payOnlineState.original);
    }

    @Override
    public int hashCode() {
        return Objects.hash(state, message, original);
    }

    @Override
    public String toString() {
        return "PayOnlineState{" +
                "state=" + state +
                ", message='" + message + '\'' +
                ", original='" + original + '\'' +
                '}';
    }
}