Subversion Repositories SmartDukaan

Rev

Rev 21327 | 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
        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");
803
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
804
        amazonOrderHistoryWebView.addJavascriptInterface(new javascriptInterface(getActivity()), "HTMLOUT");
22378 rajender 805
        amazonOrderHistoryWebView.loadUrl(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"));
21327 rajender 806
        amazonOrderHistoryWebView.setWebViewClient(fkView);
807
    }
808
 
809
    class ProcessFlipkartHtml extends AsyncTask<String, Integer, String> {
810
        @Override
811
        protected void onPreExecute() {
812
            super.onPreExecute();
813
        }
814
       @Override
815
       protected String doInBackground(String... arg0) {
816
           try {
817
               HttpClient httpclient = new DefaultHttpClient();
818
               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"));
819
               httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
820
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsRawHtml));
821
               HttpResponse response = httpclient.execute(httppost);
822
               HttpEntity entity = response.getEntity();
823
               int status = response.getStatusLine().getStatusCode();
824
 
825
               JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
826
               JSONObject jobj =jObjGmail.getJSONObject("result");
827
               JSONObject headers = jobj.getJSONObject("headers");
828
               JSONArray url =jobj.getJSONArray("urls");
829
               for (int i = 0; i <url.length(); i++) {
830
                   HttpClient client = new DefaultHttpClient();
831
                   HttpGet get = new HttpGet(url.getString(i));
832
                   Map<String, String> map = new HashMap<String, String>();
833
                   Iterator iter = headers.keys();
834
                   while (iter.hasNext()) {
835
                       String key = (String) iter.next();
836
                       String value = headers.getString(key);
837
                       get.setHeader(key, value);
838
                   }
839
                   HttpResponse resp = client.execute(get);
840
                   HttpEntity ent = resp.getEntity();
841
                   JSONObject jOb = new JSONObject(EntityUtils.toString(ent));
842
 
843
                   HttpClient http = new DefaultHttpClient();
844
                   ArrayList<NameValuePair> namevaluepairs = new ArrayList<>();
22378 rajender 845
                   namevaluepairs.add(new BasicNameValuePair("html",UtilityFunctions.compress(jOb.toString())));
21327 rajender 846
                   namevaluepairs.add(new BasicNameValuePair("url", url.getString(i)));
22378 rajender 847
                   namevaluepairs.add(new BasicNameValuePair("zip","1"));
21327 rajender 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) {
22378 rajender 864
            super.onPostExecute(jsonObject);
21327 rajender 865
 
866
 
22378 rajender 867
 
21327 rajender 868
        }}
869
 
21271 rajender 870
    @Override
871
    public void onResume() {
872
        super.onResume();
873
        getView().setFocusableInTouchMode(true);
874
        getView().requestFocus();
875
        getView().setOnKeyListener(new View.OnKeyListener() {
876
            @Override
877
            public boolean onKey(View v, int keyCode, KeyEvent event) {
878
 
879
                if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
880
                    try {
881
                        if (landingURL.contains((apiData.getString("mobile.website.url", "")))) {
882
                            new AlertDialog.Builder(getActivity())
883
                                    .setIcon(android.R.drawable.ic_dialog_alert)
884
                                    .setTitle("Exit!")
885
                                    .setMessage("Are you sure you want to close?")
886
                                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
887
                                        @Override
888
                                        public void onClick(DialogInterface dialog, int which) {
889
                                            Intent startMain = new Intent(Intent.ACTION_MAIN);
890
                                            startMain.addCategory(Intent.CATEGORY_HOME);
891
                                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
892
                                            startActivity(startMain);
893
                                        }
894
 
895
                                    })
896
                                    .setNegativeButton("No", null)
897
                                    .show();
898
                            return true;
899
                        } else {
900
                            if (webView.canGoBack()) {
901
                                webView.goBack();
902
                            } else {
903
                                Intent i = new Intent(getActivity(), MainActivity.class);
904
                                i.putExtra("displayView", "0");
905
                                startActivity(i);
906
                            }
907
                            return true;
908
 
909
                        }
910
 
911
                    } catch (Exception e) {
912
                        e.printStackTrace();
913
                        return false;
914
                    }
915
                }
916
                return false;
917
            }
918
 
919
        });
920
    }
921
 
21327 rajender 922
 
923
    public void fetchOrderDetails() {
924
        if (isInternetOn()) {
21271 rajender 925
            new FetchOrderURLS().execute();
926
        }
927
    }
928
 
21327 rajender 929
    public void pushDataInAmazon(String orderId) {
21271 rajender 930
 
931
        AmazonOrderDetails amazonOrderClient = new AmazonOrderDetails();
21327 rajender 932
        nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();
933
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
934
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("id", orderId));
935
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("store_id", apiData.getString("store.code.amazon", null)));
936
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("order_url", amazonData.getString("amazonurl", "")));
21271 rajender 937
        //nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
21327 rajender 938
        amazonWebView.loadUrl(amazonData.getString("amazonurl", ""));
21271 rajender 939
        amazonWebView.setWebViewClient(amazonOrderClient);
940
 
941
    }
942
 
21327 rajender 943
    public void storeSubTagId(String url) {
21271 rajender 944
 
21327 rajender 945
        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 946
            StringTokenizer st2 = new StringTokenizer(url, "&");
947
            while (st2.hasMoreElements()) {
21327 rajender 948
                String token = st2.nextToken();
949
                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"))) {
950
                    String subtagId = userData.getString("subtag", "null");
951
                    if (subtagId == null) {
952
                        userDataEditor.putString("subtag", token.split("=")[1]);
21271 rajender 953
                        userDataEditor.commit();
21327 rajender 954
                    } else {
21271 rajender 955
                        userDataEditor.remove("subtag");
956
                        userDataEditor.commit();
21327 rajender 957
                        userDataEditor.putString("subtag", token.split("=")[1]);
21271 rajender 958
                        userDataEditor.commit();
959
                    }
21327 rajender 960
                } else
21271 rajender 961
                    continue;
962
            }
21327 rajender 963
        } else
21271 rajender 964
            return;
965
    }
966
 
967
 
968
    boolean displayActionBar;
21327 rajender 969
 
970
    public void getDisplayActionBar(String url) throws Exception {
971
        String snapdealConfirmation = apiData.getString("snapdeal.order.success.url", null);
972
        String flipkartConfirmation = apiData.getString("flipkart.order.success.url", null);
973
        String amazonConfirmation = apiData.getString("amazon.order.success.url", null);
974
        String amazonThankYouConfirmation = apiData.getString("amazon.order.success.thankyou.url", null);
975
        String saholicConfirmation = apiData.getString("saholic.order.success.url", null);
976
        if (url.contains(snapdealConfirmation) || url.contains(flipkartConfirmation) || url.contains(amazonConfirmation) || url.contains(amazonThankYouConfirmation) || url.contains(saholicConfirmation)) {
977
            displayActionBar = true;
21271 rajender 978
            String storeID = getStoreId(url);
21327 rajender 979
            if (storeID == null) {
21271 rajender 980
                Log.e("Deals Page Activity", "Null value returned for storeID");
21327 rajender 981
            } else {
982
                nameValuePairsRawHtml = new ArrayList<NameValuePair>();
983
                nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
984
                nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
985
                nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
986
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", null)));
21271 rajender 987
            }
21327 rajender 988
        } else {
21271 rajender 989
            displayActionBar = false;
990
        }
991
        return;
992
    }
993
 
21327 rajender 994
    public void getOrderSuccessUrlConfirmation(String url) throws Exception {
995
        for (String s : orderSuccessUrlList) {
996
            if (url.contains(s)) {
997
                displayActionBar = true;
21271 rajender 998
                String storeID = getStoreId(url);
21327 rajender 999
                if (storeID == null) {
21271 rajender 1000
                    Log.e("Deals Page Activity", "Null value returned for storeID");
21327 rajender 1001
                } else {
1002
                    nameValuePairsRawHtml = new ArrayList<NameValuePair>();
1003
                    nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
1004
                    nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
1005
                    nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
1006
                    nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", "")));
21271 rajender 1007
                }
1008
                break;
21327 rajender 1009
            } else {
21271 rajender 1010
                displayActionBar = false;
1011
            }
1012
        }
1013
        return;
1014
    }
1015
 
21327 rajender 1016
    public String getStoreId(String url) {
21271 rajender 1017
       /* if(url.contains("snapdeal")){
1018
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.snapdeal","0"));
1019
            return apiData.getString("store.code.snapdeal",null);
1020
        }
1021
        else if(url.contains("flipkart")){
1022
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.flipkart","0"));
1023
            return apiData.getString("store.code.flipkart",null);
1024
        }
1025
        else if(url.contains("amazon")){
1026
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.amazon","0"));
1027
            return apiData.getString("store.code.amazon",null);
1028
        }
1029
        else if(url.contains("saholic")){
1030
            return apiData.getString("store.code.spice",null);
1031
        }
1032
        else if(url.contains("shopclues")){
1033
            return "7";
1034
        }*/
21327 rajender 1035
        return UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "amazon=1,flipkart=2,snapdeal=3,saholic=4,shopclues=5,")), url);
21271 rajender 1036
    }
1037
 
1038
    class pushData extends AsyncTask<JSONObject, Integer, String> {
1039
 
1040
        @Override
1041
        protected void onPreExecute() {
1042
            super.onPreExecute();
1043
        }
1044
 
1045
        @Override
1046
        protected String doInBackground(JSONObject... objs) {
1047
            HttpClient httpclient = new DefaultHttpClient();
1048
            try {
1049
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
21327 rajender 1050
                nameValuePairs.add(new BasicNameValuePair("pushdata", objs[0].toString()));
1051
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
21271 rajender 1052
                httppost.setHeader("Authorization", BASIC_AUTH);
1053
 
1054
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
1055
                HttpResponse response = httpclient.execute(httppost);
1056
                int status = response.getStatusLine().getStatusCode();
1057
 
21327 rajender 1058
                if (status == 200) {
21271 rajender 1059
                    return "success";
1060
                } else {
1061
                    return "failure";
1062
                }
1063
 
1064
            } catch (ClientProtocolException e) {
1065
                return "failure";
1066
            } catch (IOException e) {
1067
                return "failure";
1068
            }
1069
        }
1070
 
1071
        @Override
1072
        protected void onPostExecute(String result) {
1073
            super.onPostExecute(result);
1074
        }
1075
    }
1076
 
21327 rajender 1077
    ArrayList<NameValuePair> nameValuePairsRawHtml = new ArrayList<NameValuePair>();
1078
    ArrayList<NameValuePair> nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();
1079
 
1080
    class javascriptInterface {
1081
 
21271 rajender 1082
        Context mContext;
1083
 
21327 rajender 1084
        /**
1085
         * Instantiate the interface and set the context
1086
         */
1087
        public javascriptInterface(Context c) {
21271 rajender 1088
            mContext = c;
1089
        }
1090
 
21327 rajender 1091
        /**
1092
         * Show a toast from the web page
1093
         */
21271 rajender 1094
        @JavascriptInterface
1095
        public void showToast(String toast) {
1096
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
1097
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
21327 rajender 1098
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1099
            postDataNameValuePair = orderDetails.readData1();
1100
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
1101
                orderDetail.add(new BasicNameValuePair("zip", "1"));
1102
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1103
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1104
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1105
                PushRawHTML pm = new PushRawHTML();
21271 rajender 1106
                pm.execute(orderDetail);
1107
            }
1108
        }
1109
 
1110
        @JavascriptInterface
21327 rajender 1111
        public void amazonOrderTrackingHTML(String html) {
1112
            amazonOrderTrackingData.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
1113
            amazonOrderTrackingData.add(new BasicNameValuePair("zip", "1"));
1114
            amazonOrderTrackingData.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1115
            amazonOrderTrackingData.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1116
            amazonOrderTrackingData.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
21271 rajender 1117
            new AmazonOrderTrackingDetails().execute(amazonOrderTrackingData);
1118
        }
1119
 
1120
        @JavascriptInterface
1121
        public void showHTML(String html) {
1122
 
1123
            showToast(html);
1124
        }
1125
 
1126
        @JavascriptInterface
1127
        public void flipkartHTML(String html) {
21327 rajender 1128
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
21271 rajender 1129
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
21327 rajender 1130
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1131
            postDataNameValuePair = orderDetails.readData1();
1132
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
1133
                orderDetail.add(new BasicNameValuePair("zip", "1"));
1134
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1135
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1136
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
21271 rajender 1137
                new loadData().execute(orderDetail);
1138
            }
1139
        }
21327 rajender 1140
 
21271 rajender 1141
        @JavascriptInterface
21327 rajender 1142
        public void orderpage(String html) {
1143
 
1144
            nameValuePairsRawHtml.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
22378 rajender 1145
            nameValuePairsRawHtml.add(new BasicNameValuePair("url",apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts")));
1146
            nameValuePairsRawHtml.add(new BasicNameValuePair("zip","1"));
1147
            new ProcessFlipkartHtml().execute();
21271 rajender 1148
        }
1149
 
1150
        @JavascriptInterface
1151
        public void saholicHTML(String html) {
1152
 
1153
            try {
1154
                obj = new JSONObject();
1155
                jSaholic = new JSONObject();
1156
                jSaholic.put("html", UtilityFunctions.compress(html));
1157
                jSaholic.put("zip", "1");
1158
                jSaholic.put("user_id", userData.getString("id", null));
1159
            } catch (Exception e) {
1160
 
1161
            }
1162
            new checkGateWayProblem().execute(saholicUrl);
1163
        }
21327 rajender 1164
 
21271 rajender 1165
        @JavascriptInterface
21327 rajender 1166
        public void amazonUrls(String url) {
1167
            try {
21271 rajender 1168
                obj = new JSONObject();
1169
                JSONObject j = new JSONObject();
1170
                JSONArray jsArray = new JSONArray();
1171
                j.put("url", url);
1172
                j.put("user_id", userData.getString("id", null));
1173
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1174
                jsArray.put(j);
1175
                obj.put("pushdata", jsArray);
21327 rajender 1176
                new pushData().execute(obj);
1177
            } catch (Exception e) {
21271 rajender 1178
                e.printStackTrace();
1179
            }
1180
 
1181
            try {
1182
                getOrderSuccessUrlConfirmation(url);
1183
                if (displayActionBar) {
1184
                    fetchAmazonOrder(url);
1185
                }
21327 rajender 1186
            } catch (Exception e) {
21271 rajender 1187
                e.printStackTrace();
1188
            }
1189
        }
21327 rajender 1190
 
21271 rajender 1191
        @JavascriptInterface
21327 rajender 1192
        public void paytmUrls(String html) {
1193
            try {
21271 rajender 1194
                obj = new JSONObject();
1195
                JSONObject j = new JSONObject();
1196
                JSONArray jsArray = new JSONArray();
1197
                j.put("url", html);
1198
                j.put("user_id", userData.getString("id", null));
1199
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1200
                jsArray.put(j);
1201
                obj.put("pushdata", jsArray);
21327 rajender 1202
                new pushData().execute(obj);
1203
            } catch (Exception e) {
21271 rajender 1204
                e.printStackTrace();
1205
            }
1206
            if (html.contains("https://paytm.com/login")) {
1207
                if (!PAYTMFLAG) {
1208
                    PAYTMFLAG = true;
21327 rajender 1209
                    userDataEditor.putString("paytmOrder", "true").commit();
1210
                    userDataEditor.putBoolean("paytmLoggedIn", true).commit();
21271 rajender 1211
                }
1212
            } else if (PAYTMFLAG) {
1213
                new PaytmOrderURL().execute();
21327 rajender 1214
                PAYTMFLAG = false;
21271 rajender 1215
            }
1216
 
1217
        }
21327 rajender 1218
 
21271 rajender 1219
        @JavascriptInterface
21327 rajender 1220
        public void flipkartUrls(String url) {
1221
            try {
21271 rajender 1222
                obj = new JSONObject();
1223
                JSONObject j = new JSONObject();
1224
                JSONArray jsArray = new JSONArray();
1225
                j.put("url", url);
1226
                j.put("user_id", userData.getString("id", null));
1227
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1228
                jsArray.put(j);
1229
                obj.put("pushdata", jsArray);
21327 rajender 1230
                new pushData().execute(obj);
1231
            } catch (Exception e) {
21271 rajender 1232
                e.printStackTrace();
1233
            }
21327 rajender 1234
            if (url.contains("https://www.flipkart.com/login")) {
21271 rajender 1235
                Flipkartflag = true;
1236
                userDataEditor.putString("flipkartOrder", "true").commit();
1237
                userDataEditor.putBoolean("flipkartLoggedIn", true).commit();
1238
            }
1239
        }
1240
    }
1241
 
1242
    class loadData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1243
 
1244
        @Override
1245
        protected void onPreExecute() {
1246
            super.onPreExecute();
1247
        }
1248
 
1249
        @Override
1250
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1251
 
1252
 
1253
            try {
1254
                HttpClient httpclient = new DefaultHttpClient();
1255
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
1256
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1257
 
1258
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1259
                HttpResponse response = httpclient.execute(httppost);
1260
                HttpEntity entity = response.getEntity();
1261
 
1262
                int status = response.getStatusLine().getStatusCode();
1263
 
21327 rajender 1264
                if (status == 200) {
21271 rajender 1265
                    NameValuePair y = orderDetail[0].get(2);
21327 rajender 1266
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
21271 rajender 1267
                } else {
21327 rajender 1268
                    Log.d("Status in load Data ", "Status Load data " + status);
21271 rajender 1269
 
1270
                }
1271
                String getJSON = EntityUtils.toString(entity);
21327 rajender 1272
                if (getJSON == null) {
21271 rajender 1273
                    return null;
21327 rajender 1274
                } else {
21271 rajender 1275
                    JSONObject jObjGmail = new JSONObject(getJSON);
1276
                    return jObjGmail;
1277
                }
1278
            } catch (Exception e) {
1279
                return null;
1280
            }
1281
        }
1282
 
1283
 
1284
        @Override
1285
        protected void onPostExecute(JSONObject result) {
21327 rajender 1286
            if (result == null) {
21271 rajender 1287
                //Log.d("Error in fetching result ", "Flipkart html ");
21327 rajender 1288
            } else {
21271 rajender 1289
                try {
1290
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
1291
                        orderDetails.deleterecords();
1292
                } catch (Exception e) {
1293
                }
1294
            }
1295
            super.onPostExecute(result);
1296
        }
21327 rajender 1297
    }
21271 rajender 1298
 
1299
    class AmazonOrderDetails extends WebViewClient {
1300
 
1301
        @Override
1302
        public void onReceivedHttpAuthRequest(WebView view,
1303
                                              HttpAuthHandler handler, String host, String realm) {
1304
 
1305
            handler.proceed("dtr", "dtr18Feb2015");
1306
 
1307
        }
1308
 
1309
        @Override
1310
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1311
            super.onPageStarted(view, url, favicon);
1312
        }
1313
 
1314
        @Override
1315
        public void onPageFinished(WebView view, String url) {
1316
            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1317
            super.onPageFinished(view, url);
1318
        }
1319
    }
1320
 
21327 rajender 1321
    class amazonInterface {
21271 rajender 1322
 
1323
        Context mContext;
1324
 
21327 rajender 1325
        /**
1326
         * Instantiate the interface and set the context
1327
         */
1328
        public amazonInterface(Context c) {
21271 rajender 1329
            mContext = c;
1330
        }
1331
 
21327 rajender 1332
        /**
1333
         * Show a toast from the web page
1334
         */
21271 rajender 1335
        @JavascriptInterface
1336
        public void showToast(String toast) {
21327 rajender 1337
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
1338
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("zip", "1"));
1339
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1340
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1341
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1342
            if (isInternetOn()) {
21271 rajender 1343
                new amazonPushData().execute(nameValuePairsRawHtmlAmazon);
1344
            }
1345
        }
1346
 
1347
 
1348
        @JavascriptInterface
1349
        public void showHTML(String html) {
1350
            showToast(html);
1351
        }
1352
 
1353
        @JavascriptInterface
1354
        public void orderHistory(String html) {
1355
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
21327 rajender 1356
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(0)));
1357
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1358
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1359
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1360
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1361
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1362
            if (isInternetOn()) {
21271 rajender 1363
                new pushQueuedData().execute(amazonOrderHistory);
21327 rajender 1364
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
21271 rajender 1365
            }
1366
        }
21327 rajender 1367
 
21271 rajender 1368
        @JavascriptInterface
1369
        public void cancelledHistory(String html) {
1370
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
21327 rajender 1371
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(j++)));
1372
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1373
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1374
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1375
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1376
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1377
            if (isInternetOn()) {
21271 rajender 1378
                new pushCancelledQueuedData().execute(amazonOrderHistory);
21327 rajender 1379
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
21271 rajender 1380
            }
1381
        }
1382
 
1383
        @JavascriptInterface
1384
        public void amazonOrderUrls(String html) {
1385
            //Log.e("OrderUrls","Order amazonOrderUrls" + html);
1386
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
21327 rajender 1387
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(1)));
1388
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1389
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1390
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1391
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1392
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1393
            if (isInternetOn()) {
21271 rajender 1394
                new pushCancelledQueuedData().execute(amazonOrderHistory);
21327 rajender 1395
            } else {
21271 rajender 1396
 
1397
            }
1398
        }
1399
 
1400
    }
21327 rajender 1401
 
21271 rajender 1402
    int j;
21327 rajender 1403
 
21271 rajender 1404
    class amazonPushData extends AsyncTask<List<NameValuePair>, Integer, String> {
1405
        private StringBuilder sb;
1406
 
1407
        private HttpResponse req;
1408
        private InputStream is;
1409
 
1410
        @Override
1411
        protected void onPreExecute() {
1412
            super.onPreExecute();
1413
            Log.e("Pre execute", "Pre execute");
1414
 
1415
        }
1416
 
1417
        @Override
1418
        protected String doInBackground(List<NameValuePair>... orderDetail) {
1419
            try {
1420
                HttpClient httpclient = new DefaultHttpClient();
21327 rajender 1421
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
21271 rajender 1422
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1423
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1424
                HttpResponse response = httpclient.execute(httppost);
1425
                HttpEntity entity = response.getEntity();
1426
                int status = response.getStatusLine().getStatusCode();
1427
 
21327 rajender 1428
                if (status == 200) {
1429
                    System.out.println("ResponseCode of record: " + status + " is " + status);
21271 rajender 1430
                    NameValuePair y = orderDetail[0].get(2);
21327 rajender 1431
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
21271 rajender 1432
                    amazonapiSettingsEditor.remove("amazonurl");
1433
                    amazonapiSettingsEditor.commit();
1434
                } else {
1435
                    /*Log.d("ResponseCode",status+"");
1436
                    System.out.println(" NOT Transfered");
1437
                    Log.d("ResponseCode",status+"");*/
1438
                }
1439
/*                Log.e("pass 1", "Amazon success ");*/
1440
            } catch (Exception e) {
1441
/*                Log.e("Fail 1", e.toString());*/
1442
 
1443
            }
1444
            return "success";
1445
        }
1446
 
1447
        @Override
1448
        protected void onPostExecute(String result) {
1449
            super.onPostExecute(result);
1450
            new FetchOrderURLS().execute();
1451
        }
1452
    }
1453
 
1454
 
1455
    class PushRawHTML extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1456
        @Override
1457
        protected void onPreExecute() {
1458
            super.onPreExecute();
1459
        }
1460
 
1461
        @Override
1462
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1463
 
1464
            try {
1465
                HttpClient httpclient = new DefaultHttpClient();
21327 rajender 1466
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
21271 rajender 1467
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1468
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1469
                HttpResponse response = httpclient.execute(httppost);
1470
                HttpEntity entity = response.getEntity();
1471
                int status = response.getStatusLine().getStatusCode();
1472
 
21327 rajender 1473
                if (status == 200) {
21271 rajender 1474
                    NameValuePair y = orderDetail[0].get(2);
21327 rajender 1475
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
21271 rajender 1476
                } else {
1477
                }
1478
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1479
 
1480
                return jObjGmail;
1481
            } catch (Exception e) {
1482
                return null;
1483
            }
1484
        }
1485
 
1486
        @Override
1487
        protected void onPostExecute(JSONObject result) {
1488
            super.onPostExecute(result);
1489
            try {
21327 rajender 1490
                userDataEditor.putString("amazonOrder", "true").commit();
1491
                userDataEditor.putBoolean("amazonLoggedIn", true).commit();
1492
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
21271 rajender 1493
                if (result.getString("htmlRequired").equalsIgnoreCase("true")) {
1494
                    String orderId = result.getString("orderId");
21327 rajender 1495
                    amazonapiSettingsEditor.putString("amazonurl", result.getString("url"));
21271 rajender 1496
                    amazonapiSettingsEditor.commit();
1497
                    pushDataInAmazon(orderId);
1498
                }
21327 rajender 1499
            } catch (Exception e) {
21271 rajender 1500
 
1501
            }
1502
        }
1503
    }
1504
 
1505
    class AmazonOrderTrackingDetails extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1506
        @Override
1507
        protected void onPreExecute() {
1508
            super.onPreExecute();
1509
        }
1510
 
1511
        @Override
1512
        protected JSONObject doInBackground(List<NameValuePair>... arg0) {
1513
            try {
1514
                HttpClient httpclient = new DefaultHttpClient();
21327 rajender 1515
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
21271 rajender 1516
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1517
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1518
                HttpResponse response = httpclient.execute(httppost);
1519
                HttpEntity entity = response.getEntity();
1520
                int status = response.getStatusLine().getStatusCode();
1521
 
21327 rajender 1522
                if (status == 200) {
21271 rajender 1523
                } else {
1524
                }
1525
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1526
                return jObjGmail;
1527
 
1528
            } catch (Exception e) {
1529
                return null;
1530
            }
1531
        }
1532
 
1533
        @Override
1534
        protected void onPostExecute(JSONObject result) {
1535
            super.onPostExecute(result);
1536
        }
1537
    }
1538
 
1539
    class pushQueuedData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1540
        @Override
1541
        protected void onPreExecute() {
1542
            super.onPreExecute();
1543
        }
1544
 
1545
        @Override
1546
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
1547
 
1548
            try {
1549
                HttpClient httpclient = new DefaultHttpClient();
21327 rajender 1550
                //Get store id
1551
               // NameValuePair nvp = pushOrder[1].get(0);
1552
                //String storeId = nvp.getValue();
21271 rajender 1553
 
21327 rajender 1554
                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 1555
                HttpPost httppost = new HttpPost(fetchUrl);
1556
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1557
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
1558
                HttpResponse response = httpclient.execute(httppost);
1559
                HttpEntity entity = response.getEntity();
1560
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1561
                return jObjGmail;
1562
 
1563
            } catch (Exception e) {
1564
                return null;
1565
            }
1566
 
1567
        }
1568
 
1569
        @Override
1570
        protected void onPostExecute(JSONObject result) {
1571
            super.onPostExecute(result);
1572
            try {
1573
                if (result == null) {
1574
 
1575
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
21327 rajender 1576
                    userDataEditor.putBoolean("amazonLoggedIn", false).commit();
1577
                } else {
21271 rajender 1578
                    addOrderHistoryCancelled(str.get(1));
1579
                }
21327 rajender 1580
            } catch (Exception e) {
21271 rajender 1581
                e.printStackTrace();
1582
            }
1583
        }
1584
    }
1585
 
1586
    class pushCancelledQueuedData extends AsyncTask<List<NameValuePair>, Integer, String> {
1587
 
1588
        @Override
1589
        protected void onPreExecute() {
1590
            super.onPreExecute();
1591
        }
1592
 
1593
        @Override
1594
        protected String doInBackground(List<NameValuePair>... pushOrder) {
1595
 
1596
            try {
1597
                HttpClient httpclient = new DefaultHttpClient();
1598
 
21327 rajender 1599
                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 1600
                HttpPost httppost = new HttpPost(fetchUrl);
1601
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1602
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
1603
                HttpResponse response = httpclient.execute(httppost);
1604
                HttpEntity entity = response.getEntity();
1605
 
1606
                return "success";
1607
            } catch (Exception e) {
1608
                return "failure";
1609
            }
1610
 
1611
        }
1612
 
1613
        @Override
1614
        protected void onPostExecute(String result) {
1615
            super.onPostExecute(result);
1616
            try {
1617
                addOrderHistoryCancelled(str.get(++sizeList));
21327 rajender 1618
            } catch (Exception e) {
21271 rajender 1619
                e.printStackTrace();
1620
            }
21327 rajender 1621
            FLAG = false;
21271 rajender 1622
        }
1623
    }
1624
 
1625
    int sizeList;
21327 rajender 1626
 
21271 rajender 1627
    class FetchOrderURLS extends AsyncTask<String, Integer, JSONObject> {
1628
 
1629
        @Override
1630
        protected void onPreExecute() {
1631
            super.onPreExecute();
1632
        }
1633
 
1634
        @Override
1635
        protected JSONObject doInBackground(String... arg0) {
1636
            HttpClient httpclient = new DefaultHttpClient();
1637
            try {
21327 rajender 1638
                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 1639
                HttpGet httppost = new HttpGet(fetchUrl);
1640
 
1641
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1642
                HttpResponse response = httpclient.execute(httppost);
1643
                HttpEntity entity = response.getEntity();
1644
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1645
                return jObjGmail;
1646
 
1647
            } catch (ClientProtocolException e) {
1648
                return null;
1649
            } catch (IOException e) {
1650
                return null;
21327 rajender 1651
            } catch (Exception e) {
21271 rajender 1652
                e.printStackTrace();
1653
                return null;
1654
            }
1655
        }
1656
 
1657
        @Override
1658
        protected void onPostExecute(JSONObject result) {
1659
            super.onPostExecute(result);
1660
            try {
21327 rajender 1661
                if (result == null) {
1662
                    userDataEditor.putString("amazonOrder", "false").commit();
1663
                } else {
21271 rajender 1664
                    if (result.length() == 0) {
1665
                        userDataEditor.putString("amazonOrder", "false").commit();
21327 rajender 1666
                    } else {
21271 rajender 1667
                        JSONArray js = result.getJSONArray("result");
21327 rajender 1668
                        if (js.length() != 0) {
21271 rajender 1669
                            str = new ArrayList<>();
1670
                            for (int i = 0; i < js.length(); i++) {
1671
                                String s = js.getString(i);
1672
                                str.add(s);
1673
                            }
1674
                            sizeList = 1;
1675
                            j = 1;
1676
                            addOrderHistory(str.get(0));
21327 rajender 1677
                        } else {
1678
                            userDataEditor.putString("amazonOrder", "false").commit();
21271 rajender 1679
                        }
1680
                    }
1681
                }
21327 rajender 1682
            } catch (Exception e) {
21271 rajender 1683
            }
1684
        }
1685
    }
21327 rajender 1686
 
1687
    int count = 0;
21271 rajender 1688
    List<String> str;
21327 rajender 1689
 
1690
    public void addOrderHistory(String s) {
21271 rajender 1691
        AmazonOrderHistoryDetails amazonOrderClient = new AmazonOrderHistoryDetails();
1692
        amazonOrderHistoryWebView = new WebView(webView.getContext());
1693
        amazonOrderHistoryWebView.setVisibility(View.GONE);
1694
        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
1695
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
1696
        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
1697
        amazonOrderHistoryWebView.loadUrl(s);
1698
        amazonOrderHistoryWebView.setWebViewClient(amazonOrderClient);
1699
    }
21327 rajender 1700
 
1701
    public void addOrderHistoryCancelled(String s) {
21271 rajender 1702
        AmazonOrderCancelledDetails amazonOrderClient1 = new AmazonOrderCancelledDetails();
1703
        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
1704
        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
1705
        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
1706
        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
1707
        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
1708
        amazonOrderHistoryCancelledWebView.loadUrl(s);
1709
        amazonOrderHistoryCancelledWebView.setWebViewClient(amazonOrderClient1);
1710
    }
1711
 
1712
    class AmazonOrderHistoryDetails extends WebViewClient {
1713
 
1714
        @Override
1715
        public void onReceivedHttpAuthRequest(WebView view,
1716
                                              HttpAuthHandler handler, String host, String realm) {
1717
 
1718
            handler.proceed("dtr", "dtr18Feb2015");
1719
 
1720
        }
1721
 
1722
        @Override
1723
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1724
            super.onPageStarted(view, url, favicon);
1725
        }
1726
 
1727
        @Override
1728
        public void onPageFinished(WebView view, String url) {
1729
            super.onPageFinished(view, url);
21327 rajender 1730
            if (url.contains("signin")) {
1731
                userDataEditor.putBoolean("amazonLoggedIn", false).commit();
1732
            } else {
21271 rajender 1733
                view.loadUrl("javascript:window.HTMLOUT.orderHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1734
            }
1735
        }
1736
    }
1737
 
1738
    class AmazonOrderCancelledDetails extends WebViewClient {
1739
 
1740
        @Override
1741
        public void onReceivedHttpAuthRequest(WebView view,
1742
                                              HttpAuthHandler handler, String host, String realm) {
1743
 
1744
            handler.proceed("dtr", "dtr18Feb2015");
1745
 
1746
        }
1747
 
1748
        @Override
1749
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1750
            super.onPageStarted(view, url, favicon);
1751
        }
1752
 
1753
        @Override
1754
        public void onPageFinished(WebView view, String url) {
1755
            super.onPageFinished(view, url);
1756
            view.loadUrl("javascript:window.HTMLOUT.cancelledHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1757
        }
1758
    }
1759
 
1760
 
1761
    public final boolean isInternetOn() {
1762
 
1763
        ConnectivityManager connec =
21327 rajender 1764
                (ConnectivityManager) getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
21271 rajender 1765
 
21327 rajender 1766
        if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
21271 rajender 1767
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
1768
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
21327 rajender 1769
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) {
21271 rajender 1770
            return true;
1771
 
1772
        } else if (
1773
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
21327 rajender 1774
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) {
21271 rajender 1775
 
1776
            return false;
1777
        }
1778
        return false;
1779
    }
1780
 
1781
    class checkGateWayProblem extends AsyncTask<String, Integer, String> {
1782
        @Override
1783
        protected void onPreExecute() {
1784
            super.onPreExecute();
1785
        }
1786
 
1787
        @Override
1788
        protected String doInBackground(String... arg0) {
1789
            HttpClient httpclient = new DefaultHttpClient();
1790
            try {
1791
                HttpPost httppost = new HttpPost(arg0[0]);
1792
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
1793
                httppost.setHeader("Authorization", basicAuth);
1794
                HttpResponse response = httpclient.execute(httppost);
1795
                int status = response.getStatusLine().getStatusCode();
1796
 
1797
                jsArraySaholic = new JSONArray();
1798
                jSaholic.put("url", arg0[0]);
1799
 
1800
                jSaholic.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1801
                jSaholic.put("httpstatus", status);
1802
                jSaholic.put("cookies", CookieManager.getInstance().getCookie(arg0[0]));
1803
                jsArraySaholic.put(jSaholic);
1804
                obj.put("pushdata", jsArraySaholic);
21327 rajender 1805
                Log.d("status ", "Status in checkGatewayProbelm " + status);
1806
                if (status == 200) {
21271 rajender 1807
                    return "success";
1808
                } else {
1809
                    return "failure";
1810
                }
1811
 
1812
            } catch (ClientProtocolException e) {
1813
                return "failure";
1814
            } catch (IOException e) {
1815
                return "failure";
21327 rajender 1816
            } catch (JSONException e) {
21271 rajender 1817
                return "failure";
1818
            }
1819
        }
1820
 
1821
        @Override
1822
        protected void onPostExecute(String result) {
1823
            super.onPostExecute(result);
1824
            new pushData1().execute(obj);
1825
        }
1826
    }
21327 rajender 1827
 
21271 rajender 1828
    class pushData1 extends AsyncTask<JSONObject, Integer, String> {
1829
 
1830
        @Override
1831
        protected void onPreExecute() {
1832
            super.onPreExecute();
1833
        }
1834
 
1835
        @Override
1836
        protected String doInBackground(JSONObject... arg0) {
1837
            HttpClient httpclient = new DefaultHttpClient();
1838
            try {
1839
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
21327 rajender 1840
                nameValuePairs.add(new BasicNameValuePair("pushdata", arg0[0].toString()));
1841
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
21271 rajender 1842
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
1843
                httppost.setHeader("Authorization", basicAuth);
1844
 
1845
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
1846
                System.out.println("JSON object in push Data 1 " + arg0[0].toString());
1847
                StringEntity se = new StringEntity(arg0[0].toString());
1848
                HttpResponse response = httpclient.execute(httppost);
1849
                int status = response.getStatusLine().getStatusCode();
1850
 
21327 rajender 1851
                if (status == 200) {
21271 rajender 1852
                    return "success";
1853
                } else {
1854
                    return "failure";
1855
                }
1856
 
1857
            } catch (ClientProtocolException e) {
1858
                return "failure";
1859
            } catch (IOException e) {
1860
                return "failure";
1861
            }
1862
        }
1863
 
1864
        @Override
1865
        protected void onPostExecute(String result) {
1866
            super.onPostExecute(result);
1867
        }
1868
    }
1869
 
21327 rajender 1870
    public void redirectPage(final AlertDialog builder) {
1871
        Handler h = new Handler();
21271 rajender 1872
        h.postDelayed(new Runnable() {
1873
            @Override
1874
            public void run() {
21327 rajender 1875
                if (builder != null) {
21271 rajender 1876
                    builder.dismiss();
1877
                }
1878
                userDataEditor.clear().commit();
1879
                startActivity(new Intent(getActivity(), LoginActivity.class));
1880
            }
21327 rajender 1881
        }, 3000);
21271 rajender 1882
 
1883
    }
1884
 
21327 rajender 1885
    public void sendQueuedResponse() {
21271 rajender 1886
 
21327 rajender 1887
        List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1888
        postDataNameValuePair = orderDetails.readData1();
1889
        for (List<NameValuePair> orderDetail : postDataNameValuePair) {
21271 rajender 1890
            orderDetail.add(new BasicNameValuePair("zip", "1"));
21327 rajender 1891
            orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1892
            orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1893
            orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1894
            PushRawHTML pm = new PushRawHTML();
21271 rajender 1895
            pm.execute(orderDetail);
1896
        }
1897
    }
1898
 
1899
 
1900
    class PaytmWebViewClient extends WebViewClient {
1901
        @Override
1902
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1903
            super.onPageStarted(view, url, favicon);
1904
        }
1905
 
1906
        @Override
1907
        public void onPageFinished(WebView view, String url) {
1908
            super.onPageFinished(view, url);
21327 rajender 1909
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
21271 rajender 1910
                view.loadUrl("javascript:window.location='" + getPaytmUrl(url) + "';");
21327 rajender 1911
            } else {
21271 rajender 1912
                view.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);");
1913
            }
1914
        }
1915
    }
1916
 
21327 rajender 1917
    public String getPaytmUrl(String url) {
1918
        String returnUrl = null;
21271 rajender 1919
        //Pattern p = Pattern.compile("[/]myorders/(\\d+)");
21327 rajender 1920
        Pattern p = Pattern.compile(apiData.getString("paytm.myorders.pattern", "[/]myorders/(\\d+)"));
21271 rajender 1921
        Matcher m = p.matcher(url);
1922
        if (m.find()) {
21327 rajender 1923
            returnUrl = m.group(1);
21271 rajender 1924
        }
21327 rajender 1925
        System.out.println(apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2");
1926
        return apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2";
21271 rajender 1927
    }
1928
 
1929
 
21327 rajender 1930
    public String getPaytmReferer(String url) {
1931
        String returnUrl = null;
1932
        Pattern p = Pattern.compile(apiData.getString("paytm.summary.pattern", "[/]summary/(\\d+)"));
21271 rajender 1933
        //Pattern p = Pattern.compile("[/]summary/(\\d+)");
1934
        Matcher m = p.matcher(url);
1935
        if (m.find()) {
21327 rajender 1936
            returnUrl = m.group(1);
21271 rajender 1937
        }
21327 rajender 1938
        System.out.println("In paytm Referer" + apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl);
1939
        return apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl;
21271 rajender 1940
    }
1941
 
1942
 
1943
    class PaytmOrderURL extends AsyncTask<String, Integer, JSONObject> {
1944
 
1945
        @Override
1946
        protected void onPreExecute() {
1947
            super.onPreExecute();
1948
        }
1949
 
1950
        @Override
1951
        protected JSONObject doInBackground(String... arg0) {
1952
            HttpClient httpclient = new DefaultHttpClient();
1953
            try {
21327 rajender 1954
                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 1955
                HttpGet httppost = new HttpGet(fetchUrl);
1956
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1957
                HttpResponse response = httpclient.execute(httppost);
1958
                HttpEntity entity = response.getEntity();
1959
                int status = response.getStatusLine().getStatusCode();
1960
 
1961
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1962
                return jObjGmail;
1963
            } catch (JSONException e) {
1964
                return null;
1965
            } catch (ClientProtocolException e) {
1966
                return null;
1967
            } catch (IOException e) {
1968
                e.printStackTrace();
1969
                return null;
1970
            }
1971
        }
1972
 
1973
        @Override
1974
        protected void onPostExecute(JSONObject result) {
1975
            super.onPostExecute(result);
1976
            try {
1977
                if (result != null) {
1978
                    if (result.length() == 0) {
1979
                        userDataEditor.putString("paytmOrder", "false").commit();
1980
                    } else {
1981
                        JSONArray js = result.getJSONArray("result");
21327 rajender 1982
                        if (js.length() != 0) {
21271 rajender 1983
                            strPaytmUrls = new ArrayList<>();
1984
                            strPaytmReferer = new ArrayList<>();
1985
                            for (int i = 0; i < js.length(); i++) {
21327 rajender 1986
                                JSONObject paytmURLRef = js.getJSONObject(i);
21271 rajender 1987
                                String url = paytmURLRef.getString("url");
1988
                                String referer = paytmURLRef.getString("referer");
1989
                                strPaytmUrls.add(url);
1990
                                strPaytmReferer.add(referer);
1991
                            }
21327 rajender 1992
                            paytmOrderTracking(strPaytmUrls.get(0), strPaytmReferer.get(0));
1993
                        } else {
21271 rajender 1994
                            userDataEditor.putString("paytmOrder", "false").commit();
1995
                        }
1996
                    }
1997
                }
21327 rajender 1998
            } catch (Exception e) {
21271 rajender 1999
                e.printStackTrace();
2000
            }
2001
 
2002
        }
2003
    }
2004
 
2005
 
2006
    class PaytmOrderCreation extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2007
 
2008
        @Override
2009
        protected void onPreExecute() {
2010
            super.onPreExecute();
2011
        }
2012
 
2013
        @Override
2014
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
2015
 
2016
 
2017
            try {
2018
                HttpClient httpclient = new DefaultHttpClient();
2019
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
2020
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2021
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
2022
                HttpResponse response = httpclient.execute(httppost);
2023
                HttpEntity entity = response.getEntity();
2024
 
2025
                int status = response.getStatusLine().getStatusCode();
2026
 
21327 rajender 2027
                if (status == 200) {
21271 rajender 2028
                    NameValuePair y = orderDetail[0].get(2);
21327 rajender 2029
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
21271 rajender 2030
                } else {
2031
                }
2032
                String getJSON = EntityUtils.toString(entity);
21327 rajender 2033
                if (getJSON == null) {
21271 rajender 2034
                    return null;
21327 rajender 2035
                } else {
21271 rajender 2036
                    JSONObject jObjGmail = new JSONObject(getJSON);
2037
                    return jObjGmail;
2038
                }
2039
            } catch (Exception e) {
2040
                return null;
2041
            }
2042
        }
2043
 
2044
 
2045
        @Override
2046
        protected void onPostExecute(JSONObject result) {
21327 rajender 2047
            if (result == null) {
21271 rajender 2048
 
21327 rajender 2049
            } else {
21271 rajender 2050
                userDataEditor.putString("paytmOrder", "true").commit();
21327 rajender 2051
                userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
21271 rajender 2052
                try {
2053
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
2054
                        orderDetails.deleterecords();
2055
                } catch (Exception e) {
2056
                }
2057
            }
2058
            super.onPostExecute(result);
2059
        }
2060
    }
2061
 
21327 rajender 2062
    public void paytmOrderTracking(List<String> paytmUrls, List<String> paytmReferers) {
2063
        for (int i = 1; i < paytmReferers.size(); i++) {
21271 rajender 2064
            PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrls.get(i));
2065
            paytmWebView = new WebView(webView.getContext());
2066
            paytmWebView.setVisibility(View.GONE);
2067
            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
2068
            paytmWebView.getSettings().setJavaScriptEnabled(true);
2069
            paytmWebView.loadUrl(paytmReferers.get(i));
2070
            paytmWebView.setWebViewClient(paytmOrderTrackingClient);
2071
        }
21327 rajender 2072
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
21271 rajender 2073
    }
2074
 
21327 rajender 2075
    public void paytmOrderTracking(String paytmUrl, String paytmReferer) {
21271 rajender 2076
        PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrl);
2077
        paytmWebView = new WebView(webView.getContext());
2078
        paytmWebView.setVisibility(View.GONE);
2079
        paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
2080
        paytmWebView.getSettings().setJavaScriptEnabled(true);
2081
        paytmWebView.loadUrl(paytmReferer);
2082
        paytmWebView.setWebViewClient(paytmOrderTrackingClient);
21327 rajender 2083
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
21271 rajender 2084
    }
21327 rajender 2085
 
21271 rajender 2086
    class PaytmOrderTrackingClient extends WebViewClient {
2087
        String paytmUrlAfterReferer;
21327 rajender 2088
 
2089
        public PaytmOrderTrackingClient(String paytmUrl) {
2090
            paytmUrlAfterReferer = paytmUrl;
21271 rajender 2091
        }
21327 rajender 2092
 
21271 rajender 2093
        @Override
2094
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2095
            super.onPageStarted(view, url, favicon);
2096
        }
2097
 
2098
        @Override
2099
        public void onPageFinished(WebView view, String url) {
2100
            super.onPageFinished(view, url);
21327 rajender 2101
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
2102
                view.loadUrl("javascript:window.location='" + paytmUrlAfterReferer + "';");
2103
            } else {
21271 rajender 2104
                view.loadUrl("javascript:window.HTMLOUT.paytmTracking(document.getElementsByTagName('html')[0].innerHTML);");
2105
            }
2106
        }
2107
    }
2108
 
21327 rajender 2109
    List<String> strPaytmUrls, strPaytmReferer;
2110
    int paytmCounter = 0;
2111
 
21271 rajender 2112
    class PaytmPushTrackingUrls extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2113
        @Override
2114
        protected void onPreExecute() {
2115
            super.onPreExecute();
2116
        }
2117
 
2118
        @Override
2119
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
2120
 
2121
            try {
2122
                HttpClient httpclient = new DefaultHttpClient();
21327 rajender 2123
                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 2124
                HttpPost httppost = new HttpPost(fetchUrl);
2125
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2126
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
2127
                HttpResponse response = httpclient.execute(httppost);
2128
                HttpEntity entity = response.getEntity();
2129
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2130
                return jObjGmail;
2131
            } catch (Exception e) {
2132
                return null;
2133
            }
2134
        }
2135
 
2136
        @Override
2137
        protected void onPostExecute(JSONObject result) {
2138
            super.onPostExecute(result);
2139
            try {
2140
                if (result == null) {
2141
 
2142
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
21327 rajender 2143
                    userDataEditor.putBoolean("paytmLoggedIn", false).commit();
2144
                } else {
2145
                    paytmOrderTracking(strPaytmUrls, strPaytmReferer);
21271 rajender 2146
                }
21327 rajender 2147
            } catch (Exception e) {
21271 rajender 2148
                e.printStackTrace();
2149
            }
2150
        }
2151
    }
2152
 
2153
    class paytmInterface {
2154
 
2155
        Context mContext;
2156
 
2157
        public paytmInterface(Context c) {
2158
            mContext = c;
2159
        }
2160
 
2161
        @JavascriptInterface
2162
        public void showHTML(String html) {
2163
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
2164
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
2165
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
2166
            postDataNameValuePair = orderDetails.readData1();
2167
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
2168
                orderDetail.add(new BasicNameValuePair("zip", "1"));
2169
                new PaytmOrderCreation().execute(orderDetail);
2170
            }
2171
        }
2172
 
2173
        @JavascriptInterface
2174
        public void paytmTracking(String html) {
2175
            try {
2176
                String url = strPaytmUrls.get(paytmCounter++);
2177
                List<NameValuePair> amazonOrderHistory = new ArrayList<NameValuePair>();
2178
                amazonOrderHistory.add(new BasicNameValuePair("url", url));
2179
                amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
2180
                amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
2181
                if (isInternetOn()) {
2182
                    new PaytmPushTrackingUrls().execute(amazonOrderHistory);
2183
                } else {
2184
 
2185
                }
21327 rajender 2186
            } catch (Exception e) {
21271 rajender 2187
                e.printStackTrace();
2188
            }
2189
 
2190
        }
2191
    }
2192
 
21327 rajender 2193
    public void onShareClick(String url) {
21271 rajender 2194
        try {
2195
            List<Intent> targetShareIntents = new ArrayList<Intent>();
2196
            Intent shareIntent = new Intent();
2197
            shareIntent.setAction(Intent.ACTION_SEND);
2198
            shareIntent.setType("text/plain");
2199
            List<ResolveInfo> resInfos = getActivity().getPackageManager().queryIntentActivities(shareIntent, 0);
2200
            if (!resInfos.isEmpty()) {
2201
                for (ResolveInfo resInfo : resInfos) {
2202
                    String packageName = resInfo.activityInfo.packageName;
2203
                    Intent intent = new Intent();
2204
                    intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
2205
                    intent.setAction(Intent.ACTION_SEND);
2206
                    intent.setType("text/plain");
2207
                    intent.putExtra(Intent.EXTRA_TEXT, Uri.parse(url).getQueryParameter("message"));
2208
                    intent.setPackage(packageName);
2209
                    targetShareIntents.add(intent);
2210
                }
2211
                if (!targetShareIntents.isEmpty()) {
2212
                    Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Choose app to share");
2213
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
2214
                    startActivity(chooserIntent);
2215
                }
2216
            }
21327 rajender 2217
        } catch (Exception e) {
21271 rajender 2218
            e.printStackTrace();
2219
        }
2220
    }
2221
 
21327 rajender 2222
    public void fetchAmazonOrder(String url) {
21271 rajender 2223
        pd1 = new ProgressDialog(getActivity());
2224
        pd1.setTitle("Please wait");
2225
        pd1.setMessage("Placing your order...");
2226
        pd1.show();
2227
        webView.post(new Runnable() {
2228
            @Override
2229
            public void run() {
2230
                webView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2231
            }
2232
        });
2233
 
2234
    }
2235
 
2236
    @Override
2237
    public void onPause() {
2238
        super.onPause();
21327 rajender 2239
        if (apiData.getString("deal.redirect", "false").equalsIgnoreCase("true")) {
21271 rajender 2240
            if (webView != null) {
2241
                if (isPause) {
2242
                    webView.loadUrl(apiData.getString("mobile.website.url", "") + "?user_id=" + userData.getString("id", ""));
2243
                    isPause = false;
2244
                }
2245
            }
2246
        }
2247
    }
21327 rajender 2248
 
2249
    class FlipkartWebview extends WebViewClient {
2250
 
2251
        @Override
2252
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2253
            super.onPageStarted(view, url, favicon);
2254
        }
2255
 
2256
        @Override
2257
        public void onPageFinished(WebView view, String url) {
2258
            super.onPageFinished(view, url);
22378 rajender 2259
            if(url.contains(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"))) {
21327 rajender 2260
                view.loadUrl("javascript:window.HTMLOUT.orderpage('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2261
            }
2262
 
2263
        }
2264
    }
21271 rajender 2265
}