Subversion Repositories SmartDukaan

Rev

Rev 19946 | Blame | 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.PackageManager;
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.LinkedList;
import java.util.List;
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;
    int snapdealException=0;
    static String BASIC_AUTH = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
    public static WebView webView;;
    WebView amazonWebView,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>');");
                        pd1.dismiss();
                    }
                }

                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;
                }

                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 boolean appInstalledOrNot(String uri) {
        PackageManager pm = getActivity().getPackageManager();
        boolean app_installed = false;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed ;
    }
    @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 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();
            }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();
            }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;
            }
        }
    }




    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();

                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){
                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;
                }
            }
        }
    }
}