package cordova.plugin.netcontroll.integration.fiserv;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaWebView;

import org.json.JSONArray;
import org.json.JSONException;

import android.app.Activity;
import android.content.Context;

public class NetControllCordovaPluginsIntegrationFiserv extends CordovaPlugin {
    //Vero
    public FiservPOS fiservPOS;

    //Cordova/Java Params
    private Activity mActivity;
    private Context mContext;
    private CordovaInterface mCordova;
    private CordovaWebView webView;

    @Override
    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
        super.initialize(cordova, webView);

        this.webView = webView;
        mActivity = cordova.getActivity();
        mContext = cordova.getActivity().getApplicationContext();
        mCordova = cordova;
    }

    private void initializeFiservPOS() {
        if (this.fiservPOS == null) {
            this.fiservPOS = new FiservPOS();
            this.fiservPOS.initialize(this.cordova, this.webView);
        }
    }

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        try {
            String result = "Sem resultado";
            String[] actionProviderList = action.split("\\.");
            String provider = actionProviderList[0];

            switch (provider.toLowerCase()) {
                case "fiserv":
                    String veroProduct = actionProviderList[1];
                    switch (veroProduct.toLowerCase()) {
                        case "fiservpos":
                            this.initializeFiservPOS();
                            String veroAction = actionProviderList[2];
                            boolean resultVeroPosExecute = this.fiservPOS.execute(veroAction, args, callbackContext);
                            return resultVeroPosExecute;
                        default:
                            break;
                    }
                default:
                    break;
            }
            callbackContext.success(result);
            return true;
        } catch (Exception e) {
            callbackContext.error("NetControllCordovaPluginsIntegration excute error: " + e.toString());
        }
        return false;
    }
}
