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