Subversion Repositories SmartDukaan

Rev

Rev 21327 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.saholic.profittill.main;

import android.app.AlertDialog;
import android.app.Fragment;
import android.app.ProgressDialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
import android.support.v4.os.AsyncTaskCompat;
import android.util.Base64;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.HttpAuthHandler;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.facebook.Session;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.plus.Plus;
import com.saholic.profittill.Constants.ProfitTillConstants;
import com.saholic.profittill.Database.OrderTransactionDetails;
import com.saholic.profittill.Network.NotificationCount;
import com.saholic.profittill.R;
import com.saholic.profittill.Utils.UtilityFunctions;
import com.testin.agent.TestinAgent;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DealsHomeFragment extends Fragment implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

    public DealsHomeFragment() {

    }

    static boolean FLAG = false, REDIRECT = false, PAGE_LOAD = false, PAYTMFLAG = false, isPause = false, Flipkartflag = false;
    int snapdealException = 0;
    static String BASIC_AUTH = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
    public static WebView webView;
    WebView amazonWebView, OrderHistoryWebView, amazonOrderHistoryWebView, amazonOrderHistoryCancelledWebView, paytmWebView;
    WebView amazonAllUrlsWebView;
    SharedPreferences userData;
    SharedPreferences apiData;
    SharedPreferences flipkartData;
    SharedPreferences.Editor userDataEditor;
    SharedPreferences.Editor apiSettingsEditor;
    SharedPreferences.Editor flipkartDataEditor;
    OrderTransactionDetails orderDetails;
    LinkedList<ArrayList<NameValuePair>> orderLinkedList;
    SharedPreferences amazonData;
    String affliateUrl;
    String landingURL;
    boolean val = false;
    String redirectUrls;
    String pageLoad;
    SharedPreferences.Editor amazonapiSettingsEditor;
    List<NameValuePair> amazonOrderTrackingData;
    int pageRedirect = 0;
    int snapdealPageLoad;
    String packageName = null;
    final ArrayList<String> redirectUrlsList = new ArrayList<String>();
    final ArrayList<String> pageLoadList = new ArrayList<String>();
    String flipkartUrl;
    View checkBoxView;
    boolean flipkartFlag;
    String saholicUrl;
    JSONObject jSaholic;
    JSONArray jsArraySaholic;
    String snapdealJavascriptUrl;
    String type1;
    ArrayList<String> orderSuccessUrlList;
    public GoogleApiClient mGoogleApiClient;
    ProgressDialog pd1 = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.action_notifications).getActionView();
        TextView notifciationCount = (TextView) badgeLayout.findViewById(R.id.inAppNotificationText);
        if (userData.getInt("notification_count", 0) != 0) {
            notifciationCount.setVisibility(View.VISIBLE);
            notifciationCount.setText(userData.getInt("notification_count", 0) + "");
        } else {
            notifciationCount.setVisibility(View.GONE);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


        View rootView = inflater.inflate(R.layout.fragment_deals_home, container, false);

        TestinAgent.init(getActivity());
        amazonData = getActivity().getSharedPreferences("Amazon_Data", Context.MODE_PRIVATE);
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
        flipkartData = getActivity().getSharedPreferences("Flipkart_Data", Context.MODE_PRIVATE);
        userDataEditor = userData.edit();
        apiSettingsEditor = apiData.edit();
        TestinAgent.setUserInfo(userData.getString("id", ""));
        amazonapiSettingsEditor = amazonData.edit();
        flipkartDataEditor = flipkartData.edit();
        affliateUrl = getArguments().getString("key");
        orderDetails = new OrderTransactionDetails(getActivity());

        orderSuccessUrlList = new ArrayList<String>();
        String issues = apiData.getString("list.order.success.url", "blank");
        StringTokenizer st2 = new StringTokenizer(issues, "|");

        while (st2.hasMoreElements()) {
            orderSuccessUrlList.add(st2.nextToken());
        }
        if (isInternetOn()) {
            if (orderDetails.countTotalRecords() > 0) {
                sendQueuedResponse();
            }
            type1 = userData.getString("type", null);
            if (type1 != null && type1.equalsIgnoreCase("google")) {
                mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                        .addConnectionCallbacks(this)
                        .addOnConnectionFailedListener(this).addApi(Plus.API)
                        .addScope(Plus.SCOPE_PLUS_LOGIN).build();
                mGoogleApiClient.connect();
            }
            redirectUrls = apiData.getString("profitmandi.redirect.urls", "");
            StringTokenizer st = new StringTokenizer(redirectUrls, "|");
            while (st.hasMoreTokens()) {
                redirectUrlsList.add(st.nextToken());
            }
            pageLoad = apiData.getString("profitmandi.pageloads.pattern", "");
            StringTokenizer st1 = new StringTokenizer(pageLoad, "|");
            while (st1.hasMoreTokens()) {
                pageLoadList.add(st1.nextToken());
            }
            WebClientClass webViewClient = new WebClientClass();
            if (webView != null) {
                webView.loadUrl("about:blank");
            }
            webView = (WebView) rootView.findViewById(R.id.webView);
            webView.setClickable(true);
            webView.setFocusableInTouchMode(true);
            webView.getSettings().setDomStorageEnabled(true);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.addJavascriptInterface(new javascriptInterface(getActivity()), "HTMLOUT");
            webView.getSettings().setSavePassword(true);
            CookieManager cookieManager = CookieManager.getInstance();
            cookieManager.setAcceptCookie(true);

            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
                webView.getSettings().setAllowContentAccess(true);
                CookieManager cookieManager1 = CookieManager.getInstance();
                cookieManager1.setAcceptThirdPartyCookies(webView, true);
            }
            if (Uri.parse(getArguments().getString("key")).getHost().contains("api.profittill")) {
                userDataEditor.putString("saholic.data", UtilityFunctions.clearCookiesNew(getArguments().getString("key"), getActivity())).commit();
            }
            String url = getArguments().getString("key");
            if (Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
                CookieSyncManager.createInstance(getActivity());
                CookieManager cookieManager1 = CookieManager.getInstance();
                cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
                cookieManager1.setCookie(url, "walletAuthentication=true");
                cookieManager1.setCookie(url, "shopcluesActive=true");
                cookieManager1.setCookie(url, "paytmActive=true");
                cookieManager1.setCookie(url, "shareApps=true");
                cookieManager1.setCookie(url, "homeshop18=true");
                cookieManager1.setCookie(url, "isRedirect=true");
            }
            if (!(userData.getBoolean("paytmLoggedIn", false))) {
                Log.d("User Not Logged In", "User Not logged In");
            } else {
                if (userData.getString("paytmOrder", "").equalsIgnoreCase("true")) {
                    long nextFetchTime = userData.getLong("paytmNextFetchTime", 0);
                    if (nextFetchTime == 0 || nextFetchTime < System.currentTimeMillis()) {
                        if (isInternetOn()) {
                            new PaytmOrderURL().execute();
                        }
                    } else {
                        Log.d("Paytm False", "Paytm Time False");
                    }
                } else {
                    Log.d("Paytm False", "Paytm False No orders");
                }
            }
            if (!(userData.getBoolean("amazonLoggedIn", false))) {
                Log.d("Not In Amazon", "Amazon");
            }
            else {
                if (userData.getString("amazonOrder", "").equalsIgnoreCase("true")) {
                    long nextFetchTime = userData.getLong("amazonNextFetchTime", 0);
                    if (nextFetchTime == 0 || nextFetchTime < System.currentTimeMillis()) {
                        if (isInternetOn()) {
                            new FetchOrderURLS().execute();
                        }
                    } else {
                        Log.d("Amazon False", "Amazon Time False" + userData.getLong("amazonNextFetchTime", 0));
                    }
                } else {
                    Log.d("Amazon False", "Amazon False No orders");
                }
            }
            webView.loadUrl(url);
            webView.setWebViewClient(webViewClient);

        } else {
            SearchFragment nextFrag = new SearchFragment();
            Bundle args = new Bundle();
            args.putString("finishingurl", getArguments().getString("key"));
            args.putString("fragmentNumber", "1");
            nextFrag.setArguments(args);
            getActivity().getFragmentManager().beginTransaction()
                    .replace(R.id.frame_container, nextFrag)
                    .addToBackStack(null)
                    .commit();
        }
        return rootView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }

    JSONObject obj;

    @Override
    public void onConnected(Bundle bundle) {

    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {

    }

    public class WebClientClass extends WebViewClient {
        ProgressDialog pd = null;

        ProgressDialog pd2 = null;


        @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              HttpAuthHandler handler, String host, String realm) {

            handler.proceed("dtr", "dtr18Feb2015");
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if (apiData.getString("snapdealException", "false").equalsIgnoreCase("true")) {
                List<String> snapdealExceptionUrls = new ArrayList<>();
                StringTokenizer st = new StringTokenizer(apiData.getString("snapdeal.exception.urls", ""), "|");
                while (st.hasMoreTokens()) {
                    snapdealExceptionUrls.add(st.nextToken());
                }
                try {
                    Log.d("Count", "Count " + apiData.getString("snapdeal.exception.count", "1"));
                    for (String s : snapdealExceptionUrls) {
                        if (url.contains(s)) {
                            if (snapdealException <= Integer.parseInt(apiData.getString("snapdeal.exception.count", "1"))) {
                                webView.reload();
                                snapdealException += 1;
                            }
                            return false;
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (apiData.getString("isRedirect", "false").equalsIgnoreCase("true")) {
                List<String> browserRedirectUrl = new ArrayList<>();
                StringTokenizer st = new StringTokenizer(apiData.getString("redirect.urls", ""), "|");
                while (st.hasMoreTokens()) {
                    browserRedirectUrl.add(st.nextToken());
                }
                for (String s : browserRedirectUrl) {
                    if (url.contains(s)) {
                        isPause = true;
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                        startActivity(intent);
                        return true;
                    }
                }
            }
            if (url.contains("apprub")) {
                onShareClick(url);
                return true;
            }
            if (url.contains(apiData.getString("wallet.auth", "api.profittill.com/special/native/login")) || userData.getString("id", "").isEmpty()) {
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
                android.webkit.CookieSyncManager.createInstance(getActivity());
                cookieManager.removeAllCookie();
                AlertDialog alert;
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                builder.setMessage(apiData.getString("wallet.auth.message", "You are not authenticated. Please log in again")).setCancelable(false);
                alert = builder.create();
                alert.show();
                try {
                    if (mGoogleApiClient.isConnected()) {
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
                        mGoogleApiClient.disconnect();
                        mGoogleApiClient.connect();
                        redirectPage(alert);
                    } else if (Session.getActiveSession() != null) {
                        Session.getActiveSession().closeAndClearTokenInformation();
                        Session.setActiveSession(null);
                        redirectPage(alert);
                    } else {
                        if (!mGoogleApiClient.isConnected() || Session.getActiveSession() == null) {
                            redirectPage(alert);
                        }
                    }
                } catch (Exception e) {
                    redirectPage(alert);
                }
                return true;
            }
            if (url.contains("com.saholic.profittill")) {
                Intent intent = null;
                try {
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getActivity().getPackageName()));
                } catch (android.content.ActivityNotFoundException anfe) {
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getActivity().getPackageName()));
                }
                startActivity(intent);
                return true;
            }
            if (snapdealPageLoad == 1) {
                pd2 = new ProgressDialog(getActivity());
                pd2.setMessage("Wait for a moment and click again.");
                pd2.setProgress(view.getProgress());
                pd2.show();
                return true;
            }
            if (url.startsWith("tel")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
            if (url.contains(apiData.getString("contactus.url", ""))) {
                Intent i = new Intent(getActivity(), MainActivity.class);
                i.putExtra("displayView", "6");
                startActivity(i);
                return true;
            }
            if (url.contains(apiData.getString("howitworks.url", ""))) {
                Intent i = new Intent(getActivity(), MainActivity.class);
                i.putExtra("displayView", "7");
                startActivity(i);
                return true;
            }
            if (url.contains(apiData.getString("myprofile.url", "http://api.profittill.com/aboutus/profile"))) {
                Intent i = new Intent(getActivity(), MainActivity.class);
                i.putExtra("displayView", "15");
                startActivity(i);
                return true;
            }
            return false;

        }

        @Override
        public synchronized void onPageStarted(final WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            final CharSequence[] items = {" Don't show me again "};
            final ArrayList seletedItems = new ArrayList();
            try {
                if (Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
                    CookieSyncManager.createInstance(getActivity());
                    CookieManager cookieManager = CookieManager.getInstance();
                    cookieManager.setCookie(url, "token=" + userData.getString("token", ""));
                    cookieManager.setCookie(url, "walletAuthentication=true");
                    cookieManager.setCookie(url, "shopcluesActive=true");
                    cookieManager.setCookie(url, "paytmActive=true");
                    cookieManager.setCookie(url, "shareApps=true");
                    cookieManager.setCookie(url, "homeshop18=true");
                    cookieManager.setCookie(url, "isRedirect=true");
                }
                if (false) {
                    flipkartUrl = url;

                    if (flipkartData.getInt("showagainflag", 0) < 3) {
                        AlertDialog dialog;
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
                                .setView(checkBoxView)
                                .setCancelable(false)
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        int i = flipkartData.getInt("showagainflag", 0);
                                        flipkartDataEditor.putInt("showagainflag", ++i);
                                        flipkartDataEditor.commit();
                                        Intent flipkartIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
                                        startActivity(flipkartIntent);
                                    }
                                })
                                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int id) {
                                        view.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));

                                    }
                                });
                        dialog = builder.create();
                        dialog.show();
                    } else if (flipkartData.getInt("showagainflag", 0) == 3) {
                        AlertDialog dialog;
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                        checkBoxView = View.inflate(getActivity(), R.layout.checkboxlayout, null);
                        CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
                        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

                            @Override
                            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                                flipkartFlag = isChecked;
                            }
                        });
                        checkBox.setText("Don't show me again");
                        builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
                                .setView(checkBoxView)
                                .setCancelable(false)
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        if (flipkartFlag) {
                                            int i = flipkartData.getInt("showagainflag", 0);
                                            flipkartDataEditor.putInt("showagainflag", ++i);
                                            flipkartDataEditor.commit();
                                        }
                                        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
                                        startActivity(i);
                                    }
                                })
                                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int id) {
                                        view.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));

                                    }
                                });
                        dialog = builder.create();
                        dialog.show();
                    } else {
                        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
                        startActivity(i);
                    }
                    view.stopLoading();
                } else {
                    for (String s : pageLoadList) {
                        if (url.contains(s)) {
                            PAGE_LOAD = true;
                        }
                    }
                    if (PAGE_LOAD) {
                        snapdealPageLoad = 1;
                        PAGE_LOAD = false;
                    } else {
                        snapdealPageLoad = 0;
                        for (String s : redirectUrlsList) {
                            if (url.contains(s)) {
                                REDIRECT = true;
                                break;
                            }
                        }
                        if (REDIRECT) {
                            pageRedirect = 2;
                            REDIRECT = false;
                        } else if (pageRedirect == 2 || pageRedirect == 1) {
                            Toast.makeText(getActivity(), "Redirecting to deals...", Toast.LENGTH_SHORT).show();
                            Intent i = new Intent(getActivity(), MainActivity.class);
                            i.putExtra("displayView", "31");
                            i.putExtra("redirectUrl", apiData.getString("redirect.url", "") + "?user_id=" + userData.getString("id", ""));
                            startActivity(i);
                            pageRedirect = 0;
                        } else {
                            landingURL = url;
                            if (url.contains(apiData.getString("mobile.website.url", "")) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals") || url.contains(apiData.getString("notification.page.url", "http://api.profittill.com/users/usernotification"))) {
                                pd = new ProgressDialog(getActivity());
                                pd.setTitle("Please wait");
                                pd.setMessage("Loading..");
                                pd.show();
                            }
                            getOrderSuccessUrlConfirmation(url);
                            if (displayActionBar) {
                                pd1 = new ProgressDialog(getActivity());
                                pd1.setTitle("Please wait");
                                pd1.setMessage("Loading..");
                                pd1.show();
                            }
                        }
                    }
                    if (Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data", "false").equalsIgnoreCase("true")) {

                    }
                    else {
                        JSONObject j = new JSONObject();
                        JSONArray jsArray = new JSONArray();
                        j.put("url", url);
                        j.put("user_id", userData.getString("id", null));
                        j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                        jsArray.put(j);
                        AsyncTaskCompat.executeParallel(new pushData(), new JSONObject().put("pushdata", jsArray));
                    }
                    storeSubTagId(url);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
            if (getActivity() != null) {
                SearchFragment nextFrag = new SearchFragment();
                Bundle args = new Bundle();
                args.putString("finishingurl", failingUrl);
                nextFrag.setArguments(args);
                getActivity().getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, nextFrag)
                        .addToBackStack(null)
                        .commit();
            }
        }

        @Override
        public synchronized void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            try {
                if (url.equalsIgnoreCase("about:blank")) {
                    Log.d("Blankl Url", "Blank Url");
                } else {
                    if (getActivity() != null) {
                        if (url.contains(apiData.getString("notification.page.url", "http://api.profittill.com/users/usernotification"))) {
                            String notificationUrl = apiData.getString("notification.count", "http://45.33.50.227:3001/getNotificationCount") + "?user_id=" + userData.getString("id", "") + "&android_id=" + UtilityFunctions.androidId(getActivity());
                            new NotificationCount().getCount(getActivity(), null, notificationUrl);
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    getActivity().invalidateOptionsMenu();
                                }
                            }, 1000);
                        }
                    }
                    if (apiData.getString("snapdealException", "true").equalsIgnoreCase("true")) {
                        List<String> snapdealExceptionUrlsPass = new ArrayList<>();
                        StringTokenizer st = new StringTokenizer(apiData.getString("snapdeal.exception.urls.pass", ""), "|");
                        while (st.hasMoreTokens()) {
                            snapdealExceptionUrlsPass.add(st.nextToken());
                        }
                        for (String s : snapdealExceptionUrlsPass) {
                            if (url.contains(s)) {
                                snapdealException = 0;
                            }
                        }
                    }
                    if (url.contains(apiData.getString("mobile.website.url", "")) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals") || url.contains(apiData.getString("notification.page.url", "http://api.profittill.com/users/usernotification"))) {
                        pd.dismiss();
                    }
                    if (snapdealPageLoad == 1) {
                        snapdealPageLoad = 0;
                    }
                    if (pd2 != null) {
                        pd2.dismiss();
                    }
                    if (Uri.parse(url).getHost().equalsIgnoreCase("paytm.com")) {
                        view.loadUrl("javascript:try{" +
                                "var lastUrl=document.URL;" +
                                "setInterval(function(){var currentUrl=document.URL;" +
                                "if(currentUrl!=lastUrl){window.HTMLOUT.paytmUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
                                "}catch(error){Android.onError(error.message);}");
                    }
                    if (Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data", "false").equalsIgnoreCase("true")) {
                        saholicUrl = url;
                        view.loadUrl("javascript:window.HTMLOUT.saholicHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
                    }
                    if (url.contains(apiData.getString("amazon.tracking.order.url", ""))) {
                        fetchOrderDetails();
                    }
                    if (displayActionBar) {
                        if (url.contains("amazon")) {
                            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
                            pd1.dismiss();
                            amazonWebView = new WebView(webView.getContext());
                            amazonWebView.setVisibility(View.GONE);
                            amazonWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
                            amazonWebView.getSettings().setJavaScriptEnabled(true);

                        } else if (url.contains(ProfitTillConstants.PAYTM)) {
                            PaytmWebViewClient paytmWebViewClient = new PaytmWebViewClient();
                            pd1.dismiss();
                            paytmWebView = new WebView(webView.getContext());
                            paytmWebView.setVisibility(View.GONE);
                            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
                            paytmWebView.getSettings().setJavaScriptEnabled(true);
                            paytmWebView.loadUrl(getPaytmReferer(url));
                            paytmWebView.setWebViewClient(paytmWebViewClient);
                        } else {
                            view.loadUrl("javascript:window.HTMLOUT.flipkartHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

                        }
                    }

                    amazonOrderHistoryWebView = new WebView(webView.getContext());
                    amazonOrderHistoryWebView.setVisibility(View.GONE);
                    amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
                    amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
                    amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");

                    amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
                    amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
                    amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
                    amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
                    amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");

                    amazonAllUrlsWebView = new WebView(webView.getContext());
                    amazonAllUrlsWebView.setVisibility(View.GONE);
                    amazonAllUrlsWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
                    amazonAllUrlsWebView.getSettings().setJavaScriptEnabled(true);
                    amazonAllUrlsWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");

                    if (url.contains("https://www.amazon.in/ap/signin")) {
                        if (!FLAG) {
                            FLAG = true;
                            userDataEditor.putString("amazonOrder", "true").commit();
                            userDataEditor.putBoolean("amazonLoggedIn", true).commit();
                        }
                    } else if (FLAG) {
                        view.loadUrl("javascript:try{" +
                                "var lastUrl=document.URL;" +
                                "setInterval(function(){var currentUrl=document.URL;" +
                                "if(currentUrl!=lastUrl){window.HTMLOUT.amazonUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
                                "}catch(error){Android.onError(error.message);}");
                        amazonOrderHistoryWebView = new WebView(webView.getContext());
                        amazonOrderHistoryWebView.setVisibility(View.GONE);
                        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
                        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
                        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
                        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
                        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
                        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
                        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
                        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
                        fetchOrderDetails();
                        FLAG = false;
                    }

                    if (url.contains("flipkart")) {
                        if (Flipkartflag) {
                            if (!url.contains("https://www.flipkart.com/login")) {
                                processFlipkartHtml();
                                Flipkartflag = false;
                            }
                        }
                      else if(url.contains("https://www.flipkart.com/rv/orderConfirmation")){
                        processFlipkartHtml();
                        }
                        else {
                            view.loadUrl("javascript:try{" +
                                    "var lastUrl=document.URL;" +
                                    "setInterval(function(){var currentUrl=document.URL;" +
                                    "if(currentUrl!=lastUrl){window.HTMLOUT.flipkartUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
                                    "}catch(error){Android.onError(error.message);}");
                        }

                    }


                    view.setOnKeyListener(new View.OnKeyListener() {
                        @Override
                        public boolean onKey(View v, int keyCode, KeyEvent event) {
                            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                WebView webView = (WebView) v;
                                switch (keyCode) {
                                    case KeyEvent.KEYCODE_BACK:
                                        if ((webView.canGoBack() && !webView.getUrl().contains(apiData.getString("mobile.website.url", null))) || pageRedirect == 2) {
                                            webView.goBack();
                                            pageRedirect = 0;
                                            snapdealPageLoad = 0;
                                            return true;
                                        } else if (affliateUrl.contains("flipkart") || affliateUrl.contains("amazon") || affliateUrl.contains("snapdeal") || affliateUrl.contains("saholic") || affliateUrl.contains(apiData.getString("myorders.url", "")) || affliateUrl.contains(apiData.getString("search.url", ""))) {
                                            Intent i = new Intent(getActivity(), MainActivity.class);
                                            i.putExtra("displayView", "0");
                                            startActivity(i);
                                            return true;
                                        } else if (webView.getUrl().contains(apiData.getString("mobile.website.url", null))) {
                                            new AlertDialog.Builder(getActivity())
                                                    .setIcon(android.R.drawable.ic_dialog_alert)
                                                    .setTitle("Exit!")
                                                    .setMessage("Are you sure you want to close?")
                                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                                        @Override
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            Intent startMain = new Intent(Intent.ACTION_MAIN);
                                                            startMain.addCategory(Intent.CATEGORY_HOME);
                                                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                                                            startActivity(startMain);
                                                        }

                                                    })
                                                    .setNegativeButton("No", null)
                                                    .show();
                                        } else {
                                            Intent i = new Intent(getActivity(), MainActivity.class);
                                            i.putExtra("displayView", "0");
                                            startActivity(i);
                                            return true;
                                        }

                                        break;
                                }
                            }
                            return false;
                        }
                    });
                }
            } catch (Exception e) {
                e.printStackTrace();
                TestinAgent.uploadException(getActivity(), "On Page Finished", e);
            }
        }
    }

    private void processFlipkartHtml() {
        FlipkartWebview fkView = new FlipkartWebview();
        amazonOrderHistoryWebView = new WebView(webView.getContext());
        amazonOrderHistoryWebView.setVisibility(View.GONE);
        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36");
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
        amazonOrderHistoryWebView.addJavascriptInterface(new javascriptInterface(getActivity()), "HTMLOUT");
        amazonOrderHistoryWebView.loadUrl(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"));
        amazonOrderHistoryWebView.setWebViewClient(fkView);
    }

    class ProcessFlipkartHtml extends AsyncTask<String, Integer, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
       @Override
       protected String doInBackground(String... arg0) {
           try {
               HttpClient httpclient = new DefaultHttpClient();
               HttpPost httppost = new HttpPost(apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "")), "flipkart"));
               httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsRawHtml));
               HttpResponse response = httpclient.execute(httppost);
               HttpEntity entity = response.getEntity();
               int status = response.getStatusLine().getStatusCode();

               JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
               JSONObject jobj =jObjGmail.getJSONObject("result");
               JSONObject headers = jobj.getJSONObject("headers");
               JSONArray url =jobj.getJSONArray("urls");
               for (int i = 0; i <url.length(); i++) {
                   HttpClient client = new DefaultHttpClient();
                   HttpGet get = new HttpGet(url.getString(i));
                   Map<String, String> map = new HashMap<String, String>();
                   Iterator iter = headers.keys();
                   while (iter.hasNext()) {
                       String key = (String) iter.next();
                       String value = headers.getString(key);
                       get.setHeader(key, value);
                   }
                   HttpResponse resp = client.execute(get);
                   HttpEntity ent = resp.getEntity();
                   JSONObject jOb = new JSONObject(EntityUtils.toString(ent));

                   HttpClient http = new DefaultHttpClient();
                   ArrayList<NameValuePair> namevaluepairs = new ArrayList<>();
                   namevaluepairs.add(new BasicNameValuePair("html",UtilityFunctions.compress(jOb.toString())));
                   namevaluepairs.add(new BasicNameValuePair("url", url.getString(i)));
                   namevaluepairs.add(new BasicNameValuePair("zip","1"));
                   HttpPost post = new HttpPost(apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "")), "flipkart"));
                   post.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                   post.setEntity(new UrlEncodedFormEntity(namevaluepairs));
                   HttpResponse res = http.execute(post);
                   int sta = res.getStatusLine().getStatusCode();
               }

           }
           catch (Exception e) {
               e.printStackTrace();
               return null;
           }
           return null;
       }
        @Override
        protected void onPostExecute(String jsonObject) {
            super.onPostExecute(jsonObject);



        }}

    @Override
    public void onResume() {
        super.onResume();
        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
                    try {
                        if (landingURL.contains((apiData.getString("mobile.website.url", "")))) {
                            new AlertDialog.Builder(getActivity())
                                    .setIcon(android.R.drawable.ic_dialog_alert)
                                    .setTitle("Exit!")
                                    .setMessage("Are you sure you want to close?")
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            Intent startMain = new Intent(Intent.ACTION_MAIN);
                                            startMain.addCategory(Intent.CATEGORY_HOME);
                                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                                            startActivity(startMain);
                                        }

                                    })
                                    .setNegativeButton("No", null)
                                    .show();
                            return true;
                        } else {
                            if (webView.canGoBack()) {
                                webView.goBack();
                            } else {
                                Intent i = new Intent(getActivity(), MainActivity.class);
                                i.putExtra("displayView", "0");
                                startActivity(i);
                            }
                            return true;

                        }

                    } catch (Exception e) {
                        e.printStackTrace();
                        return false;
                    }
                }
                return false;
            }

        });
    }


    public void fetchOrderDetails() {
        if (isInternetOn()) {
            new FetchOrderURLS().execute();
        }
    }

    public void pushDataInAmazon(String orderId) {

        AmazonOrderDetails amazonOrderClient = new AmazonOrderDetails();
        nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("id", orderId));
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("store_id", apiData.getString("store.code.amazon", null)));
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("order_url", amazonData.getString("amazonurl", "")));
        //nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
        amazonWebView.loadUrl(amazonData.getString("amazonurl", ""));
        amazonWebView.setWebViewClient(amazonOrderClient);

    }

    public void storeSubTagId(String url) {

        if (url.contains(apiData.getString("store.subtag.snapdeal", null)) || url.contains(apiData.getString("store.subtag.flipkart", null)) || url.contains(apiData.getString("store.subtag.amazon", null)) || url.contains(apiData.getString("store.subtag.shopclues", "UID")) || url.contains(apiData.getString("store.subtag.paytm", "utm_term"))) {
            StringTokenizer st2 = new StringTokenizer(url, "&");
            while (st2.hasMoreElements()) {
                String token = st2.nextToken();
                if (token.contains(apiData.getString("store.subtag.snapdeal", null)) || token.contains(apiData.getString("store.subtag.flipkart", null)) || token.contains(apiData.getString("store.subtag.amazon", null)) || token.contains(apiData.getString("store.subtag.shopclues", "UID")) || token.contains(apiData.getString("store.subtag.paytm", "utm_term"))) {
                    String subtagId = userData.getString("subtag", "null");
                    if (subtagId == null) {
                        userDataEditor.putString("subtag", token.split("=")[1]);
                        userDataEditor.commit();
                    } else {
                        userDataEditor.remove("subtag");
                        userDataEditor.commit();
                        userDataEditor.putString("subtag", token.split("=")[1]);
                        userDataEditor.commit();
                    }
                } else
                    continue;
            }
        } else
            return;
    }


    boolean displayActionBar;

    public void getDisplayActionBar(String url) throws Exception {
        String snapdealConfirmation = apiData.getString("snapdeal.order.success.url", null);
        String flipkartConfirmation = apiData.getString("flipkart.order.success.url", null);
        String amazonConfirmation = apiData.getString("amazon.order.success.url", null);
        String amazonThankYouConfirmation = apiData.getString("amazon.order.success.thankyou.url", null);
        String saholicConfirmation = apiData.getString("saholic.order.success.url", null);
        if (url.contains(snapdealConfirmation) || url.contains(flipkartConfirmation) || url.contains(amazonConfirmation) || url.contains(amazonThankYouConfirmation) || url.contains(saholicConfirmation)) {
            displayActionBar = true;
            String storeID = getStoreId(url);
            if (storeID == null) {
                Log.e("Deals Page Activity", "Null value returned for storeID");
            } else {
                nameValuePairsRawHtml = new ArrayList<NameValuePair>();
                nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
                nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
                nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", null)));
            }
        } else {
            displayActionBar = false;
        }
        return;
    }

    public void getOrderSuccessUrlConfirmation(String url) throws Exception {
        for (String s : orderSuccessUrlList) {
            if (url.contains(s)) {
                displayActionBar = true;
                String storeID = getStoreId(url);
                if (storeID == null) {
                    Log.e("Deals Page Activity", "Null value returned for storeID");
                } else {
                    nameValuePairsRawHtml = new ArrayList<NameValuePair>();
                    nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
                    nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
                    nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
                    nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", "")));
                }
                break;
            } else {
                displayActionBar = false;
            }
        }
        return;
    }

    public String getStoreId(String url) {
       /* if(url.contains("snapdeal")){
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.snapdeal","0"));
            return apiData.getString("store.code.snapdeal",null);
        }
        else if(url.contains("flipkart")){
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.flipkart","0"));
            return apiData.getString("store.code.flipkart",null);
        }
        else if(url.contains("amazon")){
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.amazon","0"));
            return apiData.getString("store.code.amazon",null);
        }
        else if(url.contains("saholic")){
            return apiData.getString("store.code.spice",null);
        }
        else if(url.contains("shopclues")){
            return "7";
        }*/
        return UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "amazon=1,flipkart=2,snapdeal=3,saholic=4,shopclues=5,")), url);
    }

    class pushData extends AsyncTask<JSONObject, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(JSONObject... objs) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
                nameValuePairs.add(new BasicNameValuePair("pushdata", objs[0].toString()));
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
                httppost.setHeader("Authorization", BASIC_AUTH);

                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    return "success";
                } else {
                    return "failure";
                }

            } catch (ClientProtocolException e) {
                return "failure";
            } catch (IOException e) {
                return "failure";
            }
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        }
    }

    ArrayList<NameValuePair> nameValuePairsRawHtml = new ArrayList<NameValuePair>();
    ArrayList<NameValuePair> nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();

    class javascriptInterface {

        Context mContext;

        /**
         * Instantiate the interface and set the context
         */
        public javascriptInterface(Context c) {
            mContext = c;
        }

        /**
         * Show a toast from the web page
         */
        @JavascriptInterface
        public void showToast(String toast) {
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
            postDataNameValuePair = orderDetails.readData1();
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
                orderDetail.add(new BasicNameValuePair("zip", "1"));
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
                PushRawHTML pm = new PushRawHTML();
                pm.execute(orderDetail);
            }
        }

        @JavascriptInterface
        public void amazonOrderTrackingHTML(String html) {
            amazonOrderTrackingData.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
            amazonOrderTrackingData.add(new BasicNameValuePair("zip", "1"));
            amazonOrderTrackingData.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            amazonOrderTrackingData.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            amazonOrderTrackingData.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            new AmazonOrderTrackingDetails().execute(amazonOrderTrackingData);
        }

        @JavascriptInterface
        public void showHTML(String html) {

            showToast(html);
        }

        @JavascriptInterface
        public void flipkartHTML(String html) {
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
            postDataNameValuePair = orderDetails.readData1();
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
                orderDetail.add(new BasicNameValuePair("zip", "1"));
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
                new loadData().execute(orderDetail);
            }
        }

        @JavascriptInterface
        public void orderpage(String html) {

            nameValuePairsRawHtml.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
            nameValuePairsRawHtml.add(new BasicNameValuePair("url",apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts")));
            nameValuePairsRawHtml.add(new BasicNameValuePair("zip","1"));
            new ProcessFlipkartHtml().execute();
        }

        @JavascriptInterface
        public void saholicHTML(String html) {

            try {
                obj = new JSONObject();
                jSaholic = new JSONObject();
                jSaholic.put("html", UtilityFunctions.compress(html));
                jSaholic.put("zip", "1");
                jSaholic.put("user_id", userData.getString("id", null));
            } catch (Exception e) {

            }
            new checkGateWayProblem().execute(saholicUrl);
        }

        @JavascriptInterface
        public void amazonUrls(String url) {
            try {
                obj = new JSONObject();
                JSONObject j = new JSONObject();
                JSONArray jsArray = new JSONArray();
                j.put("url", url);
                j.put("user_id", userData.getString("id", null));
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                jsArray.put(j);
                obj.put("pushdata", jsArray);
                new pushData().execute(obj);
            } catch (Exception e) {
                e.printStackTrace();
            }

            try {
                getOrderSuccessUrlConfirmation(url);
                if (displayActionBar) {
                    fetchAmazonOrder(url);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @JavascriptInterface
        public void paytmUrls(String html) {
            try {
                obj = new JSONObject();
                JSONObject j = new JSONObject();
                JSONArray jsArray = new JSONArray();
                j.put("url", html);
                j.put("user_id", userData.getString("id", null));
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                jsArray.put(j);
                obj.put("pushdata", jsArray);
                new pushData().execute(obj);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (html.contains("https://paytm.com/login")) {
                if (!PAYTMFLAG) {
                    PAYTMFLAG = true;
                    userDataEditor.putString("paytmOrder", "true").commit();
                    userDataEditor.putBoolean("paytmLoggedIn", true).commit();
                }
            } else if (PAYTMFLAG) {
                new PaytmOrderURL().execute();
                PAYTMFLAG = false;
            }

        }

        @JavascriptInterface
        public void flipkartUrls(String url) {
            try {
                obj = new JSONObject();
                JSONObject j = new JSONObject();
                JSONArray jsArray = new JSONArray();
                j.put("url", url);
                j.put("user_id", userData.getString("id", null));
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                jsArray.put(j);
                obj.put("pushdata", jsArray);
                new pushData().execute(obj);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (url.contains("https://www.flipkart.com/login")) {
                Flipkartflag = true;
                userDataEditor.putString("flipkartOrder", "true").commit();
                userDataEditor.putBoolean("flipkartLoggedIn", true).commit();
            }
        }
    }

    class loadData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {


            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);

                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();

                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    NameValuePair y = orderDetail[0].get(2);
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
                } else {
                    Log.d("Status in load Data ", "Status Load data " + status);

                }
                String getJSON = EntityUtils.toString(entity);
                if (getJSON == null) {
                    return null;
                } else {
                    JSONObject jObjGmail = new JSONObject(getJSON);
                    return jObjGmail;
                }
            } catch (Exception e) {
                return null;
            }
        }


        @Override
        protected void onPostExecute(JSONObject result) {
            if (result == null) {
                //Log.d("Error in fetching result ", "Flipkart html ");
            } else {
                try {
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
                        orderDetails.deleterecords();
                } catch (Exception e) {
                }
            }
            super.onPostExecute(result);
        }
    }

    class AmazonOrderDetails extends WebViewClient {

        @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              HttpAuthHandler handler, String host, String realm) {

            handler.proceed("dtr", "dtr18Feb2015");

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            super.onPageFinished(view, url);
        }
    }

    class amazonInterface {

        Context mContext;

        /**
         * Instantiate the interface and set the context
         */
        public amazonInterface(Context c) {
            mContext = c;
        }

        /**
         * Show a toast from the web page
         */
        @JavascriptInterface
        public void showToast(String toast) {
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("zip", "1"));
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            if (isInternetOn()) {
                new amazonPushData().execute(nameValuePairsRawHtmlAmazon);
            }
        }


        @JavascriptInterface
        public void showHTML(String html) {
            showToast(html);
        }

        @JavascriptInterface
        public void orderHistory(String html) {
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(0)));
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            if (isInternetOn()) {
                new pushQueuedData().execute(amazonOrderHistory);
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
            }
        }

        @JavascriptInterface
        public void cancelledHistory(String html) {
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(j++)));
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            if (isInternetOn()) {
                new pushCancelledQueuedData().execute(amazonOrderHistory);
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
            }
        }

        @JavascriptInterface
        public void amazonOrderUrls(String html) {
            //Log.e("OrderUrls","Order amazonOrderUrls" + html);
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(1)));
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            if (isInternetOn()) {
                new pushCancelledQueuedData().execute(amazonOrderHistory);
            } else {

            }
        }

    }

    int j;

    class amazonPushData extends AsyncTask<List<NameValuePair>, Integer, String> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            Log.e("Pre execute", "Pre execute");

        }

        @Override
        protected String doInBackground(List<NameValuePair>... orderDetail) {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    System.out.println("ResponseCode of record: " + status + " is " + status);
                    NameValuePair y = orderDetail[0].get(2);
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
                    amazonapiSettingsEditor.remove("amazonurl");
                    amazonapiSettingsEditor.commit();
                } else {
                    /*Log.d("ResponseCode",status+"");
                    System.out.println(" NOT Transfered");
                    Log.d("ResponseCode",status+"");*/
                }
/*                Log.e("pass 1", "Amazon success ");*/
            } catch (Exception e) {
/*                Log.e("Fail 1", e.toString());*/

            }
            return "success";
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            new FetchOrderURLS().execute();
        }
    }


    class PushRawHTML extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {

            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    NameValuePair y = orderDetail[0].get(2);
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
                } else {
                }
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));

                return jObjGmail;
            } catch (Exception e) {
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                userDataEditor.putString("amazonOrder", "true").commit();
                userDataEditor.putBoolean("amazonLoggedIn", true).commit();
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
                if (result.getString("htmlRequired").equalsIgnoreCase("true")) {
                    String orderId = result.getString("orderId");
                    amazonapiSettingsEditor.putString("amazonurl", result.getString("url"));
                    amazonapiSettingsEditor.commit();
                    pushDataInAmazon(orderId);
                }
            } catch (Exception e) {

            }
        }
    }

    class AmazonOrderTrackingDetails extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... arg0) {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                } else {
                }
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                return jObjGmail;

            } catch (Exception e) {
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
        }
    }

    class pushQueuedData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {

            try {
                HttpClient httpclient = new DefaultHttpClient();
                //Get store id
               // NameValuePair nvp = pushOrder[1].get(0);
                //String storeId = nvp.getValue();

                String fetchUrl = apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
                HttpPost httppost = new HttpPost(fetchUrl);
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                return jObjGmail;

            } catch (Exception e) {
                return null;
            }

        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                if (result == null) {

                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
                    userDataEditor.putBoolean("amazonLoggedIn", false).commit();
                } else {
                    addOrderHistoryCancelled(str.get(1));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    class pushCancelledQueuedData extends AsyncTask<List<NameValuePair>, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(List<NameValuePair>... pushOrder) {

            try {
                HttpClient httpclient = new DefaultHttpClient();

                String fetchUrl = apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
                HttpPost httppost = new HttpPost(fetchUrl);
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();

                return "success";
            } catch (Exception e) {
                return "failure";
            }

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            try {
                addOrderHistoryCancelled(str.get(++sizeList));
            } catch (Exception e) {
                e.printStackTrace();
            }
            FLAG = false;
        }
    }

    int sizeList;

    class FetchOrderURLS extends AsyncTask<String, Integer, JSONObject> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                String fetchUrl = apiData.getString("amazon.order.tracking.get.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
                HttpGet httppost = new HttpGet(fetchUrl);

                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                return jObjGmail;

            } catch (ClientProtocolException e) {
                return null;
            } catch (IOException e) {
                return null;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                if (result == null) {
                    userDataEditor.putString("amazonOrder", "false").commit();
                } else {
                    if (result.length() == 0) {
                        userDataEditor.putString("amazonOrder", "false").commit();
                    } else {
                        JSONArray js = result.getJSONArray("result");
                        if (js.length() != 0) {
                            str = new ArrayList<>();
                            for (int i = 0; i < js.length(); i++) {
                                String s = js.getString(i);
                                str.add(s);
                            }
                            sizeList = 1;
                            j = 1;
                            addOrderHistory(str.get(0));
                        } else {
                            userDataEditor.putString("amazonOrder", "false").commit();
                        }
                    }
                }
            } catch (Exception e) {
            }
        }
    }

    int count = 0;
    List<String> str;

    public void addOrderHistory(String s) {
        AmazonOrderHistoryDetails amazonOrderClient = new AmazonOrderHistoryDetails();
        amazonOrderHistoryWebView = new WebView(webView.getContext());
        amazonOrderHistoryWebView.setVisibility(View.GONE);
        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
        amazonOrderHistoryWebView.loadUrl(s);
        amazonOrderHistoryWebView.setWebViewClient(amazonOrderClient);
    }

    public void addOrderHistoryCancelled(String s) {
        AmazonOrderCancelledDetails amazonOrderClient1 = new AmazonOrderCancelledDetails();
        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
        amazonOrderHistoryCancelledWebView.loadUrl(s);
        amazonOrderHistoryCancelledWebView.setWebViewClient(amazonOrderClient1);
    }

    class AmazonOrderHistoryDetails extends WebViewClient {

        @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              HttpAuthHandler handler, String host, String realm) {

            handler.proceed("dtr", "dtr18Feb2015");

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (url.contains("signin")) {
                userDataEditor.putBoolean("amazonLoggedIn", false).commit();
            } else {
                view.loadUrl("javascript:window.HTMLOUT.orderHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            }
        }
    }

    class AmazonOrderCancelledDetails extends WebViewClient {

        @Override
        public void onReceivedHttpAuthRequest(WebView view,
                                              HttpAuthHandler handler, String host, String realm) {

            handler.proceed("dtr", "dtr18Feb2015");

        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            view.loadUrl("javascript:window.HTMLOUT.cancelledHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    }


    public final boolean isInternetOn() {

        ConnectivityManager connec =
                (ConnectivityManager) getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);

        if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) {
            return true;

        } else if (
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) {

            return false;
        }
        return false;
    }

    class checkGateWayProblem extends AsyncTask<String, Integer, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                HttpPost httppost = new HttpPost(arg0[0]);
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
                httppost.setHeader("Authorization", basicAuth);
                HttpResponse response = httpclient.execute(httppost);
                int status = response.getStatusLine().getStatusCode();

                jsArraySaholic = new JSONArray();
                jSaholic.put("url", arg0[0]);

                jSaholic.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
                jSaholic.put("httpstatus", status);
                jSaholic.put("cookies", CookieManager.getInstance().getCookie(arg0[0]));
                jsArraySaholic.put(jSaholic);
                obj.put("pushdata", jsArraySaholic);
                Log.d("status ", "Status in checkGatewayProbelm " + status);
                if (status == 200) {
                    return "success";
                } else {
                    return "failure";
                }

            } catch (ClientProtocolException e) {
                return "failure";
            } catch (IOException e) {
                return "failure";
            } catch (JSONException e) {
                return "failure";
            }
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            new pushData1().execute(obj);
        }
    }

    class pushData1 extends AsyncTask<JSONObject, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(JSONObject... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
                nameValuePairs.add(new BasicNameValuePair("pushdata", arg0[0].toString()));
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
                httppost.setHeader("Authorization", basicAuth);

                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                System.out.println("JSON object in push Data 1 " + arg0[0].toString());
                StringEntity se = new StringEntity(arg0[0].toString());
                HttpResponse response = httpclient.execute(httppost);
                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    return "success";
                } else {
                    return "failure";
                }

            } catch (ClientProtocolException e) {
                return "failure";
            } catch (IOException e) {
                return "failure";
            }
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        }
    }

    public void redirectPage(final AlertDialog builder) {
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (builder != null) {
                    builder.dismiss();
                }
                userDataEditor.clear().commit();
                startActivity(new Intent(getActivity(), LoginActivity.class));
            }
        }, 3000);

    }

    public void sendQueuedResponse() {

        List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
        postDataNameValuePair = orderDetails.readData1();
        for (List<NameValuePair> orderDetail : postDataNameValuePair) {
            orderDetail.add(new BasicNameValuePair("zip", "1"));
            orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
            orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
            orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
            PushRawHTML pm = new PushRawHTML();
            pm.execute(orderDetail);
        }
    }


    class PaytmWebViewClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
                view.loadUrl("javascript:window.location='" + getPaytmUrl(url) + "';");
            } else {
                view.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);");
            }
        }
    }

    public String getPaytmUrl(String url) {
        String returnUrl = null;
        //Pattern p = Pattern.compile("[/]myorders/(\\d+)");
        Pattern p = Pattern.compile(apiData.getString("paytm.myorders.pattern", "[/]myorders/(\\d+)"));
        Matcher m = p.matcher(url);
        if (m.find()) {
            returnUrl = m.group(1);
        }
        System.out.println(apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2");
        return apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2";
    }


    public String getPaytmReferer(String url) {
        String returnUrl = null;
        Pattern p = Pattern.compile(apiData.getString("paytm.summary.pattern", "[/]summary/(\\d+)"));
        //Pattern p = Pattern.compile("[/]summary/(\\d+)");
        Matcher m = p.matcher(url);
        if (m.find()) {
            returnUrl = m.group(1);
        }
        System.out.println("In paytm Referer" + apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl);
        return apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl;
    }


    class PaytmOrderURL extends AsyncTask<String, Integer, JSONObject> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                String fetchUrl = apiData.getString("amazon.order.tracking.get.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "")), "paytm");
                HttpGet httppost = new HttpGet(fetchUrl);
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();

                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                return jObjGmail;
            } catch (JSONException e) {
                return null;
            } catch (ClientProtocolException e) {
                return null;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                if (result != null) {
                    if (result.length() == 0) {
                        userDataEditor.putString("paytmOrder", "false").commit();
                    } else {
                        JSONArray js = result.getJSONArray("result");
                        if (js.length() != 0) {
                            strPaytmUrls = new ArrayList<>();
                            strPaytmReferer = new ArrayList<>();
                            for (int i = 0; i < js.length(); i++) {
                                JSONObject paytmURLRef = js.getJSONObject(i);
                                String url = paytmURLRef.getString("url");
                                String referer = paytmURLRef.getString("referer");
                                strPaytmUrls.add(url);
                                strPaytmReferer.add(referer);
                            }
                            paytmOrderTracking(strPaytmUrls.get(0), strPaytmReferer.get(0));
                        } else {
                            userDataEditor.putString("paytmOrder", "false").commit();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }


    class PaytmOrderCreation extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {


            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();

                int status = response.getStatusLine().getStatusCode();

                if (status == 200) {
                    NameValuePair y = orderDetail[0].get(2);
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
                } else {
                }
                String getJSON = EntityUtils.toString(entity);
                if (getJSON == null) {
                    return null;
                } else {
                    JSONObject jObjGmail = new JSONObject(getJSON);
                    return jObjGmail;
                }
            } catch (Exception e) {
                return null;
            }
        }


        @Override
        protected void onPostExecute(JSONObject result) {
            if (result == null) {

            } else {
                userDataEditor.putString("paytmOrder", "true").commit();
                userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
                try {
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
                        orderDetails.deleterecords();
                } catch (Exception e) {
                }
            }
            super.onPostExecute(result);
        }
    }

    public void paytmOrderTracking(List<String> paytmUrls, List<String> paytmReferers) {
        for (int i = 1; i < paytmReferers.size(); i++) {
            PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrls.get(i));
            paytmWebView = new WebView(webView.getContext());
            paytmWebView.setVisibility(View.GONE);
            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
            paytmWebView.getSettings().setJavaScriptEnabled(true);
            paytmWebView.loadUrl(paytmReferers.get(i));
            paytmWebView.setWebViewClient(paytmOrderTrackingClient);
        }
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
    }

    public void paytmOrderTracking(String paytmUrl, String paytmReferer) {
        PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrl);
        paytmWebView = new WebView(webView.getContext());
        paytmWebView.setVisibility(View.GONE);
        paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
        paytmWebView.getSettings().setJavaScriptEnabled(true);
        paytmWebView.loadUrl(paytmReferer);
        paytmWebView.setWebViewClient(paytmOrderTrackingClient);
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
    }

    class PaytmOrderTrackingClient extends WebViewClient {
        String paytmUrlAfterReferer;

        public PaytmOrderTrackingClient(String paytmUrl) {
            paytmUrlAfterReferer = paytmUrl;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
                view.loadUrl("javascript:window.location='" + paytmUrlAfterReferer + "';");
            } else {
                view.loadUrl("javascript:window.HTMLOUT.paytmTracking(document.getElementsByTagName('html')[0].innerHTML);");
            }
        }
    }

    List<String> strPaytmUrls, strPaytmReferer;
    int paytmCounter = 0;

    class PaytmPushTrackingUrls extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {

            try {
                HttpClient httpclient = new DefaultHttpClient();
                String fetchUrl = apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + "&store_id=" + UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "")), "paytm");
                HttpPost httppost = new HttpPost(fetchUrl);
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                return jObjGmail;
            } catch (Exception e) {
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                if (result == null) {

                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
                    userDataEditor.putBoolean("paytmLoggedIn", false).commit();
                } else {
                    paytmOrderTracking(strPaytmUrls, strPaytmReferer);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    class paytmInterface {

        Context mContext;

        public paytmInterface(Context c) {
            mContext = c;
        }

        @JavascriptInterface
        public void showHTML(String html) {
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
            postDataNameValuePair = orderDetails.readData1();
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
                orderDetail.add(new BasicNameValuePair("zip", "1"));
                new PaytmOrderCreation().execute(orderDetail);
            }
        }

        @JavascriptInterface
        public void paytmTracking(String html) {
            try {
                String url = strPaytmUrls.get(paytmCounter++);
                List<NameValuePair> amazonOrderHistory = new ArrayList<NameValuePair>();
                amazonOrderHistory.add(new BasicNameValuePair("url", url));
                amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
                amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
                if (isInternetOn()) {
                    new PaytmPushTrackingUrls().execute(amazonOrderHistory);
                } else {

                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    public void onShareClick(String url) {
        try {
            List<Intent> targetShareIntents = new ArrayList<Intent>();
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            shareIntent.setType("text/plain");
            List<ResolveInfo> resInfos = getActivity().getPackageManager().queryIntentActivities(shareIntent, 0);
            if (!resInfos.isEmpty()) {
                for (ResolveInfo resInfo : resInfos) {
                    String packageName = resInfo.activityInfo.packageName;
                    Intent intent = new Intent();
                    intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                    intent.setAction(Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.putExtra(Intent.EXTRA_TEXT, Uri.parse(url).getQueryParameter("message"));
                    intent.setPackage(packageName);
                    targetShareIntents.add(intent);
                }
                if (!targetShareIntents.isEmpty()) {
                    Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Choose app to share");
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
                    startActivity(chooserIntent);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void fetchAmazonOrder(String url) {
        pd1 = new ProgressDialog(getActivity());
        pd1.setTitle("Please wait");
        pd1.setMessage("Placing your order...");
        pd1.show();
        webView.post(new Runnable() {
            @Override
            public void run() {
                webView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            }
        });

    }

    @Override
    public void onPause() {
        super.onPause();
        if (apiData.getString("deal.redirect", "false").equalsIgnoreCase("true")) {
            if (webView != null) {
                if (isPause) {
                    webView.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));
                    isPause = false;
                }
            }
        }
    }

    class FlipkartWebview extends WebViewClient {

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if(url.contains(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"))) {
                view.loadUrl("javascript:window.HTMLOUT.orderpage('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            }

        }
    }
}