Subversion Repositories SmartDukaan

Rev

Rev 21271 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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