Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
3
import android.app.AlertDialog;
15356 manas 4
import android.app.Fragment;
14792 manas 5
import android.app.ProgressDialog;
17056 manas 6
import android.content.ComponentName;
14792 manas 7
import android.content.Context;
8
import android.content.DialogInterface;
9
import android.content.Intent;
10
import android.content.SharedPreferences;
11
import android.content.pm.PackageManager;
17056 manas 12
import android.content.pm.ResolveInfo;
14792 manas 13
import android.graphics.Bitmap;
14
import android.net.ConnectivityManager;
15
import android.net.Uri;
16
import android.os.AsyncTask;
17
import android.os.Build;
18
import android.os.Bundle;
15356 manas 19
import android.os.Handler;
17056 manas 20
import android.os.Parcelable;
14792 manas 21
import android.util.Base64;
22
import android.util.Log;
23
import android.view.KeyEvent;
24
import android.view.LayoutInflater;
25
import android.view.View;
26
import android.view.ViewGroup;
27
import android.webkit.CookieManager;
28
import android.webkit.CookieSyncManager;
29
import android.webkit.HttpAuthHandler;
30
import android.webkit.JavascriptInterface;
31
import android.webkit.WebSettings;
32
import android.webkit.WebView;
33
import android.webkit.WebViewClient;
34
import android.widget.CheckBox;
35
import android.widget.CompoundButton;
36
import android.widget.Toast;
15356 manas 37
 
38
import com.facebook.Session;
39
import com.google.android.gms.common.ConnectionResult;
40
import com.google.android.gms.common.api.GoogleApiClient;
41
import com.google.android.gms.plus.Plus;
14792 manas 42
import com.saholic.profittill.Constants.ProfitTillConstants;
43
import com.saholic.profittill.Database.OrderTransactionDetails;
44
import com.saholic.profittill.R;
14991 manas 45
import com.saholic.profittill.Utils.UtilityFunctions;
14792 manas 46
import com.testin.agent.TestinAgent;
47
 
48
import org.apache.http.HttpEntity;
49
import org.apache.http.HttpResponse;
50
import org.apache.http.NameValuePair;
51
import org.apache.http.client.ClientProtocolException;
52
import org.apache.http.client.HttpClient;
53
import org.apache.http.client.entity.UrlEncodedFormEntity;
54
import org.apache.http.client.methods.HttpGet;
55
import org.apache.http.client.methods.HttpPost;
56
import org.apache.http.entity.StringEntity;
57
import org.apache.http.impl.client.DefaultHttpClient;
58
import org.apache.http.message.BasicNameValuePair;
59
import org.apache.http.util.EntityUtils;
60
import org.json.JSONArray;
61
import org.json.JSONException;
62
import org.json.JSONObject;
14991 manas 63
 
14792 manas 64
import java.io.IOException;
65
import java.io.InputStream;
66
import java.text.SimpleDateFormat;
67
import java.util.ArrayList;
68
import java.util.Date;
69
import java.util.LinkedList;
70
import java.util.List;
71
import java.util.StringTokenizer;
16452 manas 72
import java.util.regex.Matcher;
73
import java.util.regex.Pattern;
14792 manas 74
 
15356 manas 75
public class DealsHomeFragment extends Fragment implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
14792 manas 76
 
77
    public DealsHomeFragment(){
78
 
79
    }
80
 
16452 manas 81
    static boolean FLAG=false,REDIRECT=false,PAGE_LOAD=false,PAYTMFLAG=false;
14792 manas 82
    WebView webView;
16452 manas 83
    WebView amazonWebView,amazonOrderHistoryWebView,amazonOrderHistoryCancelledWebView,paytmWebView;
14792 manas 84
    WebView amazonAllUrlsWebView;
85
    SharedPreferences userData;
86
    SharedPreferences apiData;
87
    SharedPreferences flipkartData;
88
    SharedPreferences.Editor userDataEditor;
89
    SharedPreferences.Editor apiSettingsEditor;
90
    SharedPreferences.Editor flipkartDataEditor;
91
    OrderTransactionDetails orderDetails;
92
    LinkedList<ArrayList<NameValuePair>> orderLinkedList;
93
    SharedPreferences amazonData;
94
    String affliateUrl;
95
    String landingURL;
96
    boolean val=false;
97
    String redirectUrls;
98
    String pageLoad;
99
    SharedPreferences.Editor amazonapiSettingsEditor;
100
    List<NameValuePair> amazonOrderTrackingData;
101
    int pageRedirect=0;
102
    int snapdealPageLoad;
103
    String packageName=null;
104
    final ArrayList<String> redirectUrlsList = new ArrayList<String>();
105
    final ArrayList<String> pageLoadList = new ArrayList<String>();
106
    String flipkartUrl;
107
    View checkBoxView;
108
    boolean flipkartFlag;
14991 manas 109
    String saholicUrl;
110
    JSONObject jSaholic;
111
    JSONArray jsArraySaholic;
15356 manas 112
    String snapdealJavascriptUrl;
113
    String type1;
16080 manas 114
    ArrayList<String> orderSuccessUrlList;
15356 manas 115
    public GoogleApiClient mGoogleApiClient;
14792 manas 116
    @Override
117
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
118
                             Bundle savedInstanceState) {
119
 
120
 
121
        View rootView = inflater.inflate(R.layout.fragment_deals_home, container, false);
122
 
123
        TestinAgent.init(getActivity());
124
        amazonData= getActivity().getSharedPreferences("Amazon_Data", Context.MODE_PRIVATE);
125
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
126
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
127
        flipkartData = getActivity().getSharedPreferences("Flipkart_Data", Context.MODE_PRIVATE);
128
        userDataEditor = userData.edit();
129
        apiSettingsEditor = apiData.edit();
130
        TestinAgent.setUserInfo(userData.getString("id",""));
131
        amazonapiSettingsEditor = amazonData.edit();
132
        flipkartDataEditor = flipkartData.edit();
133
        affliateUrl=getArguments().getString("key");
134
        orderDetails =  new OrderTransactionDetails(getActivity());
135
 
16080 manas 136
        orderSuccessUrlList = new ArrayList<String>();
17090 manas 137
        String issues =apiData.getString("list.order.success.url","blank");
16080 manas 138
        StringTokenizer st2 = new StringTokenizer(issues, "|");
14792 manas 139
 
16080 manas 140
        while (st2.hasMoreElements()) {
141
            orderSuccessUrlList.add(st2.nextToken());
142
        }
14792 manas 143
      if(isInternetOn()) {
15588 manas 144
          if(orderDetails.countTotalRecords()>0){
145
              sendQueuedResponse();
146
          }
147
          type1 = userData.getString("type",null);
15356 manas 148
          if(type1!=null && type1.equalsIgnoreCase("google")) {
149
              mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
150
                      .addConnectionCallbacks(this)
151
                      .addOnConnectionFailedListener(this).addApi(Plus.API)
152
                      .addScope(Plus.SCOPE_PLUS_LOGIN).build();
153
              mGoogleApiClient.connect();
154
          }
14792 manas 155
              redirectUrls=apiData.getString("profitmandi.redirect.urls","");
156
              StringTokenizer st = new StringTokenizer(redirectUrls,"|");
157
              while(st.hasMoreTokens()){
158
                  redirectUrlsList.add( st.nextToken());
159
              }
14991 manas 160
             pageLoad  =apiData.getString("profitmandi.pageloads.pattern","");
14792 manas 161
              StringTokenizer st1 = new StringTokenizer(pageLoad,"|");
162
              while(st1.hasMoreTokens()){
163
                  pageLoadList.add( st1.nextToken());
164
              }
165
            WebClientClass webViewClient = new WebClientClass();
166
            webView = (WebView) rootView.findViewById(R.id.webView);
167
            webView.setClickable(true);
168
            webView.setFocusableInTouchMode(true);
169
            webView.getSettings().setDomStorageEnabled(true);
170
            webView.getSettings().setJavaScriptEnabled(true);
171
            webView.getSettings().setBuiltInZoomControls(true);
172
            webView.addJavascriptInterface(new javascriptInterface(getActivity()), "HTMLOUT");
173
            webView.getSettings().setSavePassword(true);
174
            CookieManager cookieManager = CookieManager.getInstance();
175
            cookieManager.setAcceptCookie(true);
176
 
177
          if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
178
              webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
179
              webView.getSettings().setAllowContentAccess(true);
180
              CookieManager cookieManager1 = CookieManager.getInstance();
181
              cookieManager1.setAcceptThirdPartyCookies(webView, true);
182
          }
14991 manas 183
          if(Uri.parse(getArguments().getString("key")).getHost().contains("api.profittill")) {
184
             userDataEditor.putString("saholic.data",UtilityFunctions.clearCookiesNew(getArguments().getString("key"),getActivity())).commit();
185
          }
16080 manas 186
          String url = getArguments().getString("key");
187
          if(Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
188
              CookieSyncManager.createInstance(getActivity());
189
              CookieManager cookieManager1 = CookieManager.getInstance();
190
              cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
191
              cookieManager1.setCookie(url, "walletAuthentication=true");
192
              cookieManager1.setCookie(url, "shopcluesActive=true");
16452 manas 193
              cookieManager1.setCookie(url, "paytmActive=true");
17056 manas 194
              cookieManager1.setCookie(url, "shareApps=true");
17090 manas 195
              cookieManager1.setCookie(url, "homeshop18=true");
16080 manas 196
          }
16452 manas 197
          if(!(userData.getBoolean("paytmLoggedIn",false))){
198
             Log.d("User Not Logged In","User Not logged In");
199
          }else {
200
              if (userData.getString("paytmOrder", "").equalsIgnoreCase("true")) {
201
                  long nextFetchTime=userData.getLong("paytmNextFetchTime", 0);
202
                  if (nextFetchTime == 0 || nextFetchTime< System.currentTimeMillis()) {
203
                      if(isInternetOn()) {
204
                          new PaytmOrderURL().execute();
205
                      }
206
                  } else {
207
                      Log.d("Paytm False", "Paytm Time False");
208
                  }
209
              } else {
210
                  Log.d("Paytm False", "Paytm False No orders");
211
              }
212
          }
17503 manas 213
          if(!(userData.getBoolean("amazonLoggedIn",false))){
214
              Log.d("User Not Logged In Amazon","User Not logged In Amazon" );
215
          }else {
216
              if (userData.getString("amazonOrder", "").equalsIgnoreCase("true")) {
217
                  long nextFetchTime=userData.getLong("amazonNextFetchTime", 0);
218
                  if (nextFetchTime == 0 || nextFetchTime< System.currentTimeMillis()) {
219
                      if(isInternetOn()) {
220
                          new FetchOrderURLS().execute();
221
                      }
222
                  } else {
223
                      Log.d("Amazon False", "Amazon Time False" + userData.getLong("amazonNextFetchTime", 0));
224
                  }
225
              } else {
226
                  Log.d("Amazon False", "Amazon False No orders");
227
              }
228
          }
16080 manas 229
          webView.loadUrl(url);
230
          webView.setWebViewClient(webViewClient);
14792 manas 231
 
232
         }
233
        else{
234
            SearchFragment nextFrag= new SearchFragment();
235
            Bundle args = new Bundle();
236
            args.putString("finishingurl", getArguments().getString("key"));
237
            args.putString("fragmentNumber", "1");
238
            nextFrag.setArguments(args);
239
            getActivity().getFragmentManager().beginTransaction()
240
                    .replace(R.id.frame_container, nextFrag)
241
                    .addToBackStack(null)
242
                    .commit();
243
        }
244
        return rootView;
245
    }
246
 
247
    @Override
248
    public void onViewCreated(View view, Bundle savedInstanceState) {
249
        super.onViewCreated(view, savedInstanceState);
250
    }
251
 
252
    JSONObject obj;
15356 manas 253
 
254
    @Override
255
    public void onConnected(Bundle bundle) {
256
 
257
    }
258
 
259
    @Override
260
    public void onConnectionSuspended(int i) {
261
 
262
    }
263
 
264
    @Override
265
    public void onConnectionFailed(ConnectionResult connectionResult) {
266
 
267
    }
14792 manas 268
    public class WebClientClass extends WebViewClient {
269
        ProgressDialog pd = null;
270
        ProgressDialog pd1 = null;
271
        ProgressDialog pd2 = null;
272
 
16080 manas 273
 
14792 manas 274
        @Override
275
        public void onReceivedHttpAuthRequest(WebView view,
276
                                              HttpAuthHandler handler, String host, String realm) {
277
 
278
            handler.proceed("dtr", "dtr18Feb2015");
279
        }
280
 
281
        @Override
282
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
283
 
17056 manas 284
 
285
            if(url.contains("apprub")){
286
                onShareClick(url);
287
                return true;
288
            }
16080 manas 289
            if(url.contains(apiData.getString("wallet.auth","api.profittill.com/special/native/login")) || userData.getString("id","").isEmpty()){
15356 manas 290
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
291
                android.webkit.CookieSyncManager.createInstance(getActivity());
292
                cookieManager.removeAllCookie();
293
                AlertDialog alert;
294
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
295
                builder.setMessage(apiData.getString("wallet.auth.message","You are not authenticated. Please log in again")).setCancelable(false);
296
                alert = builder.create();
297
                alert.show();
298
                try{
299
                    if (mGoogleApiClient.isConnected()) {
300
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
301
                        mGoogleApiClient.disconnect();
302
                        mGoogleApiClient.connect();
303
                        redirectPage(alert);
14792 manas 304
                    }
15356 manas 305
                    else if(Session.getActiveSession() != null){
306
                        Session.getActiveSession().closeAndClearTokenInformation();
307
                        Session.setActiveSession(null);
308
                        redirectPage(alert);
309
                    }
310
                    else{
311
                        if(!mGoogleApiClient.isConnected() || Session.getActiveSession()==null){
312
                            redirectPage(alert);
313
                        }
314
                    }
315
                }catch (Exception e){
316
                    redirectPage(alert);
317
                }
14792 manas 318
                return true;
15356 manas 319
            }
14792 manas 320
            if(url.contains("com.saholic.profittill")){
321
                Intent intent = null;
322
                try {
323
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getActivity().getPackageName()));
324
                } catch (android.content.ActivityNotFoundException anfe) {
325
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getActivity().getPackageName()));
326
                }
327
                startActivity(intent);
328
                return true;
329
            }
330
            if(snapdealPageLoad==1){
331
                pd2 = new ProgressDialog(getActivity());
332
                pd2.setMessage("Wait for a moment and click again.");
333
                pd2.setProgress(view.getProgress());
334
                pd2.show();
335
                return true;
336
            }
337
            if(url.startsWith("tel")){
338
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
339
                startActivity(intent);
340
                return true;
341
            }
342
            return false;
343
 
344
        }
345
 
346
        @Override
347
        public synchronized  void onPageStarted(final WebView view, String url, Bitmap favicon) {
348
            super.onPageStarted(view, url, favicon);
349
            final CharSequence[] items = {" Don't show me again "};
350
            final ArrayList seletedItems=new ArrayList();
351
                try {
16080 manas 352
                    if(Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
15356 manas 353
                        CookieSyncManager.createInstance(getActivity());
354
                        CookieManager cookieManager = CookieManager.getInstance();
355
                        cookieManager.setCookie(url, "token=" + userData.getString("token", ""));
356
                        cookieManager.setCookie(url, "walletAuthentication=true");
16080 manas 357
                        cookieManager.setCookie(url, "shopcluesActive=true");
16452 manas 358
                        cookieManager.setCookie(url, "paytmActive=true");
17056 manas 359
                        cookieManager.setCookie(url, "shareApps=true");
17090 manas 360
                        cookieManager.setCookie(url, "homeshop18=true");
16080 manas 361
                    }
14792 manas 362
                    if(url.contains("dl.flipkart.com/dl/")){
363
                        flipkartUrl=url;
364
 
365
                        if(flipkartData.getInt("showagainflag",0)<3) {
366
                            AlertDialog dialog;
367
                            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
368
                            builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
369
                                    .setView(checkBoxView)
370
                                    .setCancelable(false)
371
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
372
                                        @Override
373
                                        public void onClick(DialogInterface dialog, int which) {
374
                                                int i = flipkartData.getInt("showagainflag", 0);
375
                                                flipkartDataEditor.putInt("showagainflag", ++i);
376
                                                flipkartDataEditor.commit();
377
                                            Intent flipkartIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
378
                                            startActivity(flipkartIntent);
379
                                        }
380
                                    })
381
                                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
382
                                        @Override
383
                                        public void onClick(DialogInterface dialog, int id) {
384
                                            view.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));
385
 
386
                                        }
387
                                    });
388
                            dialog = builder.create();
389
                            dialog.show();
390
                        }else if(flipkartData.getInt("showagainflag",0)==3){
391
                            AlertDialog dialog;
392
                            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
393
                            checkBoxView = View.inflate(getActivity(), R.layout.checkboxlayout, null);
394
                            CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
395
                            checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
396
 
397
                                @Override
398
                                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
399
                                    flipkartFlag = isChecked;
400
                                }
401
                            });
402
                            checkBox.setText("Don't show me again");
403
                            builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
404
                                    .setView(checkBoxView)
405
                                    .setCancelable(false)
406
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
407
                                        @Override
408
                                        public void onClick(DialogInterface dialog, int which) {
409
                                            if (flipkartFlag) {
410
                                                int i = flipkartData.getInt("showagainflag", 0);
411
                                                flipkartDataEditor.putInt("showagainflag", ++i);
412
                                                flipkartDataEditor.commit();
413
                                            }
414
                                            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
415
                                            startActivity(i);
416
                                        }
417
                                    })
418
                                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
419
                                        @Override
420
                                        public void onClick(DialogInterface dialog, int id) {
421
                                            view.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));
422
 
423
                                        }
424
                                    });
425
                            dialog = builder.create();
426
                            dialog.show();
427
                        }
428
                        else{
429
                            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
430
                            startActivity(i);
431
                        }
432
                        view.stopLoading();
433
                    }
434
                    else {
435
                        for (String s : pageLoadList) {
436
                            if (url.contains(s)) {
437
                                PAGE_LOAD = true;
438
                            }
439
                        }
440
                        if (PAGE_LOAD) {
441
                            //clearCookies(url);
442
                            Log.d("Cookie after calling", "Cookie after calling" + CookieManager.getInstance().getCookie(url));
443
                            snapdealPageLoad = 1;
444
                            PAGE_LOAD = false;
445
                        } else {
446
                            snapdealPageLoad = 0;
447
                            for (String s : redirectUrlsList) {
448
                                if (url.contains(s)) {
449
                                    REDIRECT = true;
450
                                    break;
451
                                }
452
                            }
453
                            if (REDIRECT) {
454
                                pageRedirect = 2;
455
                                REDIRECT = false;
456
                            } else if (pageRedirect == 2 || pageRedirect == 1) {
457
                                Toast.makeText(getActivity(), "Redirecting to deals...", Toast.LENGTH_SHORT).show();
458
                                Intent i = new Intent(getActivity(), MainActivity.class);
459
                                i.putExtra("displayView", "31");
460
                                i.putExtra("redirectUrl", apiData.getString("redirect.url", "") + "?user_id=" + userData.getString("id", ""));
461
                                startActivity(i);
462
                                pageRedirect = 0;
463
                            } else {
464
                                landingURL = url;
465
                                if (url.contains(apiData.getString("mobile.website.url", null)) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals")) {
466
                                    pd = new ProgressDialog(getActivity());
467
                                    pd.setTitle("Please wait");
468
                                    pd.setMessage("Loading..");
469
                                    pd.show();
470
                                }
16080 manas 471
                                //getDisplayActionBar(url);
472
                                getOrderSuccessUrlConfirmation(url);
14792 manas 473
                                if (displayActionBar) {
474
                                    pd1 = new ProgressDialog(getActivity());
475
                                    pd1.setTitle("Please wait");
476
                                    pd1.setMessage("Loading..");
477
                                    pd1.show();
478
                                }
479
                            }
480
                        }
15356 manas 481
                        if(Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data","false").equalsIgnoreCase("true")){
14792 manas 482
 
14991 manas 483
                        }else {
484
                            obj = new JSONObject();
485
                            JSONObject j = new JSONObject();
486
                            JSONArray jsArray = new JSONArray();
487
                            j.put("url", url);
488
                            j.put("user_id", userData.getString("id", null));
489
                            j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
490
                            jsArray.put(j);
491
                            obj.put("pushdata", jsArray);
492
                            new pushData().execute();
493
                        }
14792 manas 494
                        storeSubTagId(url);
495
                    }
496
                } catch (Exception e) {
497
                    e.printStackTrace();
498
                }
499
        }
500
 
501
        @Override
502
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
503
            super.onReceivedError(view, errorCode, description, failingUrl);
504
            SearchFragment nextFrag= new SearchFragment();
505
            Bundle args = new Bundle();
506
            args.putString("finishingurl",failingUrl);
507
            nextFrag.setArguments(args);
508
            getActivity().getFragmentManager().beginTransaction()
509
                    .replace(R.id.frame_container, nextFrag)
510
                    .addToBackStack(null)
511
                    .commit();
512
        }
513
 
514
        @Override
515
        public synchronized  void onPageFinished(WebView view, String url) {
516
        super.onPageFinished(view, url);
517
        try {
518
 
519
            if (url.contains(apiData.getString("mobile.website.url", "")) || url.equalsIgnoreCase("http://api.profittill.com/categorydeals")) {
520
                pd.dismiss();
521
            }
522
            if(snapdealPageLoad==1){
523
                snapdealPageLoad=0;
524
            }
525
            if(pd2!=null){
526
                pd2.dismiss();
527
            }
16452 manas 528
            if(Uri.parse(url).getHost().equalsIgnoreCase("paytm.com")){
529
                view.loadUrl("javascript:try{" +
530
                        "var lastUrl=document.URL;" +
531
                        "setInterval(function(){var currentUrl=document.URL;" +
532
                        "if(currentUrl!=lastUrl){window.HTMLOUT.paytmUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
533
                        "}catch(error){Android.onError(error.message);}");
534
            }
15356 manas 535
            if(Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data","false").equalsIgnoreCase("true")){
14991 manas 536
                saholicUrl=url;
537
                view.loadUrl("javascript:window.HTMLOUT.saholicHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
538
            }
14792 manas 539
            if (url.contains(apiData.getString("amazon.tracking.order.url", ""))) {
17503 manas 540
                 fetchOrderDetails();
14792 manas 541
            }
542
            if (displayActionBar) {
543
                if (url.contains("amazon")) {
544
                    view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
545
                    pd1.dismiss();
546
                    amazonWebView = new WebView(webView.getContext());
547
                    amazonWebView.setVisibility(View.GONE);
548
                    amazonWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
549
                    amazonWebView.getSettings().setJavaScriptEnabled(true);
550
 
16452 manas 551
                } else if(url.contains(ProfitTillConstants.PAYTM)) {
552
                    PaytmWebViewClient paytmWebViewClient = new PaytmWebViewClient();
553
                    pd1.dismiss();
554
                    paytmWebView = new WebView(webView.getContext());
555
                    paytmWebView.setVisibility(View.GONE);
556
                    paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
557
                    paytmWebView.getSettings().setJavaScriptEnabled(true);
558
                    paytmWebView.loadUrl(getPaytmReferer(url));
559
                    paytmWebView.setWebViewClient(paytmWebViewClient);
14792 manas 560
                } else {
561
                    view.loadUrl("javascript:window.HTMLOUT.flipkartHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
562
                    pd1.dismiss();
563
                }
564
            }
565
 
566
            amazonOrderHistoryWebView = new WebView(webView.getContext());
567
            amazonOrderHistoryWebView.setVisibility(View.GONE);
568
            amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
569
            amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
570
            amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
571
 
572
            amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
573
            amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
574
            amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
575
            amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
576
            amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
577
 
578
            amazonAllUrlsWebView = new WebView(webView.getContext());
579
            amazonAllUrlsWebView.setVisibility(View.GONE);
580
            amazonAllUrlsWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
581
            amazonAllUrlsWebView.getSettings().setJavaScriptEnabled(true);
582
            amazonAllUrlsWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
583
 
584
            if (url.contains("https://www.amazon.in/ap/signin")) {
585
                if (!FLAG) {
586
                    FLAG = true;
17503 manas 587
                    userDataEditor.putString("amazonOrder","true").commit();
588
                    userDataEditor.putBoolean("amazonLoggedIn",true).commit();
14792 manas 589
                }
590
            } else if (FLAG) {
591
                amazonOrderHistoryWebView = new WebView(webView.getContext());
592
                amazonOrderHistoryWebView.setVisibility(View.GONE);
593
                amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
594
                amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
595
                amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
596
                amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
597
                amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
598
                amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
599
                amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
600
                amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
601
                fetchOrderDetails();
602
                FLAG = false;
603
            }
604
 
605
            view.setOnKeyListener(new View.OnKeyListener() {
606
                @Override
607
                public boolean onKey(View v, int keyCode, KeyEvent event) {
608
                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
609
                        WebView webView = (WebView) v;
610
                        switch (keyCode) {
611
                            case KeyEvent.KEYCODE_BACK:
612
                                if ((webView.canGoBack() && !webView.getUrl().contains(apiData.getString("mobile.website.url", null))) || pageRedirect==2) {
613
                                    webView.goBack();
614
                                    pageRedirect=0;
615
                                    snapdealPageLoad=0;
616
                                    return true;
617
                                } 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", ""))) {
618
                                    Intent i = new Intent(getActivity(), MainActivity.class);
619
                                    i.putExtra("displayView", "0");
620
                                    startActivity(i);
621
                                    return true;
622
                                } else if (webView.getUrl().contains(apiData.getString("mobile.website.url", null))) {
623
                                    new AlertDialog.Builder(getActivity())
624
                                            .setIcon(android.R.drawable.ic_dialog_alert)
625
                                            .setTitle("Exit!")
626
                                            .setMessage("Are you sure you want to close?")
627
                                            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
628
                                                @Override
629
                                                public void onClick(DialogInterface dialog, int which) {
630
                                                    Intent startMain = new Intent(Intent.ACTION_MAIN);
631
                                                    startMain.addCategory(Intent.CATEGORY_HOME);
632
                                                    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
633
 
634
                                                    startActivity(startMain);
635
                                                }
636
 
637
                                            })
638
                                            .setNegativeButton("No", null)
639
                                            .show();
640
                                } else {
641
                                    Intent i = new Intent(getActivity(), MainActivity.class);
642
                                    i.putExtra("displayView", "0");
643
                                    startActivity(i);
644
                                    return true;
645
                                }
646
 
647
                                break;
648
                        }
649
                    }
650
 
651
                    return false;
652
                }
653
            });
654
 
655
        }catch (Exception e){
656
            e.printStackTrace();
657
            TestinAgent.uploadException(getActivity(),"On Page Finished",e);
658
        }
659
        }
660
    }
661
    private boolean appInstalledOrNot(String uri) {
662
        PackageManager pm = getActivity().getPackageManager();
663
        boolean app_installed = false;
664
        try {
665
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
666
            app_installed = true;
667
        }
668
        catch (PackageManager.NameNotFoundException e) {
669
            app_installed = false;
670
        }
671
        return app_installed ;
672
    }
673
    @Override
674
    public void onResume() {
675
        super.onResume();
676
        getView().setFocusableInTouchMode(true);
677
        getView().requestFocus();
678
        getView().setOnKeyListener(new View.OnKeyListener() {
679
            @Override
680
            public boolean onKey(View v, int keyCode, KeyEvent event) {
681
 
682
                if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
683
                    try {
684
                        if (landingURL.contains((apiData.getString("mobile.website.url", "")))) {
685
                            new AlertDialog.Builder(getActivity())
686
                                    .setIcon(android.R.drawable.ic_dialog_alert)
687
                                    .setTitle("Exit!")
688
                                    .setMessage("Are you sure you want to close?")
689
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
690
                                        @Override
691
                                        public void onClick(DialogInterface dialog, int which) {
692
                                            Intent startMain = new Intent(Intent.ACTION_MAIN);
693
                                            startMain.addCategory(Intent.CATEGORY_HOME);
694
                                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
695
                                            startActivity(startMain);
696
                                        }
697
 
698
                                    })
699
                                    .setNegativeButton("No", null)
700
                                    .show();
701
                            return true;
702
                        } else {
703
                            if (webView.canGoBack()) {
704
                                webView.goBack();
705
                            } else {
706
                                Intent i = new Intent(getActivity(), MainActivity.class);
707
                                i.putExtra("displayView", "0");
708
                                startActivity(i);
709
                            }
710
                            return true;
711
 
712
                        }
713
 
714
                    } catch (Exception e) {
715
                        e.printStackTrace();
716
                        return false;
717
                    }
718
                }
719
                return false;
720
                }
721
 
722
        });
723
    }
724
 
725
    public void fetchOrderDetails(){
726
        if(isInternetOn()) {
727
           new FetchOrderURLS().execute();
728
        }
729
    }
730
 
731
    public void pushDataInAmazon(String orderId){
732
 
733
        AmazonOrderDetails amazonOrderClient = new AmazonOrderDetails();
734
        nameValuePairsRawHtmlAmazon=new ArrayList<NameValuePair>();
735
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("user_id",userData.getString("id",null)));
736
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("id",orderId));
737
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("store_id",apiData.getString("store.code.amazon",null)));
738
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("order_url",amazonData.getString("amazonurl","")));
739
        //nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
740
        amazonWebView.loadUrl(amazonData.getString("amazonurl",""));
741
        amazonWebView.setWebViewClient(amazonOrderClient);
742
 
743
    }
744
 
745
    public void storeSubTagId(String url){
746
 
16452 manas 747
        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")))
14792 manas 748
        {
749
            StringTokenizer st2 = new StringTokenizer(url, "&");
750
            while (st2.hasMoreElements()) {
751
                String token=st2.nextToken();
16452 manas 752
                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"))){
14792 manas 753
                    String subtagId=userData.getString("subtag","null");
754
                    if(subtagId==null){
755
                        userDataEditor.putString("subtag",token.split("=")[1]);
756
                        userDataEditor.commit();
757
                    }
758
                    else{
759
                        userDataEditor.remove("subtag");
760
                        userDataEditor.commit();
761
                        userDataEditor.putString("subtag",token.split("=")[1]);
762
                        userDataEditor.commit();
763
                    }
764
                }
765
                else
766
                    continue;
767
            }
768
        }
769
        else
770
            return;
771
    }
772
 
773
 
774
    boolean displayActionBar;
775
    public void getDisplayActionBar(String url) throws Exception{
776
        String snapdealConfirmation = apiData.getString("snapdeal.order.success.url",null);
777
        String flipkartConfirmation = apiData.getString("flipkart.order.success.url",null);
778
        String amazonConfirmation = apiData.getString("amazon.order.success.url",null);
779
        String amazonThankYouConfirmation = apiData.getString("amazon.order.success.thankyou.url",null);
780
        String saholicConfirmation = apiData.getString("saholic.order.success.url",null);
781
        if(url.contains(snapdealConfirmation) || url.contains(flipkartConfirmation) || url.contains(amazonConfirmation) || url.contains(amazonThankYouConfirmation) || url.contains(saholicConfirmation)){
782
            displayActionBar=true;
783
            String storeID = getStoreId(url);
784
            if(storeID==null){
785
                Log.e("Deals Page Activity", "Null value returned for storeID");
786
            }
787
            else{
788
                nameValuePairsRawHtml=new ArrayList<NameValuePair>();
789
                nameValuePairsRawHtml.add(new BasicNameValuePair("user_id",userData.getString("id",null)));
790
                nameValuePairsRawHtml.add(new BasicNameValuePair("store_id",storeID));
791
                nameValuePairsRawHtml.add(new BasicNameValuePair("order_url",url));
792
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
793
            }
794
        }
795
        else{
796
            displayActionBar = false;
797
        }
798
        return;
799
    }
800
 
16080 manas 801
    public void getOrderSuccessUrlConfirmation(String url) throws Exception{
802
        for(String s:orderSuccessUrlList){
803
            if(url.contains(s)){
804
                displayActionBar=true;
805
                String storeID = getStoreId(url);
806
                if(storeID==null){
807
                    Log.e("Deals Page Activity", "Null value returned for storeID");
808
                }
809
                else{
810
                    nameValuePairsRawHtml=new ArrayList<NameValuePair>();
811
                    nameValuePairsRawHtml.add(new BasicNameValuePair("user_id",userData.getString("id",null)));
812
                    nameValuePairsRawHtml.add(new BasicNameValuePair("store_id",storeID));
813
                    nameValuePairsRawHtml.add(new BasicNameValuePair("order_url",url));
814
                    nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag",userData.getString("subtag","")));
815
                }
816
                break;
817
            }
818
            else{
819
                displayActionBar = false;
820
            }
821
        }
822
        return;
823
    }
14792 manas 824
 
825
    public String getStoreId(String url){
16080 manas 826
       /* if(url.contains("snapdeal")){
14792 manas 827
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.snapdeal","0"));
828
            return apiData.getString("store.code.snapdeal",null);
829
        }
830
        else if(url.contains("flipkart")){
831
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.flipkart","0"));
832
            return apiData.getString("store.code.flipkart",null);
833
        }
834
        else if(url.contains("amazon")){
835
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.amazon","0"));
836
            return apiData.getString("store.code.amazon",null);
837
        }
838
        else if(url.contains("saholic")){
839
            return apiData.getString("store.code.spice",null);
840
        }
16080 manas 841
        else if(url.contains("shopclues")){
842
            return "7";
843
        }*/
844
        return UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,saholic=4,shopclues=5,")),url);
14792 manas 845
    }
846
 
847
    class pushData extends AsyncTask<String, Integer, String> {
848
 
849
        @Override
850
        protected void onPreExecute() {
851
            super.onPreExecute();
852
        }
853
 
854
        @Override
855
        protected String doInBackground(String... arg0) {
856
            HttpClient httpclient = new DefaultHttpClient();
857
            try {
858
 
859
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
860
                nameValuePairs.add(new BasicNameValuePair("pushdata",obj.toString()));
861
 
862
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
863
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
864
                httppost.setHeader("Authorization", basicAuth);
865
 
866
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
867
                System.out.println(obj.toString());
868
                StringEntity se = new StringEntity(obj.toString());
869
                HttpResponse response = httpclient.execute(httppost);
870
                int status = response.getStatusLine().getStatusCode();
871
 
872
                if(status == 200){
873
                    return "success";
874
                } else {
875
                    return "failure";
876
                }
877
 
878
            } catch (ClientProtocolException e) {
879
                return "failure";
880
            } catch (IOException e) {
881
                return "failure";
882
            }
883
        }
884
 
885
        @Override
886
        protected void onPostExecute(String result) {
887
            super.onPostExecute(result);
888
        }
889
    }
890
    ArrayList<NameValuePair> nameValuePairsRawHtml=new ArrayList<NameValuePair>();
891
    ArrayList<NameValuePair> nameValuePairsRawHtmlAmazon=new ArrayList<NameValuePair>();
892
    class javascriptInterface{
893
 
894
        Context mContext;
895
 
896
        /** Instantiate the interface and set the context */
897
        public javascriptInterface(Context c){
898
            mContext = c;
899
        }
900
 
901
        /** Show a toast from the web page */
902
        @JavascriptInterface
903
        public void showToast(String toast) {
14991 manas 904
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
14792 manas 905
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
906
            List<List<NameValuePair>> postDataNameValuePair =  new ArrayList<List<NameValuePair>>();
907
            postDataNameValuePair=orderDetails.readData1();
908
            for(List<NameValuePair> orderDetail : postDataNameValuePair) {
14991 manas 909
                orderDetail.add(new BasicNameValuePair("zip","1"));
15356 manas 910
                orderDetail.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
911
                orderDetail.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
912
                orderDetail.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 913
                PushRawHTML pm =new  PushRawHTML();
914
                pm.execute(orderDetail);
915
            }
916
        }
917
 
918
        @JavascriptInterface
919
        public void  amazonOrderTrackingHTML(String html) {
14991 manas 920
            amazonOrderTrackingData.add(new BasicNameValuePair("rawhtml",UtilityFunctions.compress(html)));
921
            amazonOrderTrackingData.add(new BasicNameValuePair("zip","1"));
15356 manas 922
            amazonOrderTrackingData.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
923
            amazonOrderTrackingData.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
924
            amazonOrderTrackingData.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 925
            new AmazonOrderTrackingDetails().execute(amazonOrderTrackingData);
926
        }
927
 
928
        @JavascriptInterface
929
        public void showHTML(String html) {
930
            showToast(html);
931
        }
932
 
933
        @JavascriptInterface
934
        public void flipkartHTML(String html) {
14991 manas 935
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml",UtilityFunctions.compress(html)));
14792 manas 936
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
937
            List<List<NameValuePair>> postDataNameValuePair =  new ArrayList<List<NameValuePair>>();
938
            postDataNameValuePair=orderDetails.readData1();
939
            for(List<NameValuePair> orderDetail : postDataNameValuePair) {
14991 manas 940
                orderDetail.add(new BasicNameValuePair("zip","1"));
15356 manas 941
                orderDetail.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
942
                orderDetail.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
943
                orderDetail.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 944
                new loadData().execute(orderDetail);
945
            }
946
        }
14991 manas 947
 
948
        @JavascriptInterface
949
        public void saholicHTML(String html) {
950
 
951
            try {
952
                obj = new JSONObject();
953
                jSaholic = new JSONObject();
954
                jSaholic.put("html", UtilityFunctions.compress(html));
955
                jSaholic.put("zip", "1");
956
                jSaholic.put("user_id", userData.getString("id", null));
957
            } catch (Exception e) {
958
 
959
            }
960
            new checkGateWayProblem().execute(saholicUrl);
961
        }
16452 manas 962
 
963
        @JavascriptInterface
964
        public void paytmUrls(String html){
965
            try{
966
                obj = new JSONObject();
967
                JSONObject j = new JSONObject();
968
                JSONArray jsArray = new JSONArray();
969
                Log.d("URL in page start","Url in page start "  + html);
970
                j.put("url", html);
971
                j.put("user_id", userData.getString("id", null));
972
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
973
                jsArray.put(j);
974
                obj.put("pushdata", jsArray);
975
                new pushData().execute();
976
            }catch (Exception e){
977
                e.printStackTrace();
978
            }
979
            if (html.contains("https://paytm.com/login")) {
980
                if (!PAYTMFLAG) {
981
                    PAYTMFLAG = true;
982
                    userDataEditor.putString("paytmOrder","true").commit();
983
                    userDataEditor.putBoolean("paytmLoggedIn",true).commit();
984
                }
985
            } else if (PAYTMFLAG) {
986
                new PaytmOrderURL().execute();
987
                PAYTMFLAG=false;
988
            }
989
        }
14792 manas 990
    }
991
 
992
 
993
 
994
 
995
    class loadData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
996
 
997
        @Override
998
        protected void onPreExecute() {
999
            super.onPreExecute();
1000
        }
1001
 
1002
        @Override
1003
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1004
 
1005
 
1006
                try {
1007
                    HttpClient httpclient = new DefaultHttpClient();
1008
                    HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
1009
                    httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1010
 
1011
                    httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1012
                    HttpResponse response = httpclient.execute(httppost);
1013
                    HttpEntity entity = response.getEntity();
1014
 
1015
                    int status = response.getStatusLine().getStatusCode();
1016
 
1017
                    if(status == 200){
1018
                        NameValuePair y = orderDetail[0].get(2);
1019
                        int z =orderDetails.deleteRecord(y.getName(),new String[]{y.getValue()});
1020
                    } else {
14991 manas 1021
                        Log.d("Status in load Data " ,"Status Load data " + status);
1022
 
14792 manas 1023
                    }
1024
                    String getJSON = EntityUtils.toString(entity);
1025
                    if(getJSON==null){
1026
                        return null;
1027
                    }else {
1028
                        JSONObject jObjGmail = new JSONObject(getJSON);
1029
                        return jObjGmail;
1030
                    }
1031
                } catch (Exception e) {
1032
                    return null;
1033
                }
1034
            }
1035
 
1036
 
1037
        @Override
1038
        protected void onPostExecute(JSONObject result) {
1039
            if(result==null){
1040
                //Log.d("Error in fetching result ", "Flipkart html ");
1041
            }
1042
            else {
1043
               try {
1044
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
1045
                        orderDetails.deleterecords();
1046
                } catch (Exception e) {
1047
                }
1048
            }
1049
            super.onPostExecute(result);
1050
        }
1051
    }
1052
 
1053
 
1054
    class AmazonOrderDetails extends WebViewClient {
1055
 
1056
        @Override
1057
        public void onReceivedHttpAuthRequest(WebView view,
1058
                                              HttpAuthHandler handler, String host, String realm) {
1059
 
1060
            handler.proceed("dtr", "dtr18Feb2015");
1061
 
1062
        }
1063
 
1064
        @Override
1065
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1066
            super.onPageStarted(view, url, favicon);
1067
        }
1068
 
1069
        @Override
1070
        public void onPageFinished(WebView view, String url) {
1071
            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1072
            super.onPageFinished(view, url);
1073
        }
1074
    }
1075
 
1076
    class amazonInterface{
1077
 
1078
        Context mContext;
1079
 
1080
        /** Instantiate the interface and set the context */
1081
        public amazonInterface(Context c){
1082
            mContext = c;
1083
        }
1084
 
1085
        /** Show a toast from the web page */
1086
        @JavascriptInterface
1087
        public void showToast(String toast) {
14991 manas 1088
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("rawhtml",UtilityFunctions.compress(toast)));
1089
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("zip","1"));
15356 manas 1090
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
1091
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
1092
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 1093
            if(isInternetOn()) {
1094
                    new amazonPushData().execute(nameValuePairsRawHtmlAmazon);
1095
          }
1096
        }
1097
 
1098
 
1099
        @JavascriptInterface
1100
        public void showHTML(String html) {
1101
            showToast(html);
1102
        }
1103
 
1104
        @JavascriptInterface
1105
        public void orderHistory(String html) {
1106
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1107
            amazonOrderHistory.add(new BasicNameValuePair("url",str.get(0)));
14991 manas 1108
            amazonOrderHistory.add(new BasicNameValuePair("html",UtilityFunctions.compress(html)));
1109
            amazonOrderHistory.add(new BasicNameValuePair("zip","1"));
15356 manas 1110
            amazonOrderHistory.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
1111
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
1112
            amazonOrderHistory.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 1113
            if(isInternetOn()) {
1114
                new pushQueuedData().execute(amazonOrderHistory);
17503 manas 1115
                userDataEditor.putLong("amazonNextFetchTime",System.currentTimeMillis()+ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
14792 manas 1116
            }
1117
        }
1118
        @JavascriptInterface
1119
        public void cancelledHistory(String html) {
1120
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1121
            amazonOrderHistory.add(new BasicNameValuePair("url",str.get(j++)));
14991 manas 1122
            amazonOrderHistory.add(new BasicNameValuePair("html",UtilityFunctions.compress(html)));
1123
            amazonOrderHistory.add(new BasicNameValuePair("zip","1"));
15356 manas 1124
            amazonOrderHistory.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
1125
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
1126
            amazonOrderHistory.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 1127
            if(isInternetOn()) {
1128
                new pushCancelledQueuedData().execute(amazonOrderHistory);
17503 manas 1129
                userDataEditor.putLong("amazonNextFetchTime",System.currentTimeMillis()+ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
14792 manas 1130
            }
1131
        }
1132
 
1133
        @JavascriptInterface
1134
        public void amazonOrderUrls(String html) {
1135
            //Log.e("OrderUrls","Order amazonOrderUrls" + html);
1136
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1137
            amazonOrderHistory.add(new BasicNameValuePair("url",str.get(1)));
14991 manas 1138
            amazonOrderHistory.add(new BasicNameValuePair("html",UtilityFunctions.compress(html)));
1139
            amazonOrderHistory.add(new BasicNameValuePair("zip","1"));
15356 manas 1140
            amazonOrderHistory.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
1141
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
1142
            amazonOrderHistory.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
14792 manas 1143
            if(isInternetOn()) {
1144
                new pushCancelledQueuedData().execute(amazonOrderHistory);
1145
            }
1146
            else{
1147
 
1148
            }
1149
        }
1150
 
1151
    }
1152
    int j;
1153
    class amazonPushData extends AsyncTask<List<NameValuePair>, Integer, String> {
1154
        private StringBuilder sb;
1155
 
1156
        private HttpResponse req;
1157
        private InputStream is;
1158
 
1159
        @Override
1160
        protected void onPreExecute() {
1161
            super.onPreExecute();
1162
            Log.e("Pre execute", "Pre execute");
1163
 
1164
        }
1165
 
1166
        @Override
1167
        protected String doInBackground(List<NameValuePair>... orderDetail) {
1168
            try {
1169
                HttpClient httpclient = new DefaultHttpClient();
1170
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api",null));
1171
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1172
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1173
                HttpResponse response = httpclient.execute(httppost);
1174
                HttpEntity entity = response.getEntity();
1175
                int status = response.getStatusLine().getStatusCode();
1176
 
1177
                if(status == 200){
1178
                    System.out.println("ResponseCode of record: "+ status + " is " + status);
1179
                    NameValuePair y = orderDetail[0].get(2);
1180
                    int z =orderDetails.deleteRecord(y.getName(),new String[]{y.getValue()});
1181
                    amazonapiSettingsEditor.remove("amazonurl");
1182
                    amazonapiSettingsEditor.commit();
1183
                } else {
1184
                    /*Log.d("ResponseCode",status+"");
1185
                    System.out.println(" NOT Transfered");
1186
                    Log.d("ResponseCode",status+"");*/
1187
                }
1188
/*                Log.e("pass 1", "Amazon success ");*/
1189
            } catch (Exception e) {
1190
/*                Log.e("Fail 1", e.toString());*/
1191
 
1192
            }
1193
            return "success";
1194
        }
1195
 
1196
        @Override
1197
        protected void onPostExecute(String result) {
1198
            super.onPostExecute(result);
1199
            new FetchOrderURLS().execute();
1200
        }
1201
    }
1202
 
1203
 
1204
    class PushRawHTML extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1205
        @Override
1206
        protected void onPreExecute() {
1207
            super.onPreExecute();
1208
        }
1209
 
1210
        @Override
1211
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1212
 
1213
            try {
1214
                HttpClient httpclient = new DefaultHttpClient();
1215
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api",null));
1216
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1217
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1218
                HttpResponse response = httpclient.execute(httppost);
1219
                HttpEntity entity = response.getEntity();
1220
                int status = response.getStatusLine().getStatusCode();
1221
 
1222
                if(status == 200){
1223
                    NameValuePair y = orderDetail[0].get(2);
1224
                    int z =orderDetails.deleteRecord(y.getName(),new String[]{y.getValue()});
1225
                } else {
1226
                }
1227
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
15588 manas 1228
 
14792 manas 1229
                return jObjGmail;
1230
            } catch (Exception e) {
1231
                return null;
1232
            }
1233
        }
1234
 
1235
        @Override
1236
        protected void onPostExecute(JSONObject result) {
1237
            super.onPostExecute(result);
1238
            try {
17503 manas 1239
                userDataEditor.putString("amazonOrder","true").commit();
1240
                userDataEditor.putBoolean("amazonLoggedIn",true).commit();
1241
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis()+ ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
14792 manas 1242
                if (result.getString("htmlRequired").equalsIgnoreCase("true")) {
1243
                    String orderId = result.getString("orderId");
1244
                    amazonapiSettingsEditor.putString("amazonurl",result.getString("url"));
1245
                    amazonapiSettingsEditor.commit();
1246
                    pushDataInAmazon(orderId);
1247
                }
1248
            }catch (Exception e){
15588 manas 1249
 
14792 manas 1250
            }
1251
        }
1252
    }
1253
 
1254
    class AmazonOrderTrackingDetails extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1255
        @Override
1256
        protected void onPreExecute() {
1257
            super.onPreExecute();
1258
        }
1259
 
1260
        @Override
1261
        protected JSONObject doInBackground(List<NameValuePair>... arg0) {
1262
            try {
1263
                HttpClient httpclient = new DefaultHttpClient();
1264
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api",null));
1265
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1266
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1267
                HttpResponse response = httpclient.execute(httppost);
1268
                HttpEntity entity = response.getEntity();
1269
                int status = response.getStatusLine().getStatusCode();
1270
 
1271
                if(status == 200){
1272
                } else {
1273
                }
1274
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1275
                return jObjGmail;
1276
 
1277
            } catch (Exception e) {
1278
                return null;
1279
            }
1280
        }
1281
 
1282
        @Override
1283
        protected void onPostExecute(JSONObject result) {
1284
            super.onPostExecute(result);
1285
        }
1286
    }
1287
 
17503 manas 1288
    class pushQueuedData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
14792 manas 1289
        @Override
1290
        protected void onPreExecute() {
1291
            super.onPreExecute();
1292
        }
1293
 
1294
        @Override
17503 manas 1295
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
14792 manas 1296
 
1297
            try {
1298
                HttpClient httpclient = new DefaultHttpClient();
1299
 
1300
                String fetchUrl = apiData.getString("amazon.order.tracking.post.url",null)+"?user_id="+ userData.getString("id","")+"&store_id=" + apiData.getString("store.code.amazon","1");
1301
                HttpPost httppost = new HttpPost(fetchUrl);
1302
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1303
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
1304
                HttpResponse response = httpclient.execute(httppost);
1305
                HttpEntity entity = response.getEntity();
17503 manas 1306
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1307
                return jObjGmail;
14792 manas 1308
 
1309
            } catch (Exception e) {
1310
                return null;
1311
            }
1312
 
1313
        }
1314
 
1315
        @Override
17503 manas 1316
        protected void onPostExecute(JSONObject result) {
14792 manas 1317
            super.onPostExecute(result);
1318
            try {
17503 manas 1319
                if (result == null) {
1320
 
1321
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
1322
                    userDataEditor.putBoolean("amazonLoggedIn",false).commit();
1323
                }else{
1324
                    addOrderHistoryCancelled(str.get(1));
1325
                }
14792 manas 1326
            }catch (Exception e){
1327
                e.printStackTrace();
1328
            }
1329
        }
1330
    }
1331
 
1332
    class pushCancelledQueuedData extends AsyncTask<List<NameValuePair>, Integer, String> {
1333
 
1334
        @Override
1335
        protected void onPreExecute() {
1336
            super.onPreExecute();
1337
        }
1338
 
1339
        @Override
1340
        protected String doInBackground(List<NameValuePair>... pushOrder) {
1341
 
1342
            try {
1343
                HttpClient httpclient = new DefaultHttpClient();
1344
 
1345
                String fetchUrl = apiData.getString("amazon.order.tracking.post.url",null)+"?user_id="+ userData.getString("id","")+"&store_id=" + apiData.getString("store.code.amazon","1");
1346
                HttpPost httppost = new HttpPost(fetchUrl);
1347
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1348
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
1349
                HttpResponse response = httpclient.execute(httppost);
1350
                HttpEntity entity = response.getEntity();
1351
 
1352
            return "success";
1353
            } catch (Exception e) {
1354
                return "failure";
1355
            }
1356
 
1357
        }
1358
 
1359
        @Override
1360
        protected void onPostExecute(String result) {
1361
            super.onPostExecute(result);
1362
            try {
1363
                addOrderHistoryCancelled(str.get(++sizeList));
1364
            }catch(Exception e){
1365
                e.printStackTrace();
1366
            }
1367
            FLAG=false;
1368
        }
1369
    }
1370
 
1371
    int sizeList;
1372
    class FetchOrderURLS extends AsyncTask<String, Integer, JSONObject> {
1373
 
1374
        @Override
1375
        protected void onPreExecute() {
1376
            super.onPreExecute();
1377
        }
1378
 
1379
        @Override
1380
        protected JSONObject doInBackground(String... arg0) {
1381
            HttpClient httpclient = new DefaultHttpClient();
1382
            try {
1383
                String fetchUrl = apiData.getString("amazon.order.tracking.get.url",null)+"?user_id="+ userData.getString("id","")+"&store_id=" + apiData.getString("store.code.amazon","1");
1384
                HttpGet httppost = new HttpGet(fetchUrl);
1385
 
1386
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1387
                HttpResponse response = httpclient.execute(httppost);
1388
                HttpEntity entity = response.getEntity();
1389
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1390
                return jObjGmail;
1391
 
1392
            } catch (ClientProtocolException e) {
1393
                return null;
1394
            } catch (IOException e) {
1395
                return null;
1396
            }catch (Exception e){
1397
                return null;
1398
            }
1399
        }
1400
 
1401
        @Override
1402
        protected void onPostExecute(JSONObject result) {
1403
            super.onPostExecute(result);
1404
            try {
1405
                if(result==null){
17503 manas 1406
                    userDataEditor.putString("amazonOrder","false").commit();
14792 manas 1407
                }else{
17503 manas 1408
                    if (result.length() == 0) {
1409
                        userDataEditor.putString("amazonOrder", "false").commit();
1410
                    }else {
1411
                        JSONArray js = result.getJSONArray("result");
1412
                        if(js.length()!=0) {
1413
                            str = new ArrayList<>();
1414
                            for (int i = 0; i < js.length(); i++) {
1415
                                String s = js.getString(i);
1416
                                str.add(s);
1417
                            }
1418
                            sizeList = 1;
1419
                            j = 1;
1420
                            addOrderHistory(str.get(0));
1421
                        }else{
1422
                            userDataEditor.putString("amazonOrder","false").commit();
1423
                        }
14792 manas 1424
                    }
1425
                }
1426
            }catch (Exception e){
1427
            }
1428
        }
1429
    }
1430
    int count=0;
1431
    List<String> str;
1432
    public void addOrderHistory(String s){
1433
        AmazonOrderHistoryDetails amazonOrderClient = new AmazonOrderHistoryDetails();
17503 manas 1434
        amazonOrderHistoryWebView = new WebView(webView.getContext());
1435
        amazonOrderHistoryWebView.setVisibility(View.GONE);
1436
        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
1437
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
1438
        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
14792 manas 1439
        amazonOrderHistoryWebView.loadUrl(s);
1440
        amazonOrderHistoryWebView.setWebViewClient(amazonOrderClient);
1441
    }
1442
    public void addOrderHistoryCancelled(String s){
1443
        AmazonOrderCancelledDetails amazonOrderClient1 = new AmazonOrderCancelledDetails();
17503 manas 1444
        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
1445
        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
1446
        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
1447
        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
1448
        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
14792 manas 1449
        amazonOrderHistoryCancelledWebView.loadUrl(s);
1450
        amazonOrderHistoryCancelledWebView.setWebViewClient(amazonOrderClient1);
1451
    }
1452
 
17503 manas 1453
    class AmazonOrderHistoryDetails extends WebViewClient {
14792 manas 1454
 
1455
        @Override
1456
        public void onReceivedHttpAuthRequest(WebView view,
1457
                                              HttpAuthHandler handler, String host, String realm) {
1458
 
1459
            handler.proceed("dtr", "dtr18Feb2015");
1460
 
1461
        }
1462
 
1463
        @Override
1464
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1465
            super.onPageStarted(view, url, favicon);
1466
        }
1467
 
1468
        @Override
1469
        public void onPageFinished(WebView view, String url) {
1470
            super.onPageFinished(view, url);
1471
            if(url.contains("signin")){
17503 manas 1472
                userDataEditor.putBoolean("amazonLoggedIn",false).commit();
14792 manas 1473
            }
1474
            else {
1475
                view.loadUrl("javascript:window.HTMLOUT.orderHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1476
            }
1477
        }
1478
    }
1479
 
1480
    class AmazonOrderCancelledDetails extends WebViewClient {
1481
 
1482
        @Override
1483
        public void onReceivedHttpAuthRequest(WebView view,
1484
                                              HttpAuthHandler handler, String host, String realm) {
1485
 
1486
            handler.proceed("dtr", "dtr18Feb2015");
1487
 
1488
        }
1489
 
1490
        @Override
1491
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1492
            super.onPageStarted(view, url, favicon);
1493
        }
1494
 
1495
        @Override
1496
        public void onPageFinished(WebView view, String url) {
1497
            super.onPageFinished(view, url);
1498
            view.loadUrl("javascript:window.HTMLOUT.cancelledHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1499
        }
1500
    }
1501
 
1502
    public final boolean isInternetOn() {
1503
 
1504
        ConnectivityManager connec =
1505
                (ConnectivityManager)getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
1506
 
1507
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
1508
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
1509
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
1510
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
1511
            return true;
1512
 
1513
        } else if (
1514
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
1515
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
1516
 
1517
            return false;
1518
        }
1519
        return false;
1520
    }
1521
 
14991 manas 1522
    class checkGateWayProblem extends AsyncTask<String, Integer, String> {
1523
        @Override
1524
        protected void onPreExecute() {
1525
            super.onPreExecute();
1526
        }
1527
 
1528
        @Override
1529
        protected String doInBackground(String... arg0) {
1530
            HttpClient httpclient = new DefaultHttpClient();
1531
            try {
1532
                HttpPost httppost = new HttpPost(arg0[0]);
1533
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
1534
                httppost.setHeader("Authorization", basicAuth);
1535
                HttpResponse response = httpclient.execute(httppost);
1536
                int status = response.getStatusLine().getStatusCode();
1537
 
1538
                jsArraySaholic = new JSONArray();
1539
                jSaholic.put("url", arg0[0]);
1540
 
1541
                jSaholic.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1542
                jSaholic.put("httpstatus", status);
1543
                jSaholic.put("cookies", CookieManager.getInstance().getCookie(arg0[0]));
1544
                jsArraySaholic.put(jSaholic);
1545
                obj.put("pushdata", jsArraySaholic);
1546
                Log.d("status " ,"Status in checkGatewayProbelm " + status);
1547
                if(status == 200){
1548
                    return "success";
1549
                } else {
1550
                    return "failure";
1551
                }
1552
 
1553
            } catch (ClientProtocolException e) {
1554
                return "failure";
1555
            } catch (IOException e) {
1556
                return "failure";
1557
            }catch (JSONException e){
1558
                return "failure";
1559
            }
1560
        }
1561
 
1562
        @Override
1563
        protected void onPostExecute(String result) {
1564
            super.onPostExecute(result);
1565
            new pushData1().execute(obj);
1566
        }
1567
    }
1568
    class pushData1 extends AsyncTask<JSONObject, Integer, String> {
1569
 
1570
        @Override
1571
        protected void onPreExecute() {
1572
            super.onPreExecute();
1573
        }
1574
 
1575
        @Override
1576
        protected String doInBackground(JSONObject... arg0) {
1577
            HttpClient httpclient = new DefaultHttpClient();
1578
            try {
1579
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
1580
                nameValuePairs.add(new BasicNameValuePair("pushdata",arg0[0].toString()));
1581
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
1582
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
1583
                httppost.setHeader("Authorization", basicAuth);
1584
 
1585
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
1586
                System.out.println("JSON object in push Data 1 " + arg0[0].toString());
1587
                StringEntity se = new StringEntity(arg0[0].toString());
1588
                HttpResponse response = httpclient.execute(httppost);
1589
                int status = response.getStatusLine().getStatusCode();
1590
 
1591
                if(status == 200){
1592
                    return "success";
1593
                } else {
1594
                    return "failure";
1595
                }
1596
 
1597
            } catch (ClientProtocolException e) {
1598
                return "failure";
1599
            } catch (IOException e) {
1600
                return "failure";
1601
            }
1602
        }
1603
 
1604
        @Override
1605
        protected void onPostExecute(String result) {
1606
            super.onPostExecute(result);
1607
        }
1608
    }
1609
 
16452 manas 1610
    public void redirectPage(final AlertDialog builder){
1611
        Handler h =new Handler();
1612
        h.postDelayed(new Runnable() {
1613
            @Override
1614
            public void run() {
1615
                if(builder!=null){
1616
                    builder.dismiss();
1617
                }
1618
                userDataEditor.clear().commit();
1619
                startActivity(new Intent(getActivity(), LoginActivity.class));
1620
            }
1621
        },3000);
1622
 
14991 manas 1623
    }
1624
 
16452 manas 1625
    public void sendQueuedResponse(){
1626
 
1627
        List<List<NameValuePair>> postDataNameValuePair =  new ArrayList<List<NameValuePair>>();
1628
        postDataNameValuePair=orderDetails.readData1();
1629
        for(List<NameValuePair> orderDetail : postDataNameValuePair) {
1630
            orderDetail.add(new BasicNameValuePair("zip", "1"));
1631
            orderDetail.add(new BasicNameValuePair("wifi",UtilityFunctions.checkWifi(getActivity())+""));
1632
            orderDetail.add(new BasicNameValuePair("imeinumber",UtilityFunctions.getImeiNumber(getActivity())));
1633
            orderDetail.add(new BasicNameValuePair("appversion",UtilityFunctions.getAppVersion(getActivity())));
1634
            PushRawHTML pm =new  PushRawHTML();
1635
            pm.execute(orderDetail);
1636
        }
14991 manas 1637
    }
15356 manas 1638
 
1639
 
16452 manas 1640
    class PaytmWebViewClient extends WebViewClient {
15356 manas 1641
        @Override
16452 manas 1642
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1643
            super.onPageStarted(view, url, favicon);
1644
        }
1645
 
1646
        @Override
1647
        public void onPageFinished(WebView view, String url) {
1648
            super.onPageFinished(view, url);
1649
            if(url.contains(apiData.getString("paytm.myorders.url","paytm.com/myorders"))){
1650
                view.loadUrl("javascript:window.location='" + getPaytmUrl(url) + "';");
1651
            }else {
1652
                view.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);");
1653
            }
1654
        }
1655
    }
1656
 
1657
    public String getPaytmUrl(String url){
1658
        String returnUrl=null;
1659
        //Pattern p = Pattern.compile("[/]myorders/(\\d+)");
1660
        Pattern p = Pattern.compile(apiData.getString("paytm.myorders.pattern","[/]myorders/(\\d+)"));
1661
        Matcher m = p.matcher(url);
1662
        if (m.find()) {
1663
            returnUrl=m.group(1);
1664
        }
1665
        System.out.println(apiData.getString("paytm.orderdetail.url","https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2");
1666
        return  apiData.getString("paytm.orderdetail.url","https://paytm.com/shop/orderdetail/")+returnUrl+"?actions=1&channel=web&version=2";
1667
    }
1668
 
1669
 
1670
    public String getPaytmReferer(String url){
1671
        String returnUrl=null;
1672
        Pattern p = Pattern.compile(apiData.getString("paytm.summary.pattern","[/]summary/(\\d+)"));
1673
        //Pattern p = Pattern.compile("[/]summary/(\\d+)");
1674
        Matcher m = p.matcher(url);
1675
        if (m.find()) {
1676
            returnUrl=m.group(1);
1677
        }
1678
        System.out.println( "In paytm Referer" + apiData.getString("paytm.myorders.url","https://paytm.com/myorders/") +returnUrl);
1679
        return  apiData.getString("paytm.myorders.url","https://paytm.com/myorders/")+returnUrl;
1680
    }
1681
 
1682
 
1683
    class PaytmOrderURL extends AsyncTask<String, Integer, JSONObject> {
1684
 
1685
        @Override
15356 manas 1686
        protected void onPreExecute() {
1687
            super.onPreExecute();
1688
        }
1689
 
1690
        @Override
16452 manas 1691
        protected JSONObject doInBackground(String... arg0) {
15356 manas 1692
            HttpClient httpclient = new DefaultHttpClient();
1693
            try {
16452 manas 1694
                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");
1695
                HttpGet httppost = new HttpGet(fetchUrl);
15356 manas 1696
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1697
                HttpResponse response = httpclient.execute(httppost);
1698
                HttpEntity entity = response.getEntity();
1699
                int status = response.getStatusLine().getStatusCode();
1700
 
16452 manas 1701
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
15356 manas 1702
                return jObjGmail;
16452 manas 1703
            } catch (JSONException e) {
1704
                return null;
15356 manas 1705
            } catch (ClientProtocolException e) {
1706
                return null;
1707
            } catch (IOException e) {
16452 manas 1708
                e.printStackTrace();
15356 manas 1709
                return null;
1710
            }
1711
        }
1712
 
1713
        @Override
16452 manas 1714
        protected void onPostExecute(JSONObject result) {
15356 manas 1715
            super.onPostExecute(result);
16452 manas 1716
            try {
1717
                if (result != null) {
1718
                    if (result.length() == 0) {
1719
                        userDataEditor.putString("paytmOrder", "false").commit();
1720
                    } else {
1721
                        JSONArray js = result.getJSONArray("result");
1722
                        if(js.length()!=0) {
1723
                            strPaytmUrls = new ArrayList<>();
1724
                            strPaytmReferer = new ArrayList<>();
1725
                            for (int i = 0; i < js.length(); i++) {
1726
                                JSONObject paytmURLRef=js.getJSONObject(i);
1727
                                String url = paytmURLRef.getString("url");
1728
                                String referer = paytmURLRef.getString("referer");
1729
                                strPaytmUrls.add(url);
1730
                                strPaytmReferer.add(referer);
1731
                            }
1732
                            paytmOrderTracking(strPaytmUrls.get(0),strPaytmReferer.get(0));
1733
                        }else{
1734
                            userDataEditor.putString("paytmOrder", "false").commit();
1735
                        }
1736
                    }
1737
                }
1738
            }catch (Exception e){
1739
                e.printStackTrace();
1740
            }
1741
 
15356 manas 1742
        }
1743
    }
16452 manas 1744
 
1745
 
1746
    class PaytmOrderCreation extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1747
 
1748
        @Override
1749
        protected void onPreExecute() {
1750
            super.onPreExecute();
1751
        }
1752
 
1753
        @Override
1754
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1755
 
1756
 
1757
            try {
1758
                HttpClient httpclient = new DefaultHttpClient();
1759
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
1760
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1761
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1762
                HttpResponse response = httpclient.execute(httppost);
1763
                HttpEntity entity = response.getEntity();
1764
 
1765
                int status = response.getStatusLine().getStatusCode();
1766
 
1767
                if(status == 200){
1768
                    NameValuePair y = orderDetail[0].get(2);
1769
                    int z =orderDetails.deleteRecord(y.getName(),new String[]{y.getValue()});
1770
                } else {
15356 manas 1771
                }
16452 manas 1772
                String getJSON = EntityUtils.toString(entity);
1773
                if(getJSON==null){
1774
                    return null;
1775
                }else {
1776
                    JSONObject jObjGmail = new JSONObject(getJSON);
1777
                    return jObjGmail;
1778
                }
1779
            } catch (Exception e) {
1780
                return null;
15356 manas 1781
            }
16452 manas 1782
        }
15356 manas 1783
 
16452 manas 1784
 
1785
        @Override
1786
        protected void onPostExecute(JSONObject result) {
1787
            if(result==null){
1788
 
1789
            }
1790
            else {
1791
                userDataEditor.putString("paytmOrder", "true").commit();
1792
                userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis()+ 21600000).commit();
1793
                try {
1794
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
1795
                        orderDetails.deleterecords();
1796
                } catch (Exception e) {
1797
                }
1798
            }
1799
            super.onPostExecute(result);
1800
        }
15356 manas 1801
    }
15588 manas 1802
 
16452 manas 1803
    public void paytmOrderTracking(List<String> paytmUrls,List<String> paytmReferers){
1804
        for(int i=1;i<paytmReferers.size();i++) {
1805
            PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrls.get(i));
1806
            paytmWebView = new WebView(webView.getContext());
1807
            paytmWebView.setVisibility(View.GONE);
1808
            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
1809
            paytmWebView.getSettings().setJavaScriptEnabled(true);
1810
            paytmWebView.loadUrl(paytmReferers.get(i));
1811
            paytmWebView.setWebViewClient(paytmOrderTrackingClient);
1812
        }
1813
        userDataEditor.putLong("paytmNextFetchTime",System.currentTimeMillis()+21600000).commit();
1814
    }
15588 manas 1815
 
16452 manas 1816
    public void paytmOrderTracking(String paytmUrl,String paytmReferer){
1817
        PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrl);
1818
        paytmWebView = new WebView(webView.getContext());
1819
        paytmWebView.setVisibility(View.GONE);
1820
        paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
1821
        paytmWebView.getSettings().setJavaScriptEnabled(true);
1822
        paytmWebView.loadUrl(paytmReferer);
1823
        paytmWebView.setWebViewClient(paytmOrderTrackingClient);
1824
        userDataEditor.putLong("paytmNextFetchTime",System.currentTimeMillis()+21600000).commit();
1825
    }
1826
    class PaytmOrderTrackingClient extends WebViewClient {
1827
        String paytmUrlAfterReferer;
1828
        public PaytmOrderTrackingClient(String paytmUrl){
1829
            paytmUrlAfterReferer=paytmUrl;
15588 manas 1830
        }
16452 manas 1831
        @Override
1832
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1833
            super.onPageStarted(view, url, favicon);
1834
        }
1835
 
1836
        @Override
1837
        public void onPageFinished(WebView view, String url) {
1838
            super.onPageFinished(view, url);
1839
            if(url.contains(apiData.getString("paytm.myorders.url","paytm.com/myorders"))){
1840
                view.loadUrl("javascript:window.location='"+ paytmUrlAfterReferer+ "';");
1841
            }else {
1842
                view.loadUrl("javascript:window.HTMLOUT.paytmTracking(document.getElementsByTagName('html')[0].innerHTML);");
1843
            }
1844
        }
15588 manas 1845
    }
16452 manas 1846
    List<String> strPaytmUrls,strPaytmReferer;
1847
    int paytmCounter=0;
14792 manas 1848
 
16452 manas 1849
    class PaytmPushTrackingUrls extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1850
        @Override
1851
        protected void onPreExecute() {
1852
            super.onPreExecute();
1853
        }
14792 manas 1854
 
16452 manas 1855
        @Override
1856
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
14792 manas 1857
 
16452 manas 1858
            try {
1859
                HttpClient httpclient = new DefaultHttpClient();
1860
                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");
1861
                HttpPost httppost = new HttpPost(fetchUrl);
1862
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1863
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
1864
                HttpResponse response = httpclient.execute(httppost);
1865
                HttpEntity entity = response.getEntity();
1866
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1867
                return jObjGmail;
1868
            } catch (Exception e) {
1869
                return null;
1870
            }
1871
        }
1872
 
1873
        @Override
1874
        protected void onPostExecute(JSONObject result) {
1875
            super.onPostExecute(result);
1876
            try {
1877
                if (result == null) {
1878
 
1879
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
1880
                    userDataEditor.putBoolean("paytmLoggedIn",false).commit();
1881
                }else{
1882
                    paytmOrderTracking(strPaytmUrls,strPaytmReferer);
1883
                }
1884
            }catch(Exception e){
1885
                e.printStackTrace();
1886
            }
1887
        }
1888
    }
1889
 
1890
    class paytmInterface {
1891
 
1892
        Context mContext;
1893
 
1894
        public paytmInterface(Context c) {
1895
            mContext = c;
1896
        }
1897
 
1898
        @JavascriptInterface
1899
        public void showHTML(String html) {
1900
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
1901
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
1902
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1903
            postDataNameValuePair = orderDetails.readData1();
1904
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
1905
                orderDetail.add(new BasicNameValuePair("zip", "1"));
1906
                new PaytmOrderCreation().execute(orderDetail);
1907
            }
1908
        }
1909
 
1910
        @JavascriptInterface
1911
        public void paytmTracking(String html) {
1912
            try {
1913
                String url = strPaytmUrls.get(paytmCounter++);
1914
                List<NameValuePair> amazonOrderHistory = new ArrayList<NameValuePair>();
1915
                amazonOrderHistory.add(new BasicNameValuePair("url", url));
1916
                amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1917
                amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1918
                if (isInternetOn()) {
1919
                    new PaytmPushTrackingUrls().execute(amazonOrderHistory);
1920
                } else {
1921
 
1922
                }
1923
            }catch(Exception e){
1924
                e.printStackTrace();
1925
            }
1926
 
1927
        }
1928
    }
17056 manas 1929
 
1930
    public void onShareClick(String url){
1931
        try {
1932
            List<Intent> targetShareIntents = new ArrayList<Intent>();
1933
            Intent shareIntent = new Intent();
1934
            shareIntent.setAction(Intent.ACTION_SEND);
1935
            shareIntent.setType("text/plain");
1936
            List<ResolveInfo> resInfos = getActivity().getPackageManager().queryIntentActivities(shareIntent, 0);
1937
            if (!resInfos.isEmpty()) {
1938
                for (ResolveInfo resInfo : resInfos) {
1939
                    String packageName = resInfo.activityInfo.packageName;
1940
                    Intent intent = new Intent();
1941
                    intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
1942
                    intent.setAction(Intent.ACTION_SEND);
1943
                    intent.setType("text/plain");
1944
                    intent.putExtra(Intent.EXTRA_TEXT, Uri.parse(url).getQueryParameter("message"));
1945
                    intent.setPackage(packageName);
1946
                    targetShareIntents.add(intent);
1947
                }
1948
                if (!targetShareIntents.isEmpty()) {
1949
                    Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Choose app to share");
1950
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
1951
                    startActivity(chooserIntent);
1952
                }
1953
            }
1954
        }catch (Exception e){
1955
            e.printStackTrace();
1956
        }
1957
    }
16452 manas 1958
}