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