Subversion Repositories SmartDukaan

Rev

Rev 14991 | 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.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
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.util.Base64;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
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.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.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;

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

    public DealsHomeFragment(){

    }

    static boolean FLAG=false,REDIRECT=false,PAGE_LOAD=false;
    WebView webView;
    WebView amazonWebView,amazonOrderHistoryWebView,amazonOrderHistoryCancelledWebView;
    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;
    public GoogleApiClient mGoogleApiClient;
    @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());
        Log.d("Order details","Orders");


      if(isInternetOn()) {
          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());
              }
              //pageLoadList.add("tag");
            WebClientClass webViewClient = new WebClientClass();
            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();
          }
            webView.loadUrl(getArguments().getString("key"));
            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 pd1 = 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(url.contains(apiData.getString("wallet.auth","api.profittill.com/special/native/login"))){
                //Toast.makeText(getActivity(),apiData.getString("wallet.error", "Error while logging in to the wallet. Please log in again"), Toast.LENGTH_SHORT).show();
                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();
                  /*      userDataEditor.clear().commit();
                        startActivity(new Intent(getActivity(), LoginActivity.class));*/
                        redirectPage(alert);
                    }
                    else if(Session.getActiveSession() != null){
                        Session.getActiveSession().closeAndClearTokenInformation();
                        Session.setActiveSession(null);
                        /*userDataEditor.clear().commit();
                        startActivity(new Intent(getActivity(), LoginActivity.class));*/
                        redirectPage(alert);
                    }
                    else{
                        if(!mGoogleApiClient.isConnected() || Session.getActiveSession()==null){
                            /*userDataEditor.clear().commit();
                            startActivity(new Intent(getActivity(), LoginActivity.class));*/
                            redirectPage(alert);
                        }
                    }
                }catch (Exception e){
                    redirectPage(alert);
                   /* userDataEditor.clear().commit();
                    startActivity(new Intent(getActivity(), LoginActivity.class));*/
                }
                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;
            }
            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 {
/*                    Toast.makeText(getActivity(),"Wifi " + UtilityFunctions.checkWifi(getActivity()),Toast.LENGTH_SHORT).show();*/
                    /*if(Uri.parse(url).getHost().contains("saholic.com")) {*/
                        CookieSyncManager.createInstance(getActivity());
                        CookieManager cookieManager = CookieManager.getInstance();
                        cookieManager.setCookie(url, "token=" + userData.getString("token", ""));
                        cookieManager.setCookie(url, "walletAuthentication=true");
                    /*if(Uri.parse(url).getHost().contains("snapdeal") && url.contains("supc")){
                        new SnapdealSUPCCall().execute(url);
                    }*/
                    //}
                    if(url.contains("dl.flipkart.com/dl/")){
                        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) {
                            //clearCookies(url);
                            Log.d("Cookie after calling", "Cookie after calling" + CookieManager.getInstance().getCookie(url));
                            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", null)) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals")) {
                                    pd = new ProgressDialog(getActivity());
                                    pd.setTitle("Please wait");
                                    pd.setMessage("Loading..");
                                    pd.show();
                                    /*parseCookieString(CookieManager.getInstance().getCookie(".saholic.com"),".saholic.com");
                                    Log.d("Cookie","Cookie Overloaded");
                                    parseCookieString(CookieManager.getInstance().getCookie("m.saholic.com"));*/
                                }
                                getDisplayActionBar(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 {
                            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();
                        }
                        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);
            Log.d("ErrorCode " ,"Error Code"+errorCode);
            Log.d("Errordescription " ,"description"+description);
            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);
            Log.d("Progress " , "Progress Finish" + view.getProgress());
        try {

            if (url.contains(apiData.getString("mobile.website.url", "")) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals")) {
                pd.dismiss();
            }
            if(snapdealPageLoad==1){
                snapdealPageLoad=0;
            }
            if(pd2!=null){
                pd2.dismiss();
            }
            /*if(Uri.parse(url).getHost().contains("snapdeal") && url.contains("supc")){
                Log.d("In page Finished","In page finished" + snapdealJavascriptUrl);
                view.loadUrl(snapdealJavascriptUrl);
            }*/
            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", ""))) {
               /* StringTokenizer st2 = new StringTokenizer(url, "&");
                String orderid = null;
                while (st2.hasMoreTokens()) {
                    String token = st2.nextToken();
                    if (token.contains("oid")) {
                        orderid = token.split("=")[1];
                    }
                }
                amazonOrderTrackingData = new ArrayList<>();
                amazonOrderTrackingData.add(new BasicNameValuePair("id", orderid));
                amazonOrderTrackingData.add(new BasicNameValuePair("user_id", userData.getString("id", "")));
                amazonOrderTrackingData.add(new BasicNameValuePair("order_url", url));
                amazonOrderTrackingData.add(new BasicNameValuePair("store_id", apiData.getString("store.code.amazon", null)));
                view.loadUrl("javascript:window.HTMLOUT.amazonOrderTrackingHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
       */        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 {
                    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;
                }
            } else if (FLAG) {
                //Toast.makeText(getActivity(),"True",Toast.LENGTH_SHORT).show();
                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();
        }
        else{
           /* getActivity().finish();*/
        }
    }

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

            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)) ){
                    System.out.println("True");
                    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 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);
        }
        return null;
    }

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

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

        @Override
        protected String doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
                nameValuePairs.add(new BasicNameValuePair("pushdata",obj.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(obj.toString());
                StringEntity se = new StringEntity(obj.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);
        }
    }
    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);
        }
    }




    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) {
            /*Toast.makeText(getActivity(), url, Toast.LENGTH_SHORT).show();*/
            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);
            }
            else{

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

            }
        }

        @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<String, Integer, JSONObject> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

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

        }

        @Override
        protected JSONObject doInBackground(String... arg0) {

            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api",null));
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsRawHtml));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                System.out.println(jObjGmail.toString());
                Log.e("pass 1", "connection success ");
                return jObjGmail;

            } catch (Exception e) {
                Log.e("Fail 1", e.toString());
                Toast.makeText(getActivity(), "Invalid IP Address", Toast.LENGTH_LONG).show();
                return null;
            }

        }

        @Override
        protected void onPostExecute(JSONObject result) {
            try {
                if (result.getString("success").equalsIgnoreCase("true") && result.getString("message").equalsIgnoreCase("HTML_REQUIRED")) {
                    amazonapiSettingsEditor.putString("amazonurl",result.getString("url"));
                    amazonapiSettingsEditor.commit();
                    pushDataInAmazon();
                }
            }catch (Exception e){
                Log.e("Post Execute", e.toString());
            }

            super.onPostExecute(result);
        }
    }*/

    class PushRawHTML extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

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

        }

        @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){
                    //System.out.println("ResponseCode of record: "+ status + " is " + status);
                    NameValuePair y = orderDetail[0].get(2);
                    //System.out.println("Value to be deleted is " + " is " + y.getValue());
                    int z =orderDetails.deleteRecord(y.getName(),new String[]{y.getValue()});
                    //Log.d("inserting into database","1 " + z);
                } else {
                /*    Log.d("ResponseCode",status+"");
                    System.out.println(" NOT Transfered");
                    Log.d("ResponseCode",status+"");*/
                }
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                System.out.println(jObjGmail.toString());
                Log.e("pass 1", "connection success ");
                return jObjGmail;
            } catch (Exception e) {
               /* Log.e("Fail 1", e.toString());*/
                return null;
            }
        }

        @Override
        protected void onPostExecute(JSONObject result) {
            super.onPostExecute(result);
            try {
                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> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

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

        @Override
        protected JSONObject doInBackground(List<NameValuePair>... arg0) {
            Log.e("Pre execute", "AmazonOrderTrackingDetails");
            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, String> {
        private StringBuilder sb;

        private HttpResponse req;
        private InputStream is;

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

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            try {
                addOrderHistoryCancelled(str.get(1));
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

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

        private HttpResponse req;
        private InputStream is;

        @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();
                int status = response.getStatusLine().getStatusCode();
                if(status == 200){
                } else {
                }

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

                }else{
                    JSONArray js = result.getJSONArray("result");
                    str = new ArrayList<>();
                    for (int i = 0; i < js.length(); i++) {
                        String s = js.getString(i);
                        str.add(s);
                    }
                    sizeList=1;//for getting the url and fetching raw html.
                    j=1;//for url to be incremented that needs to be sent to server.
                    addOrderHistory(str.get(0));
                }
            }catch (Exception e){
            }
        }
    }
    int count=0;
    List<String> str;
    public void addOrderHistory(String s){
        AmazonOrderHistoryDetails amazonOrderClient = new AmazonOrderHistoryDetails();
        amazonOrderHistoryWebView.loadUrl(s);
        amazonOrderHistoryWebView.setWebViewClient(amazonOrderClient);
    }
    public void addOrderHistoryCancelled(String s){
        AmazonOrderCancelledDetails amazonOrderClient1 = new AmazonOrderCancelledDetails();
        amazonOrderHistoryCancelledWebView.loadUrl(s);
        amazonOrderHistoryCancelledWebView.setWebViewClient(amazonOrderClient1);
    }

    public void addAllHistory(List<String> listOfUrls){
        for(String s : listOfUrls) {

            AmazonAllOrderHistory amazonOrderClient = new AmazonAllOrderHistory();
            amazonAllUrlsWebView.loadUrl(s);
            amazonAllUrlsWebView.setWebViewClient(amazonOrderClient);
        }
    }

    class AmazonAllOrderHistory 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")){
            }
            else {
                view.loadUrl("javascript:window.HTMLOUT.amazonOrderUrls('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
            }
        }
    }

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

/*
    Timer timer;
    int i=0;
    public void callAsynchronousTask() {
        TIMER=false;
        timer= new Timer();
        final Handler handler = new Handler();

        TimerTask doAsynchronousTask = new TimerTask() {
            @Override
            public void run() {
                handler.post(new Runnable() {
                    public void run() {
                        try {

                            Log.e("Url in cancelled order history data","Timer called " + (i++));
                            fetchOrderDetailsTimer();
                            //Toast.makeText(getActivity(),"Timer",Toast.LENGTH_SHORT).show();
                        } catch (Exception e) {
                        }
                    }
                });
            }
        };
        timer.schedule(doAsynchronousTask, 60000, 10800000); //execute in every 10800000 ms (3 hours)
    }
*/


    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 FetchAllOrderURLS extends AsyncTask<String, Integer, JSONObject> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            //Log.e("Push Service FetchOrderURLS", "Pre execute FetchOrderURLS");
        }

        @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");
                System.out.println("ResponseCode While fetching URL: "+ " is " + fetchUrl);
                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();
                if(status == 200){
                    System.out.println("ResponseCode While fetching URL: "+ status + " is ");
                } else {
                    Log.d("ResponseCode",status+"");
                    System.out.println(" NOT Transfered");
                }

                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
                //System.out.println(jObjGmail.toString());
                return jObjGmail;

            } catch (ClientProtocolException e) {
                Log.e("data FetchOrderURLS ","data FetchOrderURLS " + e.getMessage());
                return null;
            } catch (IOException e) {
                Log.e("data FetchOrderURLS ","data FetchOrderURLS " + e.getMessage());
                return null;
            }catch (Exception e){
                Log.e("data FetchOrderURLS ","data FetchOrderURLS " + e.getMessage());
                return null;
            }
        }

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

                }else{
                    JSONArray js = result.getJSONArray("result");
                    str = new ArrayList<>();
                    for (int i = 0; i < js.length(); i++) {
                        String s = js.getString(i);
                        str.add(s);
                        addAllHistory(str);
                    }
                }
                System.out.println(str);
            }catch (Exception e){
            }
            Log.e("data","data FetchOrderURLS " + result);
       }
    }

    /*public void clearCookies(String domain) {
        DefaultHttpClient httpClient=new DefaultHttpClient();
        Cookie cookie = null;

        List<Cookie> cookies1 = httpClient.getCookieStore().getCookies();
        for (int i = 0; i < cookies1.size(); i++) {
            cookie = cookies1.get(i);
        }
        Cookie sessionCookie = cookie;
        CookieSyncManager.createInstance(getActivity());
        CookieManager cookieManager1 = CookieManager.getInstance();
        Log.d("Cookie ","Session Cookie " + sessionCookie);
        if (sessionCookie != null) {

            String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
            Log.d("Cookie ","Session Cookie " + cookieString);
            cookieManager1.setCookie(domain, cookieString);
            CookieSyncManager.getInstance().sync();
        }
    }*/

/*    public List<Cookie> parseCookieString(String cookies) {
        List<Cookie> cookieList = new ArrayList<Cookie>();
        Pattern cookiePattern = Pattern.compile("([^=]+)=([^\\;]*);?\\s?");
        Matcher matcher = cookiePattern.matcher(cookies);
        while (matcher.find()) {
            int groupCount = matcher.groupCount();
            System.out.println("matched: " + matcher.group(0));
            for (int groupIndex = 0; groupIndex <= groupCount; ++groupIndex) {
                System.out.println("group[" + groupIndex + "]=" + matcher.group(groupIndex));
            }
            String cookieKey = matcher.group(1);
            String cookieValue = matcher.group(2);
            Log.d("Key","Cookie Key"+cookieKey);
            Log.d("Value","Cookie value"+cookieValue);
            android.webkit.CookieManager.getInstance().setCookie("m.saholic.com", cookieKey+"=");
            Cookie cookie = new BasicClientCookie(cookieKey, cookieValue);
            cookieList.add(cookie);
        }
        return cookieList;
    }*/
/*
    public List<Cookie> parseCookieString(String cookies,String domain) {
        List<Cookie> cookieList = new ArrayList<Cookie>();
        Pattern cookiePattern = Pattern.compile("([^=]+)=([^\\;]*);?\\s?");
        Matcher matcher = cookiePattern.matcher(cookies);
        while (matcher.find()) {
            int groupCount = matcher.groupCount();
            System.out.println("matched: " + matcher.group(0));
            for (int groupIndex = 0; groupIndex <= groupCount; ++groupIndex) {
                System.out.println("group[" + groupIndex + "]=" + matcher.group(groupIndex));
            }
            String cookieKey = matcher.group(1);
            String cookieValue = matcher.group(2);
            Log.d("Key","Cookie Key"+cookieKey);
            Log.d("Value","Cookie value"+cookieValue);
            android.webkit.CookieManager.getInstance().setCookie(domain, cookieKey+"=");
            Cookie cookie = new BasicClientCookie(cookieKey, cookieValue);
            cookieList.add(cookie);
        }
        return cookieList;
    }
*/

    class checkGateWayProblem extends AsyncTask<String, Integer, String> {

        // JSONObject jobj1;

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

        @Override
        protected String doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                //jobj1 = new JSONObject();
                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);
        }
    }

 /*   @Override
    public void onDestroy() {
        Log.d("Deals Home on Destroy","Deals Home");
        super.onDestroy();
    }

    @Override
    public void onDetach() {
        Log.d("Deals Home on Detach","Deals Home");
        super.onDetach();
    }
*/

/*
    class SnapdealSUPCCall extends AsyncTask<String, Integer, String> {

        @Override
        protected void onPreExecute() {
            Log.d("In Supc ","In supc Call");
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... arg0) {
            HttpClient httpclient = new DefaultHttpClient();
            try {
                String url = arg0[0];
                String supcUrl = apiData.getString("snapdeal.supc","");
                HttpGet httppost = new HttpGet(supcUrl + Base64.encodeToString(url.getBytes(),Base64.NO_WRAP));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();
                if (status == 200) {
                    System.out.println("ResponseCode While fetching URL: " + status + " is ");
                } else {
                    Log.d("ResponseCode", status + "");
                    System.out.println(" NOT Transfered");
                }

                String jObjGmail = EntityUtils.toString(entity);
                System.out.println(jObjGmail);
                return jObjGmail;

            } catch (ClientProtocolException e) {
                Log.e("data FetchOrderURLS ", "data FetchOrderURLS " + e.getMessage());
                return null;
            } catch (IOException e) {
                Log.e("data FetchOrderURLS ", "data FetchOrderURLS " + e.getMessage());
                return null;
            } catch (Exception e) {
                Log.e("data FetchOrderURLS ", "data FetchOrderURLS " + e.getMessage());
                return null;
            }
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            snapdealJavascriptUrl=result;
            Log.d("In Supc ","In supc Call post execute " + 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);

    }
}


//https://www.amazon.in/ap/forgotpassword?suppressSignInRadioButtons=0&openid.pape.max_auth_age=0&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&prevRID=1JZA0HFF0Z954AGQ0HX2&pageId=anywhere_in&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&siteState=IMBMsgs.&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.assoc_handle=anywhere_in&showRmrMe=1&openid.return_to=https%3A%2F%2Fwww.amazon.in%2Fgp%2Fcheckoutportal%2Fenter-checkout.html%3Fie%3DUTF8%26asin%3DB00GX9XFRM%26buyNow%3D1%26cartCustomerID%3DA36HI1A7IGU0T1%26fromSignIn%3D1%26offeringID%3DJh6%25252F3Ub%25252BpthAXjVfYxwB75kQiqEGByG9y2mMF1g%25252BhlBjgWsDLnX4sroH6dhJsVS9lMBaR%25252FW2m%25252FhYIqNkUAKNs97nPaxfPIbRsqftx5EseYCQWzJ45%25252F%25252BU3bW8p6PLoKGRkCg7s50jNROGKZHzSy3aBXT5iLQ1ALRG%26registryID%3D%26registryItemID%3D%26sessionID%3D276-7977280-3606555

//https://www.amazon.in/ap/register?suppressSignInRadioButtons=0&openid.pape.max_auth_age=0&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&prevRID=1JZA0HFF0Z954AGQ0HX2&pageId=anywhere_in&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&siteState=IMBMsgs.&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.assoc_handle=anywhere_in&showRmrMe=1&openid.return_to=https%3A%2F%2Fwww.amazon.in%2Fgp%2Fcheckoutportal%2Fenter-checkout.html%3Fie%3DUTF8%26asin%3DB00GX9XFRM%26buyNow%3D1%26cartCustomerID%3DA36HI1A7IGU0T1%26fromSignIn%3D1%26offeringID%3DJh6%25252F3Ub%25252BpthAXjVfYxwB75kQiqEGByG9y2mMF1g%25252BhlBjgWsDLnX4sroH6dhJsVS9lMBaR%25252FW2m%25252FhYIqNkUAKNs97nPaxfPIbRsqftx5EseYCQWzJ45%25252F%25252BU3bW8p6PLoKGRkCg7s50jNROGKZHzSy3aBXT5iLQ1ALRG%26registryID%3D%26registryItemID%3D%26sessionID%3D276-7977280-3606555