
package com.reactlibrary;

import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

import com.vnpay.vexemphim.activity.VXPMainActivity;
import com.vnpay.vexemphim.common.VXPConstants;
import com.vnpay.vexemphim.config.VXPDefaultConfig;
import com.vnpay.vexemphim.network.VXPCancelTicketRequest;

import com.facebook.react.bridge.ActivityEventListener;
import com.facebook.react.bridge.BaseActivityEventListener;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

import org.json.JSONException;
import org.json.JSONObject;

public class RNVnpayVexemphimLibraryModule extends ReactContextBaseJavaModule {

  private Callback mResultCallback;
  private static final int REQUEST_BOOK_TICKET = 2017;
  private static final String CANCELLED = "cancelled";
  private static final String TEXT = "text";
  private static final String FORMAT = "format";
  private static final String LOG_TAG = "BarcodeScanner";

  private String licenseKey = "soaT6dF/tarqrUFwJ23kwRwfwJ81SFJ8qMp7duOIcIAmUYQVLjsB8WIdnAZiYw5IWECZL3wBqsx7rDZWmTFxR9SSm0MY22e1ygNeC373YrskH54/wJtXWQmu8giiPO2qDzKFmSj7+8Oss43DQBDPlGQWoX2jmJnn2dnnnWn5WYKXVkX3QdwTAHVccq0BQEFKRHDTs0HgI5QMyH6zx6VgYNNorCCI770LfmX2bpb2u3RQfrb0/TupmswtECyict+kjQN1Qf6Yv5c0cSIEOH086oaoMhOmY6udlKKrqAIV3P70wNgATNbMVd/w0x7gym0TVs8G1iuPUoQuVrlhDvQeNr2Sbt7QR5fd+YBT/Y+suyweo9PJnGWmFPm0a40/rSE0Y4Xg9Q8bTv9MwNX/ShTm3YhMuR60fQBDNmaQU+V7h4488DXL3v5NtaHiWlGRKucWpkTznLUVGTtbzf6uTqxqDdH4rv/1s3dqfjWa7y9IMLDxot41G+2x32yRJnk7+aC45JNJgXNaZG9mvqyMxnNkvYByMctpJAfmNkc5j0qVO+m5ZOM8DvxyHx1PcO8/Kicuq5e+Ov4kwByZGasOHSCsLoffOKlQRwJD+bgk/7SgLJ4B6l9PU7GAwwUCPFBDtUAY0UFGBF5r+wkq4eWkOPlOjKiET1GDXaquCj1iXJtdtlyHsBBchpjOu94k0JwibhsEbJAAnMLb6dbHPRng34s3lfPQx6nt+AgIKGN4oqC/24Gb";
  private String phone = "0945553000";
  private String token = "";
  private String bankToken = "";
  private String customerName = "Nguyen Trong Tu";
  private String customerEmail = "tunt2@mbbank.com.vn";
  private boolean isLive = true;


  public RNVnpayVexemphimLibraryModule(ReactApplicationContext reactContext) {
    super(reactContext);
    reactContext.addActivityEventListener(mActivityEventListener);
  }

  @Override
  public String getName() {
    return "RNVnpayVexemphimLibrary";
  }

  private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() {

    @Override
    public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent intent) {
      if (requestCode == REQUEST_BOOK_TICKET) {
        if (mResultCallback != null) {
          if (resultCode == Activity.RESULT_OK) {
            JSONObject obj = new JSONObject();
            try {
              obj.put(TEXT, intent.getStringExtra("EXTRA_DATA"));
            } catch (JSONException e) {
              Log.d(LOG_TAG, "This should never happen");
            }
            mResultCallback.invoke(obj.toString());
          } else if (resultCode == Activity.RESULT_CANCELED) {
            Toast.makeText(getReactApplicationContext(), "Cancelled", Toast.LENGTH_LONG).show();
          } else {
            Toast.makeText(getReactApplicationContext(), "Unexpected error", Toast.LENGTH_LONG).show();
          }
        }
      }
    }
  };

  @ReactMethod
  public void bookingMovieTicket(String licenseKey, Callback resultCallback, Callback errorCallback) {
    mResultCallback = resultCallback;

    Activity currentActivity = getCurrentActivity();

    if (currentActivity == null) {
      errorCallback.invoke("Activity doesn't exist");
      return;
    }

    VXPConstants.TYPE_MONEY typeMoneyFormat = VXPConstants.TYPE_MONEY.FORMAT_2;
    VXPDefaultConfig.VXPConfigBuilder vxpConfigBuilder = new VXPDefaultConfig.VXPConfigBuilder(licenseKey, phone)
            .setLanguage(VXPConstants.LANGUAGE.VN)
            .setTemplate(VXPConstants.TEMPLATE.TEMPLATE01)//theme Ä‘á»•i tuá»³ Ã½ cho Ä‘á»“ng nháº¥t á»©ng dá»¥ng
//                .setTheme(R.style.VXPAppThemeSCB)
            .setToken(token)
            /*.setActionKeyReceiverDataBooking("ve_xem_phim_my_custom_intent_filter")*/
            .setReceiverBookDataBookingInActivityResult(true)
            .setIsLive(isLive)
            .setBankToken(bankToken)
            .setCustomerName(customerName)
            .setCustomerEmail(customerEmail)
            .setTypeMoneyFormat(typeMoneyFormat);

    Error error = vxpConfigBuilder.build();

    if (error != null) {
      Log.e("VeXemPhim", error.toString());
      Toast.makeText(currentActivity, "Error: " + error.toString(), Toast.LENGTH_LONG).show();
    } else {
      VXPDefaultConfig.setConfig(vxpConfigBuilder);
      Intent intent = new Intent(currentActivity, VXPMainActivity.class);
      currentActivity.startActivityForResult(intent, REQUEST_BOOK_TICKET);
    }
  }

}