package cordova.plugin.netcontroll.integration;

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 NetControllCordovaPluginsIntegrationCielo extends CordovaPlugin {
    //Cielo
    public cordova.plugin.netcontroll.integration.CieloLioLocal cieloLioLocal;

    //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 initializeCieloLioLocal() {
        if (this.cieloLioLocal == null) {
            this.cieloLioLocal = new cordova.plugin.netcontroll.integration.CieloLioLocal();
            this.cieloLioLocal.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 "cielo":
                    String cieloProduct = actionProviderList[1];
                    switch (cieloProduct.toLowerCase()) {
                        case "liolocal":
                            this.initializeCieloLioLocal();
                            String cieloAction = actionProviderList[2];
                            boolean resultCieloExecute = this.cieloLioLocal.execute(cieloAction, args, callbackContext);
                            return resultCieloExecute;
                        default:
                            break;
                    }

                default:
                    break;
            }
            callbackContext.success(result);
            return true;
        } catch (Exception e) {
            callbackContext.error("NetControllCordovaPluginsIntegrationCielo excute error: " + e.toString());
        }
        return false;
    }
}
