Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21480 rajender 1
package com.saholic.profittill.main;
2
 
22130 rajender 3
import android.annotation.SuppressLint;
4
import android.app.Activity;
21480 rajender 5
import android.app.AlertDialog;
6
import android.app.Fragment;
7
import android.app.ProgressDialog;
22130 rajender 8
import android.content.BroadcastReceiver;
21480 rajender 9
import android.content.ComponentName;
10
import android.content.Context;
11
import android.content.DialogInterface;
12
import android.content.Intent;
13
import android.content.IntentFilter;
14
import android.content.SharedPreferences;
15
import android.content.pm.ResolveInfo;
16
import android.graphics.Bitmap;
22130 rajender 17
import android.graphics.Color;
18
import android.graphics.PorterDuff;
19
import android.graphics.drawable.ColorDrawable;
20
import android.graphics.drawable.Drawable;
21480 rajender 21
import android.net.ConnectivityManager;
22
import android.net.Uri;
23
import android.os.AsyncTask;
24
import android.os.Build;
25
import android.os.Bundle;
22130 rajender 26
import android.os.Environment;
21480 rajender 27
import android.os.Handler;
28
import android.os.Parcelable;
22130 rajender 29
import android.provider.MediaStore;
21480 rajender 30
import android.support.v4.os.AsyncTaskCompat;
22130 rajender 31
import android.support.v7.app.ActionBar;
32
import android.support.v7.app.AppCompatActivity;
33
import android.telephony.SmsMessage;
34
import android.telephony.TelephonyManager;
21480 rajender 35
import android.util.Base64;
36
import android.util.Log;
37
import android.view.KeyEvent;
38
import android.view.LayoutInflater;
39
import android.view.Menu;
40
import android.view.MenuInflater;
22381 rajender 41
import android.view.MenuItem;
21480 rajender 42
import android.view.View;
43
import android.view.ViewGroup;
44
import android.webkit.CookieManager;
45
import android.webkit.CookieSyncManager;
46
import android.webkit.HttpAuthHandler;
47
import android.webkit.JavascriptInterface;
48
import android.webkit.ValueCallback;
22130 rajender 49
import android.webkit.WebChromeClient;
22830 rajender 50
import android.webkit.WebResourceError;
51
import android.webkit.WebResourceRequest;
21480 rajender 52
import android.webkit.WebSettings;
53
import android.webkit.WebView;
54
import android.webkit.WebViewClient;
55
import android.widget.CheckBox;
56
import android.widget.CompoundButton;
57
import android.widget.Toast;
58
 
59
import com.google.android.gms.common.ConnectionResult;
60
import com.google.android.gms.common.api.GoogleApiClient;
61
import com.google.android.gms.plus.Plus;
22130 rajender 62
import com.google.firebase.iid.FirebaseInstanceId;
21480 rajender 63
import com.saholic.profittill.Constants.ProfitTillConstants;
64
import com.saholic.profittill.Database.OrderTransactionDetails;
65
import com.saholic.profittill.Network.NotificationCount;
66
import com.saholic.profittill.R;
67
import com.saholic.profittill.Utils.UtilityFunctions;
68
import com.testin.agent.TestinAgent;
69
 
70
import org.apache.http.HttpEntity;
71
import org.apache.http.HttpResponse;
72
import org.apache.http.NameValuePair;
73
import org.apache.http.client.ClientProtocolException;
74
import org.apache.http.client.HttpClient;
75
import org.apache.http.client.entity.UrlEncodedFormEntity;
76
import org.apache.http.client.methods.HttpGet;
77
import org.apache.http.client.methods.HttpPost;
78
import org.apache.http.entity.StringEntity;
79
import org.apache.http.impl.client.DefaultHttpClient;
80
import org.apache.http.message.BasicNameValuePair;
81
import org.apache.http.util.EntityUtils;
82
import org.json.JSONArray;
83
import org.json.JSONException;
84
import org.json.JSONObject;
85
 
22130 rajender 86
import java.io.File;
21480 rajender 87
import java.io.IOException;
88
import java.io.InputStream;
89
import java.io.UnsupportedEncodingException;
22830 rajender 90
import java.net.URISyntaxException;
21480 rajender 91
import java.text.SimpleDateFormat;
92
import java.util.ArrayList;
93
import java.util.Date;
94
import java.util.HashMap;
95
import java.util.Iterator;
96
import java.util.LinkedList;
97
import java.util.List;
98
import java.util.Map;
99
import java.util.StringTokenizer;
100
import java.util.regex.Matcher;
101
import java.util.regex.Pattern;
102
 
103
public class DealsHomeFragment extends Fragment implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
104
 
105
    public DealsHomeFragment() {
106
 
107
    }
108
 
109
    static boolean FLAG = false, REDIRECT = false, PAGE_LOAD = false, PAYTMFLAG = false, isPause = false, Flipkartflag = false;
110
    int snapdealException = 0;
111
    static String BASIC_AUTH = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
112
    public static WebView webView;
113
    WebView amazonWebView, OrderHistoryWebView, amazonOrderHistoryWebView, amazonOrderHistoryCancelledWebView, paytmWebView;
114
    WebView amazonAllUrlsWebView;
115
    SharedPreferences userData;
116
    SharedPreferences apiData;
117
    SharedPreferences flipkartData;
118
    SharedPreferences.Editor userDataEditor;
119
    SharedPreferences.Editor apiSettingsEditor;
120
    SharedPreferences.Editor flipkartDataEditor;
121
    OrderTransactionDetails orderDetails;
122
    LinkedList<ArrayList<NameValuePair>> orderLinkedList;
123
    SharedPreferences amazonData;
124
    String affliateUrl;
125
    String landingURL;
22130 rajender 126
    String regId;
127
    String msg = "";
128
    ArrayList<NameValuePair> messageNameValuePair;
21480 rajender 129
    boolean val = false;
130
    String redirectUrls;
131
    String pageLoad;
132
    SharedPreferences.Editor amazonapiSettingsEditor;
133
    List<NameValuePair> amazonOrderTrackingData;
134
    int pageRedirect = 0;
135
    int snapdealPageLoad;
136
    final ArrayList<String> redirectUrlsList = new ArrayList<String>();
137
    final ArrayList<String> pageLoadList = new ArrayList<String>();
138
    String flipkartUrl;
139
    View checkBoxView;
22130 rajender 140
    boolean glogout;
21480 rajender 141
    boolean flipkartFlag;
142
    String saholicUrl;
143
    JSONObject jSaholic;
144
    JSONArray jsArraySaholic;
145
    String type1;
146
    ArrayList<String> orderSuccessUrlList;
147
    public GoogleApiClient mGoogleApiClient;
148
    ProgressDialog pd1 = null;
22130 rajender 149
    private static final String TAG = DealsHomeFragment.class.getSimpleName();
150
    private String mCM;
151
    private ValueCallback<Uri> mUM;
152
    private ValueCallback<Uri[]> mUMA;
153
    private final static int FCR=1;
154
    boolean doubleBackToExitPressedOnce = false;
21480 rajender 155
    String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
156
 
157
    @Override
158
    public void onCreate(Bundle savedInstanceState) {
159
        super.onCreate(savedInstanceState);
160
        setRetainInstance(true);
161
        setHasOptionsMenu(true);
22130 rajender 162
 
21480 rajender 163
    }
164
 
165
    @Override
166
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
167
        super.onCreateOptionsMenu(menu, inflater);
168
 
169
 
22130 rajender 170
     /*   RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.action_notifications).getActionView();
21480 rajender 171
        TextView notifciationCount = (TextView) badgeLayout.findViewById(R.id.inAppNotificationText);
172
        if (userData.getInt("notification_count", 0) != 0) {
173
            notifciationCount.setVisibility(View.VISIBLE);
174
            notifciationCount.setText(userData.getInt("notification_count", 0) + "");
175
        } else {
176
            notifciationCount.setVisibility(View.GONE);
22130 rajender 177
        }*/
21480 rajender 178
    }
22381 rajender 179
    @Override
180
    public boolean onOptionsItemSelected(MenuItem item) {
22830 rajender 181
 
22381 rajender 182
        switch (item.getItemId()) {
21480 rajender 183
 
22381 rajender 184
            case android.R.id.home:
185
                Intent i = new Intent(getActivity(), MainActivity.class);
22830 rajender 186
                i.putExtra("displayView", "13");
22381 rajender 187
                startActivity(i);
188
                return true;
189
 
190
        }
191
        return super.onOptionsItemSelected(item);
192
    }
193
 
22830 rajender 194
    @Override
195
    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
196
        super.startActivityForResult(intent, requestCode, options);
197
    }
198
 
199
    @Override
21480 rajender 200
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
201
                             Bundle savedInstanceState) {
202
 
203
 
204
        View rootView = inflater.inflate(R.layout.fragment_deals_home, container, false);
205
        TestinAgent.init(getActivity());
22830 rajender 206
        int InstanceId =  DealsHomeFragment.class.hashCode();
22130 rajender 207
        AppCompatActivity activity = (AppCompatActivity) getActivity();
208
        ActionBar actionBar = activity.getSupportActionBar();
209
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
210
        final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
211
        upArrow.setColorFilter(getResources().getColor(R.color.grey_black), PorterDuff.Mode.SRC_ATOP);
212
        actionBar.setHomeAsUpIndicator(upArrow);
213
        actionBar.setDisplayShowCustomEnabled(true);
214
        actionBar.setDisplayShowTitleEnabled(false);
215
        actionBar.setDisplayHomeAsUpEnabled(true);
216
        actionBar.setHomeButtonEnabled(true);
217
        actionBar.setCustomView(R.layout.actionbarprofittill);
22381 rajender 218
        actionBar.hide();
21480 rajender 219
        amazonData = getActivity().getSharedPreferences("Amazon_Data", Context.MODE_PRIVATE);
220
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
221
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
222
        flipkartData = getActivity().getSharedPreferences("Flipkart_Data", Context.MODE_PRIVATE);
223
        userDataEditor = userData.edit();
224
        apiSettingsEditor = apiData.edit();
225
        TestinAgent.setUserInfo(userData.getString("id", ""));
226
        amazonapiSettingsEditor = amazonData.edit();
227
        flipkartDataEditor = flipkartData.edit();
228
        affliateUrl = getArguments().getString("key");
229
        orderDetails = new OrderTransactionDetails(getActivity());
230
        orderSuccessUrlList = new ArrayList<String>();
231
        String issues = apiData.getString("list.order.success.url", "blank");
232
        StringTokenizer st2 = new StringTokenizer(issues, "|");
233
 
234
        while (st2.hasMoreElements()) {
235
            orderSuccessUrlList.add(st2.nextToken());
236
        }
237
        if (isInternetOn()) {
238
            if (orderDetails.countTotalRecords() > 0) {
239
                sendQueuedResponse();
240
            }
241
            type1 = userData.getString("type", null);
242
            if (type1 != null && type1.equalsIgnoreCase("google")) {
243
                mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
244
                        .addConnectionCallbacks(this)
245
                        .addOnConnectionFailedListener(this).addApi(Plus.API)
246
                        .addScope(Plus.SCOPE_PLUS_LOGIN).build();
247
                mGoogleApiClient.connect();
248
            }
249
            redirectUrls = apiData.getString("profitmandi.redirect.urls", "");
250
            StringTokenizer st = new StringTokenizer(redirectUrls, "|");
251
            while (st.hasMoreTokens()) {
252
                redirectUrlsList.add(st.nextToken());
253
            }
254
            pageLoad = apiData.getString("profitmandi.pageloads.pattern", "");
255
            StringTokenizer st1 = new StringTokenizer(pageLoad, "|");
256
            while (st1.hasMoreTokens()) {
257
                pageLoadList.add(st1.nextToken());
258
            }
259
            WebClientClass webViewClient = new WebClientClass();
260
            if (webView != null) {
261
                webView.loadUrl("about:blank");
262
            }
263
            webView = (WebView) rootView.findViewById(R.id.webView);
264
            webView.setClickable(true);
265
            webView.setFocusableInTouchMode(true);
266
            webView.getSettings().setDomStorageEnabled(true);
22130 rajender 267
            webView.getSettings().setDatabaseEnabled(true);
21480 rajender 268
            webView.getSettings().setJavaScriptEnabled(true);
22130 rajender 269
            webView.getSettings().setAllowContentAccess(true);
270
            webView.getSettings().setAllowFileAccess(true);
22830 rajender 271
 
22130 rajender 272
            webView.addJavascriptInterface(new javascriptInterface(webView),"HTMLOUT");
273
            if(Build.VERSION.SDK_INT >= 21){
274
                webView.getSettings().setMixedContentMode(0);
275
                webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
276
            }else if(Build.VERSION.SDK_INT >= 19){
277
                webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
278
            }else if(Build.VERSION.SDK_INT < 19){
279
                webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
280
            }
281
            webView.setWebViewClient(new Callback());
282
            webView.setWebChromeClient(new WebChromeClient(){
283
                //For Android 3.0+
284
                public void openFileChooser(ValueCallback<Uri> uploadMsg){
285
                    mUM = uploadMsg;
286
                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
287
                    i.addCategory(Intent.CATEGORY_OPENABLE);
288
                    i.setType("*/*");
289
                    getActivity().startActivityForResult(Intent.createChooser(i,"File Chooser"), FCR);
290
                }
291
                // For Android 3.0+, above method not supported in some android 3+ versions, in such case we use this
292
                public void openFileChooser(ValueCallback uploadMsg, String acceptType){
293
                    mUM = uploadMsg;
294
                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
295
                    i.addCategory(Intent.CATEGORY_OPENABLE);
296
                    i.setType("*/*");
297
                    getActivity().startActivityForResult(
298
                            Intent.createChooser(i, "File Browser"),
299
                            FCR);
300
                }
301
                //For Android 4.1+
302
                public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){
303
                    mUM = uploadMsg;
304
                    Intent i = new Intent(Intent.ACTION_GET_CONTENT);
305
                    i.addCategory(Intent.CATEGORY_OPENABLE);
306
                    i.setType("*/*");
307
                    getActivity().startActivityForResult(Intent.createChooser(i, "File Chooser"), DealsHomeFragment.FCR);
308
                }
309
                //For Android 5.0+
310
                public boolean onShowFileChooser(
311
                        WebView webView, ValueCallback<Uri[]> filePathCallback,
312
                        WebChromeClient.FileChooserParams fileChooserParams){
313
                    if(mUMA != null){
314
                        mUMA.onReceiveValue(null);
315
                    }
316
                    mUMA = filePathCallback;
317
                    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
318
                    if(takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null){
319
                        File photoFile = null;
320
                        try{
321
                            photoFile = createImageFile();
322
                            takePictureIntent.putExtra("PhotoPath", mCM);
323
                        }catch(IOException ex){
324
                            Log.e(TAG, "Image file creation failed", ex);
325
                        }
326
                        if(photoFile != null){
327
                            mCM = "file:" + photoFile.getAbsolutePath();
328
                            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
329
                        }else{
330
                            takePictureIntent = null;
331
                        }
332
                    }
333
                    Intent contentSelectionIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
334
                    contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
335
                    String [] mimeTypes = {"image/*", "application/pdf"};
336
                    contentSelectionIntent.setType("*/*");
337
                    contentSelectionIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes);
338
                    // contentSelectionIntent.setType("image/*");
339
                    Intent[] intentArray;
340
                    if(takePictureIntent != null){
341
                        intentArray = new Intent[]{takePictureIntent};
342
                    }else{
343
                        intentArray = new Intent[0];
344
                    }
345
 
346
                    Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
347
                    chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
348
                    chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
349
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
350
                    startActivityForResult(chooserIntent, FCR);
351
                    return true;
352
                }
353
            });
21480 rajender 354
            webView.getSettings().setSavePassword(true);
355
            CookieManager cookieManager = CookieManager.getInstance();
356
            cookieManager.setAcceptCookie(true);
357
 
358
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
359
                webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
360
                webView.getSettings().setAllowContentAccess(true);
361
                CookieManager cookieManager1 = CookieManager.getInstance();
362
                cookieManager1.setAcceptThirdPartyCookies(webView, true);
363
            }
22830 rajender 364
            if (Uri.parse(getArguments().getString("key")).getHost().contains("app.profitmandi")) {
21480 rajender 365
                userDataEditor.putString("saholic.data", UtilityFunctions.clearCookiesNew(getArguments().getString("key"), getActivity())).commit();
366
            }
367
            String url = getArguments().getString("key");
368
            if (Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
369
                CookieSyncManager.createInstance(getActivity());
370
                CookieManager cookieManager1 = CookieManager.getInstance();
371
                cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
372
                cookieManager1.setCookie(url, "walletAuthentication=true");
373
                cookieManager1.setCookie(url, "shopcluesActive=true");
374
                cookieManager1.setCookie(url, "paytmActive=true");
375
                cookieManager1.setCookie(url, "shareApps=true");
376
                cookieManager1.setCookie(url, "homeshop18=true");
377
                cookieManager1.setCookie(url, "isRedirect=true");
378
            }
379
            if (!(userData.getBoolean("paytmLoggedIn", false))) {
380
                Log.d("User Not Logged In", "User Not logged In");
381
            } else {
382
                if (userData.getString("paytmOrder", "").equalsIgnoreCase("true")) {
383
                    long nextFetchTime = userData.getLong("paytmNextFetchTime", 0);
384
                    if (nextFetchTime == 0 || nextFetchTime < System.currentTimeMillis()) {
385
                        if (isInternetOn()) {
386
                            new PaytmOrderURL().execute();
387
                        }
388
                    } else {
389
                        Log.d("Paytm False", "Paytm Time False");
390
                    }
391
                } else {
392
                    Log.d("Paytm False", "Paytm False No orders");
393
                }
394
            }
395
            if (!(userData.getBoolean("amazonLoggedIn", false))) {
396
                Log.d("Not In Amazon", "Amazon");
397
            }
398
            else {
399
                if (userData.getString("amazonOrder", "").equalsIgnoreCase("true")) {
400
                    long nextFetchTime = userData.getLong("amazonNextFetchTime", 0);
401
                    if (nextFetchTime == 0 || nextFetchTime < System.currentTimeMillis()) {
402
                        if (isInternetOn()) {
403
                            new FetchOrderURLS().execute();
404
                        }
405
                    }
406
                    else {
407
                        Log.d("Amazon False", "Amazon Time False" + userData.getLong("amazonNextFetchTime", 0));
408
                    }
409
                } else {
410
                    Log.d("Amazon False", "Amazon False No orders");
411
                }
412
            }
22130 rajender 413
            // Map <String, String> extraHeaders = new HashMap<String, String>();
414
            // extraHeaders.put("Auth-Token",userData.getString("token",""));
21480 rajender 415
            webView.setWebViewClient(webViewClient);
22130 rajender 416
            webView.loadUrl(url);
21480 rajender 417
 
418
        }
22130 rajender 419
 
21480 rajender 420
        else {
421
            SearchFragment nextFrag = new SearchFragment();
422
            Bundle args = new Bundle();
423
            args.putString("finishingurl", getArguments().getString("key"));
424
            args.putString("fragmentNumber", "1");
425
            nextFrag.setArguments(args);
426
            getActivity().getFragmentManager().beginTransaction()
427
                    .replace(R.id.frame_container, nextFrag)
428
                    .addToBackStack(null)
429
                    .commit();
430
        }
431
        return rootView;
432
    }
22830 rajender 433
 
434
 
21480 rajender 435
    @Override
436
    public void onViewCreated(View view, Bundle savedInstanceState) {
437
        super.onViewCreated(view, savedInstanceState);
438
    }
439
 
22130 rajender 440
    BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
441
        @Override
442
        public void onReceive(Context context, Intent intent) {
443
            final Bundle bundle = intent.getExtras();
444
 
445
            try {
446
                if (bundle != null) {
447
                    final Object[] pdusObj = (Object[]) bundle.get("pdus");
448
                    for (int i = 0; i < pdusObj.length; i++) {
449
 
450
                        SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
451
                        String phoneNumber = currentMessage.getDisplayOriginatingAddress();
452
 
453
                        String senderNum = phoneNumber;
454
                        String message = currentMessage.getDisplayMessageBody();
455
 
456
                        String lastTwo = null;
457
                        if (senderNum != null && senderNum.length() >= 6) {
458
                            lastTwo = senderNum.substring(senderNum.length() - 6);
459
                        }
460
                        try {
461
                            if (lastTwo.equalsIgnoreCase(apiData.getString("Sender_CLI","PROFTM"))){
462
                                messageNameValuePair = new ArrayList<>();
463
                                messageNameValuePair.add(new BasicNameValuePair("message",message));
464
                                getActivity().unregisterReceiver(broadcastReceiver);
465
                                new SendOtpMessage().execute();
466
                            }
467
                            else{
468
                                getActivity().registerReceiver(broadcastReceiver, new IntentFilter(SMS_RECEIVED));
469
                            }}
470
                        catch(Exception e){
471
                            e.printStackTrace();
472
                        }
473
                    }
474
                }
475
 
476
            }
477
            catch (Exception e) {
478
                e.printStackTrace();
479
 
480
            }
481
        }
482
    };
483
 
21480 rajender 484
    JSONObject obj;
485
 
486
    @Override
487
    public void onConnected(Bundle bundle) {
488
 
489
    }
490
 
491
    @Override
492
    public void onConnectionSuspended(int i) {
493
 
494
    }
495
 
496
    @Override
497
    public void onConnectionFailed(ConnectionResult connectionResult) {
498
 
499
    }
500
 
22130 rajender 501
 
502
 
21480 rajender 503
    public class WebClientClass extends WebViewClient {
504
        ProgressDialog pd = null;
505
 
506
        ProgressDialog pd2 = null;
507
 
508
 
509
        @Override
510
        public void onReceivedHttpAuthRequest(WebView view,
511
                                              HttpAuthHandler handler, String host, String realm) {
512
 
513
            handler.proceed("dtr", "dtr18Feb2015");
514
        }
515
 
516
        @Override
517
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
518
 
519
            if (apiData.getString("snapdealException", "false").equalsIgnoreCase("true")) {
520
                List<String> snapdealExceptionUrls = new ArrayList<>();
521
                StringTokenizer st = new StringTokenizer(apiData.getString("snapdeal.exception.urls", ""), "|");
522
                while (st.hasMoreTokens()) {
523
                    snapdealExceptionUrls.add(st.nextToken());
524
                }
525
                try {
526
                    Log.d("Count", "Count " + apiData.getString("snapdeal.exception.count", "1"));
527
                    for (String s : snapdealExceptionUrls) {
528
                        if (url.contains(s)) {
529
                            if (snapdealException <= Integer.parseInt(apiData.getString("snapdeal.exception.count", "1"))) {
530
                                webView.reload();
531
                                snapdealException += 1;
532
                            }
533
                            return false;
534
                        }
535
                    }
536
                } catch (Exception e) {
537
                    e.printStackTrace();
538
                }
539
            }
540
            if (apiData.getString("isRedirect", "false").equalsIgnoreCase("true")) {
541
                List<String> browserRedirectUrl = new ArrayList<>();
542
                StringTokenizer st = new StringTokenizer(apiData.getString("redirect.urls", ""), "|");
543
                while (st.hasMoreTokens()) {
544
                    browserRedirectUrl.add(st.nextToken());
545
                }
546
                for (String s : browserRedirectUrl) {
547
                    if (url.contains(s)) {
548
                        isPause = true;
549
                        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
550
                        startActivity(intent);
551
                        return true;
552
                    }
553
                }
554
            }
555
            if (url.contains("apprub")) {
556
                onShareClick(url);
557
                return true;
558
            }
22130 rajender 559
            if (url.contains(apiData.getString("wallet.auth", "api.profittill.com/special/native/login")) /*|| userData.getString("id", "").isEmpty()*/) {
21480 rajender 560
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
561
                android.webkit.CookieSyncManager.createInstance(getActivity());
562
                cookieManager.removeAllCookie();
563
                AlertDialog alert;
564
                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
565
                builder.setMessage(apiData.getString("wallet.auth.message", "You are not authenticated. Please log in again")).setCancelable(false);
566
                alert = builder.create();
567
                alert.show();
568
                try {
569
                    if (mGoogleApiClient.isConnected()) {
570
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
571
                        mGoogleApiClient.disconnect();
572
                        mGoogleApiClient.connect();
573
                        redirectPage(alert);
574
                    } else {
575
                        if (!mGoogleApiClient.isConnected()) {
576
                            redirectPage(alert);
577
                        }
578
                    }
579
                } catch (Exception e) {
580
                    redirectPage(alert);
581
                }
582
                return true;
583
            }
584
            if (url.contains("com.saholic.profittill")) {
585
                Intent intent = null;
586
                try {
587
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getActivity().getPackageName()));
588
                } catch (android.content.ActivityNotFoundException anfe) {
589
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getActivity().getPackageName()));
590
                }
591
                startActivity(intent);
592
                return true;
593
            }
594
            if (snapdealPageLoad == 1) {
595
                pd2 = new ProgressDialog(getActivity());
596
                pd2.setMessage("Wait for a moment and click again.");
597
                pd2.setProgress(view.getProgress());
598
                pd2.show();
599
                return true;
600
            }
601
            if (url.startsWith("tel")) {
602
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
603
                startActivity(intent);
604
                return true;
605
            }
22830 rajender 606
 
607
         /*   if (url.contains("intent://send")) {
608
                Intent intent = null;
609
                try {
610
                    intent = new Intent().parseUri(url, Intent.URI_INTENT_SCHEME);
611
                } catch (URISyntaxException e) {
612
                    e.printStackTrace();
613
                }
614
                startActivity(intent);
21480 rajender 615
                return true;
22830 rajender 616
            }*/
617
 
618
            if (url.contains("mailto")) {
619
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
620
                startActivity(intent);
21480 rajender 621
                return true;
622
            }
22830 rajender 623
 
624
 
21480 rajender 625
            return false;
626
 
627
        }
628
 
22381 rajender 629
 
21480 rajender 630
        @Override
631
        public synchronized void onPageStarted(final WebView view, String url, Bitmap favicon) {
632
            super.onPageStarted(view, url, favicon);
633
            final CharSequence[] items = {" Don't show me again "};
634
            final ArrayList seletedItems = new ArrayList();
635
            try {
22130 rajender 636
 
21480 rajender 637
                if (Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
638
                    CookieSyncManager.createInstance(getActivity());
639
                    CookieManager cookieManager = CookieManager.getInstance();
640
                    cookieManager.setCookie(url, "token=" + userData.getString("token", ""));
641
                    cookieManager.setCookie(url, "walletAuthentication=true");
642
                    cookieManager.setCookie(url, "shopcluesActive=true");
643
                    cookieManager.setCookie(url, "paytmActive=true");
644
                    cookieManager.setCookie(url, "shareApps=true");
645
                    cookieManager.setCookie(url, "homeshop18=true");
646
                    cookieManager.setCookie(url, "isRedirect=true");
647
                }
648
                if (false) {
649
                    flipkartUrl = url;
650
 
651
                    if (flipkartData.getInt("showagainflag", 0) < 3) {
652
                        AlertDialog dialog;
653
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
654
                        builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
655
                                .setView(checkBoxView)
656
                                .setCancelable(false)
657
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
658
                                    @Override
659
                                    public void onClick(DialogInterface dialog, int which) {
660
                                        int i = flipkartData.getInt("showagainflag", 0);
661
                                        flipkartDataEditor.putInt("showagainflag", ++i);
662
                                        flipkartDataEditor.commit();
663
                                        Intent flipkartIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
664
                                        startActivity(flipkartIntent);
665
                                    }
666
                                })
667
                                .setNegativeButton("No", new DialogInterface.OnClickListener() {
668
                                    @Override
669
                                    public void onClick(DialogInterface dialog, int id) {
22830 rajender 670
                                        view.loadUrl((apiData.getString("domain","http://app.profitmandi.com")));
21480 rajender 671
 
672
                                    }
673
                                });
674
                        dialog = builder.create();
675
                        dialog.show();
676
                    } else if (flipkartData.getInt("showagainflag", 0) == 3) {
677
                        AlertDialog dialog;
678
                        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
679
                        checkBoxView = View.inflate(getActivity(), R.layout.checkboxlayout, null);
680
                        CheckBox checkBox = (CheckBox) checkBoxView.findViewById(R.id.checkbox);
681
                        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
682
 
683
                            @Override
684
                            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
685
                                flipkartFlag = isChecked;
686
                            }
687
                        });
688
                        checkBox.setText("Don't show me again");
689
                        builder.setMessage(apiData.getString("flipkart.message", "You won't be able to track your orders & earn cashbacks if you purchase using Flipkart App."))
690
                                .setView(checkBoxView)
691
                                .setCancelable(false)
692
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
693
                                    @Override
694
                                    public void onClick(DialogInterface dialog, int which) {
695
                                        if (flipkartFlag) {
696
                                            int i = flipkartData.getInt("showagainflag", 0);
697
                                            flipkartDataEditor.putInt("showagainflag", ++i);
698
                                            flipkartDataEditor.commit();
699
                                        }
700
                                        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
701
                                        startActivity(i);
702
                                    }
703
                                })
704
                                .setNegativeButton("No", new DialogInterface.OnClickListener() {
705
                                    @Override
706
                                    public void onClick(DialogInterface dialog, int id) {
22830 rajender 707
                                        view.loadUrl((apiData.getString("domain","http://app.profitmandi.com")));
21480 rajender 708
 
709
                                    }
710
                                });
711
                        dialog = builder.create();
712
                        dialog.show();
713
                    } else {
714
                        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(flipkartUrl));
715
                        startActivity(i);
716
                    }
717
                    view.stopLoading();
718
                } else {
719
                    for (String s : pageLoadList) {
720
                        if (url.contains(s)) {
721
                            PAGE_LOAD = true;
722
                        }
723
                    }
724
                    if (PAGE_LOAD) {
725
                        snapdealPageLoad = 1;
726
                        PAGE_LOAD = false;
727
                    } else {
728
                        snapdealPageLoad = 0;
729
                        for (String s : redirectUrlsList) {
730
                            if (url.contains(s)) {
731
                                REDIRECT = true;
732
                                break;
733
                            }
734
                        }
735
                        if (REDIRECT) {
736
                            pageRedirect = 2;
737
                            REDIRECT = false;
738
                        }
739
                        else if (pageRedirect == 2 || pageRedirect == 1) {
740
                            Toast.makeText(getActivity(), "Redirecting to deals...", Toast.LENGTH_SHORT).show();
741
                            Intent i = new Intent(getActivity(), MainActivity.class);
742
                            i.putExtra("displayView", "31");
743
                            i.putExtra("redirectUrl", apiData.getString("redirect.url", "") + "?user_id=" + userData.getString("id", ""));
744
                            startActivity(i);
745
                            pageRedirect = 0;
746
                        }
747
                        else {
748
                            landingURL = url;
22381 rajender 749
                           /* 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"))) {
21480 rajender 750
                                pd = new ProgressDialog(getActivity());
751
                                pd.setTitle("Please wait");
752
                                pd.setMessage("Loading..");
753
                                pd.show();
22381 rajender 754
                            }*/
21480 rajender 755
                            getOrderSuccessUrlConfirmation(url);
756
                            if (displayActionBar) {
757
                                pd1 = new ProgressDialog(getActivity());
758
                                pd1.setTitle("Please wait");
759
                                pd1.setMessage("Loading..");
760
                                pd1.show();
761
                            }
762
                        }
763
                    }
764
                    if (Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data", "false").equalsIgnoreCase("true")) {
765
 
766
                    }
767
                    else {
768
                        JSONObject j = new JSONObject();
769
                        JSONArray jsArray = new JSONArray();
770
                        j.put("url", url);
771
                        j.put("user_id", userData.getString("id", null));
772
                        j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
773
                        jsArray.put(j);
774
                        AsyncTaskCompat.executeParallel(new pushData(), new JSONObject().put("pushdata", jsArray));
775
 
776
                    }
777
                    storeSubTagId(url);
778
                }
779
            }
780
            catch (Exception e) {
781
                e.printStackTrace();
782
            }
783
        }
784
 
785
        @Override
786
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
22830 rajender 787
           try{
21480 rajender 788
            if (getActivity() != null) {
789
                SearchFragment nextFrag = new SearchFragment();
790
                Bundle args = new Bundle();
791
                args.putString("finishingurl", failingUrl);
792
                nextFrag.setArguments(args);
22130 rajender 793
                getActivity().getFragmentManager().beginTransaction().replace(R.id.frame_container,nextFrag).addToBackStack(null).commitAllowingStateLoss();
794
 
22830 rajender 795
            }}
796
            catch (Exception e){
797
                e.printStackTrace();
21480 rajender 798
            }
22830 rajender 799
 
800
            super.onReceivedError(view, errorCode, description, failingUrl);
21480 rajender 801
        }
22830 rajender 802
 
803
 
21480 rajender 804
        @Override
805
        public synchronized void onPageFinished(WebView view, String url) {
806
            super.onPageFinished(view, url);
22381 rajender 807
 
22830 rajender 808
            if(url.contains(apiData.getString("Web_Uri","http://app.profitmandi.com/entry-point"))){
22381 rajender 809
 
810
 
22130 rajender 811
                // if(url.contains(ProfitTillConstants.Web_Uri)){
22830 rajender 812
                StringBuffer commandsBuffer = new StringBuffer("javascript:");
813
                commandsBuffer.append("document.getElementById('authToken').value ='" +userData.getString("token","")+ "';");
814
                commandsBuffer.append("document.getElementById('androidId').value ='" +UtilityFunctions.androidId(getActivity()) + "';");
815
                String js1 =commandsBuffer.toString();
22130 rajender 816
                if(Build.VERSION.SDK_INT >= 19){
817
                    view.evaluateJavascript(js1, new ValueCallback<String>() {
818
                        @Override
819
                        public void onReceiveValue(String s) {
820
                        }
821
                    });
822
                }
823
                else {
824
                    view.loadUrl(js1);
825
                }
22830 rajender 826
 
827
 
22130 rajender 828
                String js2 =("javascript:document.getElementById('authTokenSubmit').click()");
829
                view.loadUrl(js2);
830
                String js = ("javascript:window.localStorage.removeItem('android.otpReceived');");
831
                Log.d("storage",js);
21480 rajender 832
                view.loadUrl(js);
833
            }
22130 rajender 834
 
22830 rajender 835
           if(url.contains(apiData.getString("domain","http://app.profitmandi.com "))|| url.contains("about:blank")){
22130 rajender 836
                // ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
837
                ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
838
            }
839
            else{
840
                ((AppCompatActivity)getActivity()).getSupportActionBar().show();
841
            }
22381 rajender 842
 
843
                view.loadUrl("javascript:try{" +
844
                        "var lastUrl=document.URL;" +
845
                        "setInterval(function(){var currentUrl=document.URL;" +
846
                        "if(currentUrl!=lastUrl){window.HTMLOUT.angularUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
847
                        "}catch(error){Android.onError(error.message);}");
848
 
21480 rajender 849
            try {
850
                if (url.equalsIgnoreCase("about:blank")) {
851
                    Log.d("Blankl Url", "Blank Url");
852
                }
853
                else {
854
                    if (getActivity() != null) {
855
                        if (url.contains(apiData.getString("notification.page.url", "http://api.profittill.com/users/usernotification"))) {
856
                            String notificationUrl = apiData.getString("notification.count", "http://45.33.50.227:3001/getNotificationCount") + "?user_id=" + userData.getString("id", "") + "&android_id=" + UtilityFunctions.androidId(getActivity());
857
                            new NotificationCount().getCount(getActivity(), null, notificationUrl);
858
                            new Handler().postDelayed(new Runnable() {
859
                                @Override
860
                                public void run() {
861
                                    getActivity().invalidateOptionsMenu();
862
                                }
863
                            }, 1000);
864
                        }
865
                    }
866
                    if (apiData.getString("snapdealException", "true").equalsIgnoreCase("true")) {
867
                        List<String> snapdealExceptionUrlsPass = new ArrayList<>();
868
                        StringTokenizer st = new StringTokenizer(apiData.getString("snapdeal.exception.urls.pass", ""), "|");
869
                        while (st.hasMoreTokens()) {
870
                            snapdealExceptionUrlsPass.add(st.nextToken());
871
                        }
872
                        for (String s : snapdealExceptionUrlsPass) {
873
                            if (url.contains(s)) {
874
                                snapdealException = 0;
875
                            }
876
                        }
877
                    }
22381 rajender 878
                  /*  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"))) {
21480 rajender 879
                        pd.dismiss();
22381 rajender 880
                    }*/
21480 rajender 881
                    if (snapdealPageLoad == 1) {
882
                        snapdealPageLoad = 0;
883
                    }
884
                    if (pd2 != null) {
885
                        pd2.dismiss();
886
                    }
887
                    if (Uri.parse(url).getHost().equalsIgnoreCase("paytm.com")) {
888
                        view.loadUrl("javascript:try{" +
889
                                "var lastUrl=document.URL;" +
890
                                "setInterval(function(){var currentUrl=document.URL;" +
891
                                "if(currentUrl!=lastUrl){window.HTMLOUT.paytmUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
892
                                "}catch(error){Android.onError(error.message);}");
893
                    }
894
                    if (Uri.parse(url).getHost().contains("saholic") && userData.getString("saholic.data", "false").equalsIgnoreCase("true")) {
895
                        saholicUrl = url;
896
                        view.loadUrl("javascript:window.HTMLOUT.saholicHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
897
                    }
898
                    if (url.contains(apiData.getString("amazon.tracking.order.url", ""))) {
899
                        fetchOrderDetails();
900
                    }
901
                    if (displayActionBar) {
902
                        if (url.contains("amazon")) {
903
                            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
904
                            pd1.dismiss();
905
                            amazonWebView = new WebView(webView.getContext());
906
                            amazonWebView.setVisibility(View.GONE);
907
                            amazonWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
908
                            amazonWebView.getSettings().setJavaScriptEnabled(true);
909
 
910
                        } else if (url.contains(ProfitTillConstants.PAYTM)) {
911
                            PaytmWebViewClient paytmWebViewClient = new PaytmWebViewClient();
912
                            pd1.dismiss();
913
                            paytmWebView = new WebView(webView.getContext());
914
                            paytmWebView.setVisibility(View.GONE);
915
                            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
916
                            paytmWebView.getSettings().setJavaScriptEnabled(true);
917
                            paytmWebView.loadUrl(getPaytmReferer(url));
918
                            paytmWebView.setWebViewClient(paytmWebViewClient);
919
                        } else {
920
                            view.loadUrl("javascript:window.HTMLOUT.flipkartHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
921
 
922
                        }
923
                    }
924
 
925
                    amazonOrderHistoryWebView = new WebView(webView.getContext());
926
                    amazonOrderHistoryWebView.setVisibility(View.GONE);
927
                    amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
928
                    amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
929
                    amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
930
 
931
                    amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
932
                    amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
933
                    amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
934
                    amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
935
                    amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
936
 
937
                    amazonAllUrlsWebView = new WebView(webView.getContext());
938
                    amazonAllUrlsWebView.setVisibility(View.GONE);
939
                    amazonAllUrlsWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
940
                    amazonAllUrlsWebView.getSettings().setJavaScriptEnabled(true);
941
                    amazonAllUrlsWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
942
 
943
                    if (url.contains("https://www.amazon.in/ap/signin")) {
944
                        if (!FLAG) {
945
                            FLAG = true;
946
                            userDataEditor.putString("amazonOrder", "true").commit();
947
                            userDataEditor.putBoolean("amazonLoggedIn", true).commit();
948
                        }
22830 rajender 949
                    }
950
                    else if (FLAG) {
21480 rajender 951
                        view.loadUrl("javascript:try{" +
952
                                "var lastUrl=document.URL;" +
953
                                "setInterval(function(){var currentUrl=document.URL;" +
954
                                "if(currentUrl!=lastUrl){window.HTMLOUT.amazonUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
955
                                "}catch(error){Android.onError(error.message);}");
956
                        amazonOrderHistoryWebView = new WebView(webView.getContext());
957
                        amazonOrderHistoryWebView.setVisibility(View.GONE);
958
                        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
959
                        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
960
                        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
961
                        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
962
                        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
963
                        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
964
                        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
965
                        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
966
                        fetchOrderDetails();
967
                        FLAG = false;
968
                    }
969
 
970
                    if (url.contains("flipkart")) {
971
                        if (Flipkartflag) {
972
                            if (!url.contains("https://www.flipkart.com/login")) {
973
                                processFlipkartHtml();
974
                                Flipkartflag = false;
975
                            }
976
                        }
977
                        else if(url.contains("https://www.flipkart.com/rv/orderConfirmation")){
978
                            processFlipkartHtml();
979
                        }
980
                        else {
981
                            view.loadUrl("javascript:try{" +
982
                                    "var lastUrl=document.URL;" +
983
                                    "setInterval(function(){var currentUrl=document.URL;" +
984
                                    "if(currentUrl!=lastUrl){window.HTMLOUT.flipkartUrls(currentUrl);lastUrl=currentUrl;}},2000)" +
985
                                    "}catch(error){Android.onError(error.message);}");
986
                        }
987
 
988
                    }
989
 
990
 
991
                    view.setOnKeyListener(new View.OnKeyListener() {
992
                        @Override
22381 rajender 993
        public boolean onKey(View v, int keyCode, KeyEvent event) {
994
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
995
                WebView webView = (WebView) v;
996
                switch (keyCode) {
997
                    case KeyEvent.KEYCODE_BACK:
998
                        String veb=webView.getUrl();
22830 rajender 999
                        if ((webView.canGoBack() && !webView.getUrl().contains(apiData.getString("dashboard","http://app.profitmandi.com/pages/home/dashboard")) && !webView.getUrl().contains(apiData.getString("mobileOtp","http://app.profitmandi.com/pages/mobileOtp"))&& !webView.getUrl().contains(apiData.getString("registration","http://app.profitmandi.com/pages/registration")) && !webView.getUrl().contains(apiData.getString("checkRegistration","http://app.profitmandi.com/pages/checkRegistration"))&&!webView.getUrl().contains(apiData.getString("thankYou","http://app.profitmandi.com/pages/home/thankYou")))|| pageRedirect == 2) {
22381 rajender 1000
                            webView.goBack();
1001
                            pageRedirect = 0;
1002
                            snapdealPageLoad = 0;
1003
                            return true;
1004
                        } 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", ""))) {
1005
                            Intent i = new Intent(getActivity(), MainActivity.class);
1006
                            i.putExtra("displayView", "0");
1007
                            startActivity(i);
1008
                            return true;
1009
                        }
22830 rajender 1010
                        else if (webView.getUrl().contains(apiData.getString("domain","http://app.profitmandi.com"))) {
22381 rajender 1011
                            //else if(webView.getUrl().contains(ProfitTillConstants.Web_Uri)){
1012
                            if (doubleBackToExitPressedOnce) {
1013
                                new AlertDialog.Builder(getActivity())
1014
                                        .setIcon(R.drawable.symbol)
1015
                                        .setTitle("Exit!")
1016
                                        .setMessage("Are you sure you want to close?")
1017
                                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
1018
                                            @Override
1019
                                    public void onClick(DialogInterface dialog, int which) {
1020
                                        if(userData.getString("userStatus","").equals("notRegistered")||userData.getString("userStatus","").equals("registered")||userData.getString("userStatus","").equals("notVerifiedRetailer"))
1021
                                        {
1022
                                            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
1023
                                            mGoogleApiClient.disconnect();
1024
                                            userDataEditor.clear().commit();
1025
                                            mGoogleApiClient.connect();
1026
                                            userDataEditor.clear().commit();
1027
                                            startActivity(new Intent(getActivity(), LoginActivity.class));
1028
 
22130 rajender 1029
                                        }
22381 rajender 1030
                                        else{
1031
                                           Intent startMain = new Intent(Intent.ACTION_MAIN);
1032
                                            startMain.addCategory(Intent.CATEGORY_HOME);
1033
                                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
1034
                                            startActivity(startMain);
1035
                                        }
1036
                                    }
21480 rajender 1037
 
22381 rajender 1038
                                })
1039
                                .setNegativeButton("No", null)
1040
                                .show();
1041
                        return true;
1042
                            }
1043
                            doubleBackToExitPressedOnce = true;
1044
                            Toast.makeText(getActivity(), "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
21480 rajender 1045
 
22381 rajender 1046
                            new Handler().postDelayed(new Runnable() {
22130 rajender 1047
 
22381 rajender 1048
                                @Override
1049
                                public void run() {
1050
                                    doubleBackToExitPressedOnce = false;
21480 rajender 1051
                                }
22381 rajender 1052
                            }, 5000);
22830 rajender 1053
                        }
1054
                        else {
22381 rajender 1055
                            Intent i = new Intent(getActivity(), MainActivity.class);
1056
                            i.putExtra("displayView", "0");
1057
                            startActivity(i);
1058
                            return true;
21480 rajender 1059
                        }
22381 rajender 1060
 
1061
                        break;
21480 rajender 1062
                }
1063
            }
22381 rajender 1064
            return false;
1065
                }
1066
            });
1067
        }
22830 rajender 1068
    }
1069
            catch (Exception e) {
22381 rajender 1070
        e.printStackTrace();
1071
        TestinAgent.uploadException(getActivity(), "On Page Finished", e);
22830 rajender 1072
      }
1073
      }}
1074
 
1075
       public class Callback extends WebViewClient{
22130 rajender 1076
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
1077
            Toast.makeText(getActivity(), "Failed loading app!", Toast.LENGTH_SHORT).show();
21480 rajender 1078
        }
22830 rajender 1079
       }
22130 rajender 1080
    // Create an image file
22830 rajender 1081
      private File createImageFile() throws IOException{
22130 rajender 1082
        @SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
1083
        String imageFileName = "img_"+timeStamp+"_";
1084
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
1085
        return File.createTempFile(imageFileName,".jpg",storageDir);
22830 rajender 1086
      }
21480 rajender 1087
 
22130 rajender 1088
 
22830 rajender 1089
 
1090
 
22130 rajender 1091
    @Override
1092
    public void onActivityResult(int requestCode, int resultCode, Intent intent){
1093
        super.onActivityResult(requestCode, resultCode, intent);
1094
        if(Build.VERSION.SDK_INT >= 21){
1095
            Uri[] results = null;
1096
            //Check if response is positive
1097
            if(resultCode== Activity.RESULT_OK){
1098
                if(requestCode == FCR){
1099
                    if(null == mUMA){
1100
                        return;
1101
                    }
1102
                    if(intent == null){
1103
                        //Capture Photo if no image available
1104
                        if(mCM != null){
1105
                            results = new Uri[]{Uri.parse(mCM)};
1106
                        }
1107
                    }else{
1108
                        String dataString = intent.getDataString();
1109
                        if(dataString != null){
1110
                            results = new Uri[]{Uri.parse(dataString)};
1111
                        }
1112
                    }
1113
                }
1114
            }
1115
            mUMA.onReceiveValue(results);
1116
            mUMA = null;
1117
        }else{
1118
            if(requestCode == FCR){
1119
                if(null == mUM) return;
1120
                Uri result = intent == null || resultCode != Activity.RESULT_OK ? null : intent.getData();
1121
                mUM.onReceiveValue(result);
1122
                mUM = null;
1123
            }
1124
        }
21480 rajender 1125
    }
1126
 
1127
    private void processFlipkartHtml() {
1128
        FlipkartWebview fkView = new FlipkartWebview();
1129
        amazonOrderHistoryWebView = new WebView(webView.getContext());
1130
        amazonOrderHistoryWebView.setVisibility(View.GONE);
1131
        String post=apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts");
1132
        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");
1133
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
1134
        amazonOrderHistoryWebView.addJavascriptInterface(new javascriptInterface(webView), "HTMLOUT");
1135
        amazonOrderHistoryWebView.loadUrl(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"));
1136
        amazonOrderHistoryWebView.setWebViewClient(fkView);
1137
    }
1138
    class ProcessFlipkartHtml extends AsyncTask<String, Integer, String> {
1139
        ProgressDialog pg1 = null;
1140
        @Override
1141
        protected void onPreExecute() {
1142
 
1143
            super.onPreExecute();
1144
 
22830 rajender 1145
 
21480 rajender 1146
        }
1147
        @Override
1148
        protected String doInBackground(String... arg0) {
1149
            try {
1150
                HttpClient httpclient = new DefaultHttpClient();
1151
                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"));
1152
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1153
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsRawHtml));
1154
                HttpResponse response = httpclient.execute(httppost);
1155
                HttpEntity entity = response.getEntity();
1156
                int status = response.getStatusLine().getStatusCode();
1157
 
1158
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
1159
                JSONObject jobj =jObjGmail.getJSONObject("result");
1160
                JSONObject headers = jobj.getJSONObject("headers");
1161
                JSONArray url =jobj.getJSONArray("urls");
1162
                for (int i = 0; i <url.length(); i++) {
1163
                    HttpClient client = new DefaultHttpClient();
1164
                    HttpGet get = new HttpGet(url.getString(i));
1165
                    Map<String, String> map = new HashMap<String, String>();
1166
                    Iterator iter = headers.keys();
1167
                    while (iter.hasNext()) {
1168
                        String key = (String) iter.next();
1169
                        String value = headers.getString(key);
1170
                        get.setHeader(key, value);
1171
                    }
1172
                    HttpResponse resp = client.execute(get);
1173
                    HttpEntity ent = resp.getEntity();
1174
                    JSONObject jOb = new JSONObject(EntityUtils.toString(ent));
1175
 
1176
                    HttpClient http = new DefaultHttpClient();
1177
                    ArrayList<NameValuePair> namevaluepairs = new ArrayList<>();
1178
                    namevaluepairs.add(new BasicNameValuePair("html",UtilityFunctions.compress(jOb.toString())));
1179
                    namevaluepairs.add(new BasicNameValuePair("url", url.getString(i)));
1180
                    namevaluepairs.add(new BasicNameValuePair("zip","1"));
1181
                    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"));
1182
                    post.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1183
                    post.setEntity(new UrlEncodedFormEntity(namevaluepairs));
1184
                    HttpResponse res = http.execute(post);
1185
                    int sta = res.getStatusLine().getStatusCode();
1186
                }
1187
 
1188
            }
1189
            catch (Exception e) {
1190
                e.printStackTrace();
1191
                return null;
1192
            }
1193
            return null;
1194
        }
1195
        @Override
1196
        protected void onPostExecute(String jsonObject) {
1197
            super.onPostExecute(jsonObject);
1198
 
1199
 
1200
        }}
1201
 
1202
    @Override
22830 rajender 1203
    public void onDetach() {
1204
        super.onDetach();
1205
        if(webView != null) {
1206
            webView.clearHistory();
1207
            webView.removeAllViews();
1208
            webView.clearView();
1209
            webView.destroy();
1210
        }
1211
 
1212
    }
1213
 
1214
 
1215
    @Override
21480 rajender 1216
    public void onResume() {
1217
        super.onResume();
1218
        getView().setFocusableInTouchMode(true);
1219
        getView().requestFocus();
1220
        getView().setOnKeyListener(new View.OnKeyListener() {
1221
            @Override
1222
            public boolean onKey(View v, int keyCode, KeyEvent event) {
1223
 
1224
                if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
22381 rajender 1225
                   try {
1226
                       String veb=webView.getUrl();
22830 rajender 1227
                        if (webView.getUrl().contains(apiData.getString("dashboard","http://app.profitmandi.com/pages/home/dashboard"))||webView.getUrl().contains(apiData.getString("mobileOtp","http://app.profitmandi.com/pages/mobileOtp"))||webView.getUrl().contains(apiData.getString("registration","http://app.profitmandi.com/pages/registration"))||webView.getUrl().contains(apiData.getString("checkRegistration","http://app.profitmandi.com/pages/checkRegistration"))||webView.getUrl().contains(apiData.getString("thankYou","http://app.profitmandi.com/pages/home/thankYou"))) {
22381 rajender 1228
                        if (doubleBackToExitPressedOnce) {
1229
                        new AlertDialog.Builder(getActivity())
1230
                                .setIcon(R.drawable.symbol)
1231
                                .setTitle("Exit!")
1232
                                .setMessage("Are you sure you want to close?")
1233
                                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
1234
                                    @Override
1235
                                    public void onClick(DialogInterface dialog, int which) {
1236
                        if(userData.getString("userStatus","").equals("notRegistered")||userData.getString("userStatus","").equals("registered")||userData.getString("userStatus","").equals("notVerifiedRetailer"))
1237
                        {
1238
                            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
1239
                                    mGoogleApiClient.disconnect();
1240
                                    userDataEditor.clear().commit();
1241
                                    mGoogleApiClient.connect();
1242
                                    startActivity(new Intent(getActivity(), LoginActivity.class));
1243
                        }
22830 rajender 1244
                         else{
22381 rajender 1245
                            Intent startMain = new Intent(Intent.ACTION_MAIN);
1246
                            startMain.addCategory(Intent.CATEGORY_HOME);
1247
                            startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
21480 rajender 1248
 
22381 rajender 1249
                            startActivity(startMain);
1250
                        }}
22130 rajender 1251
 
22381 rajender 1252
                })
1253
                        .setNegativeButton("No", null)
1254
                        .show();
1255
                        return true;
1256
                    }
1257
                    doubleBackToExitPressedOnce = true;
1258
                    Toast.makeText(getActivity(), "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
22130 rajender 1259
 
22381 rajender 1260
                    new Handler().postDelayed(new Runnable() {
22130 rajender 1261
 
22381 rajender 1262
                        @Override
1263
                        public void run() {
1264
                            doubleBackToExitPressedOnce = false;
21480 rajender 1265
                        }
22381 rajender 1266
                    }, 5000);
1267
                    }
1268
                    else {
1269
                    if (webView.canGoBack()) {
1270
                        webView.goBack();
1271
                    } else {
1272
                        Intent i = new Intent(getActivity(), MainActivity.class);
1273
                        i.putExtra("displayView", "0");
1274
                        startActivity(i);
1275
                    }
1276
                    return true;
1277
                    }}
1278
                    catch (Exception e) {
21480 rajender 1279
                        e.printStackTrace();
1280
                        return false;
1281
                    }
1282
                }
1283
                return false;
1284
            }
1285
 
1286
        });
1287
 
22381 rajender 1288
      }
1289
 
1290
 
21480 rajender 1291
    public void fetchOrderDetails() {
1292
        if (isInternetOn()) {
1293
            new FetchOrderURLS().execute();
1294
        }
1295
    }
1296
 
1297
    public void pushDataInAmazon(String orderId) {
1298
 
1299
        AmazonOrderDetails amazonOrderClient = new AmazonOrderDetails();
1300
        nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();
1301
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
1302
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("id", orderId));
1303
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("store_id", apiData.getString("store.code.amazon", null)));
1304
        nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("order_url", amazonData.getString("amazonurl", "")));
1305
        //nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
1306
        amazonWebView.loadUrl(amazonData.getString("amazonurl", ""));
1307
        amazonWebView.setWebViewClient(amazonOrderClient);
1308
 
1309
    }
1310
 
1311
    public void storeSubTagId(String url) {
1312
 
1313
        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"))) {
1314
            StringTokenizer st2 = new StringTokenizer(url, "&");
1315
            while (st2.hasMoreElements()) {
1316
                String token = st2.nextToken();
1317
                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"))) {
1318
                    String subtagId = userData.getString("subtag", "null");
1319
                    if (subtagId == null) {
1320
                        userDataEditor.putString("subtag", token.split("=")[1]);
1321
                        userDataEditor.commit();
1322
                    } else {
1323
                        userDataEditor.remove("subtag");
1324
                        userDataEditor.commit();
1325
                        userDataEditor.putString("subtag", token.split("=")[1]);
1326
                        userDataEditor.commit();
1327
                    }
1328
                } else
1329
                    continue;
1330
            }
1331
        } else
1332
            return;
1333
    }
1334
 
1335
 
1336
    boolean displayActionBar;
1337
 
1338
    public void getDisplayActionBar(String url) throws Exception {
1339
        String snapdealConfirmation = apiData.getString("snapdeal.order.success.url", null);
1340
        String flipkartConfirmation = apiData.getString("flipkart.order.success.url", null);
1341
        String amazonConfirmation = apiData.getString("amazon.order.success.url", null);
1342
        String amazonThankYouConfirmation = apiData.getString("amazon.order.success.thankyou.url", null);
1343
        String saholicConfirmation = apiData.getString("saholic.order.success.url", null);
1344
        if (url.contains(snapdealConfirmation) || url.contains(flipkartConfirmation) || url.contains(amazonConfirmation) || url.contains(amazonThankYouConfirmation) || url.contains(saholicConfirmation)) {
1345
            displayActionBar = true;
1346
            String storeID = getStoreId(url);
1347
            if (storeID == null) {
1348
                Log.e("Deals Page Activity", "Null value returned for storeID");
1349
            } else {
1350
                nameValuePairsRawHtml = new ArrayList<NameValuePair>();
1351
                nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
1352
                nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
1353
                nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
1354
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", null)));
1355
            }
1356
        } else {
1357
            displayActionBar = false;
1358
        }
1359
        return;
1360
    }
1361
 
1362
    public void getOrderSuccessUrlConfirmation(String url) throws Exception {
1363
        for (String s : orderSuccessUrlList) {
1364
            if (url.contains(s)) {
1365
                displayActionBar = true;
1366
                String storeID = getStoreId(url);
1367
                if (storeID == null) {
1368
                    Log.e("Deals Page Activity", "Null value returned for storeID");
1369
                } else {
1370
                    nameValuePairsRawHtml = new ArrayList<NameValuePair>();
1371
                    nameValuePairsRawHtml.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
1372
                    nameValuePairsRawHtml.add(new BasicNameValuePair("store_id", storeID));
1373
                    nameValuePairsRawHtml.add(new BasicNameValuePair("order_url", url));
1374
                    nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag", userData.getString("subtag", "")));
1375
                }
1376
                break;
1377
            } else {
1378
                displayActionBar = false;
1379
            }
1380
        }
1381
        return;
1382
    }
1383
 
1384
    public String getStoreId(String url) {
1385
       /* if(url.contains("snapdeal")){
1386
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.snapdeal","0"));
1387
            return apiData.getString("store.code.snapdeal",null);
1388
        }
1389
        else if(url.contains("flipkart")){
1390
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.flipkart","0"));
1391
            return apiData.getString("store.code.flipkart",null);
1392
        }
1393
        else if(url.contains("amazon")){
1394
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.amazon","0"));
1395
            return apiData.getString("store.code.amazon",null);
1396
        }
1397
        else if(url.contains("saholic")){
1398
            return apiData.getString("store.code.spice",null);
1399
        }
1400
        else if(url.contains("shopclues")){
1401
            return "7";
1402
        }*/
1403
        return UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "amazon=1,flipkart=2,snapdeal=3,saholic=4,shopclues=5,")), url);
1404
    }
1405
 
1406
    class pushData extends AsyncTask<JSONObject, Integer, String> {
1407
 
1408
        @Override
1409
        protected void onPreExecute() {
1410
 
1411
            super.onPreExecute();
1412
        }
1413
 
1414
        @Override
1415
        protected String doInBackground(JSONObject... objs) {
1416
            HttpClient httpclient = new DefaultHttpClient();
1417
            try {
1418
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
1419
                nameValuePairs.add(new BasicNameValuePair("pushdata",objs[0].toString()));
1420
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
1421
                httppost.setHeader("Authorization", BASIC_AUTH);
1422
 
1423
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
1424
                HttpResponse response = httpclient.execute(httppost);
1425
                int status = response.getStatusLine().getStatusCode();
1426
 
1427
                if (status == 200) {
1428
                    return "success";
1429
                } else {
1430
                    return "failure";
1431
                }
1432
 
1433
            } catch (ClientProtocolException e) {
1434
                return "failure";
1435
            } catch (IOException e) {
1436
                return "failure";
1437
            }
1438
        }
1439
 
1440
        @Override
1441
        protected void onPostExecute(String result) {
22381 rajender 1442
 
21480 rajender 1443
            super.onPostExecute(result);
22381 rajender 1444
 
21480 rajender 1445
        }
1446
    }
1447
 
1448
    ArrayList<NameValuePair> nameValuePairsRawHtml = new ArrayList<NameValuePair>();
1449
    ArrayList<NameValuePair> nameValuePairsRawHtmlAmazon = new ArrayList<NameValuePair>();
1450
 
1451
    class javascriptInterface {
1452
 
1453
        WebView view;
1454
 
1455
 
1456
 
22130 rajender 1457
 
21480 rajender 1458
        /**
1459
         * Instantiate the interface and set the context
1460
         */
1461
        public javascriptInterface(WebView c) {
1462
 
1463
            this.view=c;
1464
        }
22130 rajender 1465
        @JavascriptInterface
1466
        public void otpSent() {
1467
            //Toast.makeText(getActivity(),"successfull",Toast.LENGTH_LONG).show();
1468
            getActivity().registerReceiver(broadcastReceiver, new IntentFilter(SMS_RECEIVED));
1469
        }
1470
        @JavascriptInterface
1471
        public void performClick(String strl) {
1472
            Toast.makeText(getActivity(), strl, Toast.LENGTH_SHORT).show();
1473
        }
1474
        @JavascriptInterface
1475
        public void authTokenChange(String newToken) {
1476
            userDataEditor.putString("token" ,newToken);
1477
            Log.d("newtoken",newToken);
1478
            userDataEditor.commit();
1479
            new AuthTokenChange().execute();
1480
        }
21480 rajender 1481
 
22130 rajender 1482
        @JavascriptInterface
1483
        public void logout() {
1484
            try{
1485
                if (mGoogleApiClient.isConnected()) {
1486
                    Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
1487
                    mGoogleApiClient.disconnect();
1488
                    mGoogleApiClient.connect();
22830 rajender 1489
                    webView.clearHistory();
1490
                    webView.removeAllViews();
1491
                    webView.clearView();
1492
                    webView.destroy();
22130 rajender 1493
                    userDataEditor.clear().commit();
1494
                    startActivity(new Intent(getActivity(), LoginActivity.class));
1495
                }
1496
                else{
1497
                    if(!mGoogleApiClient.isConnected()){
1498
                        userDataEditor.clear().commit();
1499
                        startActivity(new Intent(getActivity(), LoginActivity.class));
1500
                    }
21480 rajender 1501
 
22130 rajender 1502
 
1503
                }
1504
            }catch (Exception e){
1505
                userDataEditor.clear().commit();
1506
                startActivity(new Intent(getActivity(), LoginActivity.class));
21480 rajender 1507
            }
1508
        }
1509
 
1510
        @JavascriptInterface
1511
        public void showToast(String toast) {
1512
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
1513
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
1514
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1515
            postDataNameValuePair = orderDetails.readData1();
1516
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
1517
                orderDetail.add(new BasicNameValuePair("zip", "1"));
1518
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1519
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1520
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1521
                PushRawHTML pm = new PushRawHTML();
1522
                pm.execute(orderDetail);
1523
            }
1524
        }
1525
 
1526
        @JavascriptInterface
1527
        public void amazonOrderTrackingHTML(String html) {
1528
            amazonOrderTrackingData.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
1529
            amazonOrderTrackingData.add(new BasicNameValuePair("zip", "1"));
1530
            amazonOrderTrackingData.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1531
            amazonOrderTrackingData.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1532
            amazonOrderTrackingData.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1533
            new AmazonOrderTrackingDetails().execute(amazonOrderTrackingData);
1534
        }
1535
 
1536
        @JavascriptInterface
1537
        public void showHTML(String html) {
1538
 
1539
            showToast(html);
1540
        }
1541
 
1542
        @JavascriptInterface
1543
        public void flipkartHTML(String html) {
1544
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
1545
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
1546
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
1547
            postDataNameValuePair = orderDetails.readData1();
1548
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
1549
                orderDetail.add(new BasicNameValuePair("zip", "1"));
1550
                orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1551
                orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1552
                orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1553
                new loadData().execute(orderDetail);
1554
            }
1555
        }
1556
 
1557
        @JavascriptInterface
1558
        public void orderpage(String html) {
1559
 
1560
            nameValuePairsRawHtml.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
22130 rajender 1561
            nameValuePairsRawHtml.add(new BasicNameValuePair("url",apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts")));
21480 rajender 1562
            nameValuePairsRawHtml.add(new BasicNameValuePair("zip","1"));
1563
            new ProcessFlipkartHtml().execute();
1564
        }
1565
 
1566
        @JavascriptInterface
1567
        public void saholicHTML(String html) {
1568
 
1569
            try {
1570
                obj = new JSONObject();
1571
                jSaholic = new JSONObject();
1572
                jSaholic.put("html", UtilityFunctions.compress(html));
1573
                jSaholic.put("zip", "1");
1574
                jSaholic.put("user_id", userData.getString("id", null));
1575
            } catch (Exception e) {
1576
 
1577
            }
1578
            new checkGateWayProblem().execute(saholicUrl);
1579
        }
1580
 
1581
        @JavascriptInterface
1582
        public void amazonUrls(String url) {
1583
            try {
1584
                obj = new JSONObject();
1585
                JSONObject j = new JSONObject();
1586
                JSONArray jsArray = new JSONArray();
1587
                j.put("url", url);
1588
                j.put("user_id", userData.getString("id", null));
1589
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1590
                jsArray.put(j);
1591
                obj.put("pushdata", jsArray);
1592
                new pushData().execute(obj);
1593
            } catch (Exception e) {
1594
                e.printStackTrace();
1595
            }
1596
 
1597
            try {
1598
                getOrderSuccessUrlConfirmation(url);
1599
                if (displayActionBar) {
1600
                    fetchAmazonOrder(url);
1601
                }
1602
            } catch (Exception e) {
1603
                e.printStackTrace();
1604
            }
1605
        }
1606
 
1607
        @JavascriptInterface
1608
        public void paytmUrls(String html) {
1609
            try {
1610
                obj = new JSONObject();
1611
                JSONObject j = new JSONObject();
1612
                JSONArray jsArray = new JSONArray();
1613
                j.put("url", html);
1614
                j.put("user_id", userData.getString("id", null));
1615
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1616
                jsArray.put(j);
1617
                obj.put("pushdata", jsArray);
22130 rajender 1618
                new pushData().execute(obj);
21480 rajender 1619
            } catch (Exception e) {
1620
                e.printStackTrace();
1621
            }
1622
            if (html.contains("https://paytm.com/login")) {
1623
                if (!PAYTMFLAG) {
1624
                    PAYTMFLAG = true;
1625
                    userDataEditor.putString("paytmOrder", "true").commit();
1626
                    userDataEditor.putBoolean("paytmLoggedIn", true).commit();
1627
                }
1628
            } else if (PAYTMFLAG) {
1629
                new PaytmOrderURL().execute();
1630
                PAYTMFLAG = false;
1631
            }
1632
 
1633
        }
1634
 
1635
        @JavascriptInterface
1636
        public void flipkartUrls(String url) {
1637
            try {
1638
                obj = new JSONObject();
1639
                JSONObject j = new JSONObject();
1640
                JSONArray jsArray = new JSONArray();
1641
                j.put("url", url);
1642
                j.put("user_id", userData.getString("id", null));
1643
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1644
                jsArray.put(j);
1645
                obj.put("pushdata", jsArray);
22130 rajender 1646
                new pushData().execute(obj);
21480 rajender 1647
            } catch (Exception e) {
1648
                e.printStackTrace();
1649
            }
1650
            if (url.contains("https://www.flipkart.com/login")) {
1651
                Flipkartflag = true;
1652
                userDataEditor.putString("flipkartOrder", "true").commit();
1653
                userDataEditor.putBoolean("flipkartLoggedIn", true).commit();
1654
            }
1655
        }
22381 rajender 1656
        @JavascriptInterface
1657
        public void angularUrls(String url) {
1658
            if(!isInternetOn()){
22830 rajender 1659
                try {
1660
                    SearchFragment nextFrag = new SearchFragment();
1661
                    Bundle args = new Bundle();
1662
                    args.putString("finishingurl", url);
1663
                    nextFrag.setArguments(args);
1664
                    getActivity().getFragmentManager().beginTransaction().replace(R.id.frame_container, nextFrag).addToBackStack(null).commitAllowingStateLoss();
1665
                }catch (Exception e) {
1666
                    e.printStackTrace();
1667
                }
22381 rajender 1668
 
1669
            }
1670
            else{
1671
            try {
1672
                obj = new JSONObject();
1673
                JSONObject j = new JSONObject();
1674
                JSONArray jsArray = new JSONArray();
1675
                j.put("url", url);
1676
                j.put("user_id", userData.getString("id", null));
1677
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
1678
                jsArray.put(j);
1679
                obj.put("pushdata", jsArray);
1680
                new pushData().execute(obj);
1681
            } catch (Exception e) {
1682
                e.printStackTrace();
1683
            }}}
21480 rajender 1684
    }
22130 rajender 1685
    class AuthTokenChange extends AsyncTask<String, Integer, String> {
21480 rajender 1686
 
1687
        @Override
1688
        protected void onPreExecute() {
1689
 
1690
            super.onPreExecute();
1691
        }
22130 rajender 1692
 
21480 rajender 1693
        @Override
1694
        protected String doInBackground(String... params) {
1695
            try {
1696
                HttpClient httpclient = new DefaultHttpClient();
22830 rajender 1697
                HttpGet httpget=new HttpGet(apiData.getString("Web_Api_Tokendetail","http://app.profitmandi.com/apis/user/detail/token"));
22130 rajender 1698
                // HttpGet httpget = new HttpGet(ProfitTillConstants.Web_Api + "/user/token-info");
1699
                httpget.setHeader("Auth-Token", userData.getString("token", ""));
1700
                HttpResponse response = httpclient.execute(httpget);
21480 rajender 1701
                HttpEntity entity = response.getEntity();
1702
                int status = response.getStatusLine().getStatusCode();
1703
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
22130 rajender 1704
                Log.d("Json",String.valueOf(jObjGmail));
21480 rajender 1705
                return String.valueOf(jObjGmail);
1706
 
22130 rajender 1707
            } catch (UnsupportedEncodingException e) {
21480 rajender 1708
                e.printStackTrace();
22130 rajender 1709
            } catch (IOException e) {
21480 rajender 1710
                e.printStackTrace();
1711
            } catch (JSONException e) {
1712
                e.printStackTrace();
1713
            }
1714
            return null;
1715
        }
1716
 
22130 rajender 1717
        @Override
1718
        protected void onPostExecute(String result) {
1719
            super.onPostExecute(result);
1720
            try {
1721
                JSONObject jsonObject = new JSONObject(result);
1722
                JSONObject jobj=jsonObject.getJSONObject("response");
1723
                String userStatus=jobj.getString("userStatus");
1724
                userDataEditor.putString("userStatus",userStatus);
1725
                userDataEditor.commit();
1726
                if(!(userData.getString("userStatus","").equals("notRegistered"))) {
1727
                    String user_id = jobj.getString("userId");
1728
                    userDataEditor.putString("id", user_id);
1729
                    userDataEditor.commit();
1730
                    if(!(userData.getString("id", "").equals(""))){
1731
                        UtilityFunctions utf = new UtilityFunctions();
1732
                        new pushApkData().execute(utf.getDeviceInformation(getActivity()));
1733
                    }
1734
                    else {
1735
                        Toast.makeText(getActivity(),"Network issue",Toast.LENGTH_LONG).show();
1736
                    }}
1737
                else{
1738
 
1739
                }
1740
            }
1741
            catch (JSONException e) {
1742
                e.printStackTrace();
1743
            }
21480 rajender 1744
        }
22130 rajender 1745
    }
1746
    class pushApkData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {
21480 rajender 1747
 
22130 rajender 1748
        @Override
1749
        protected void onPreExecute() {
1750
            super.onPreExecute();
1751
        }
21480 rajender 1752
 
1753
        @Override
22130 rajender 1754
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {
1755
            try {
1756
                HttpClient httpclient = new DefaultHttpClient();
22830 rajender 1757
                HttpPost httppost = new HttpPost(apiData.getString("devices_info","http://api.profittill.com/devices/add"));
22130 rajender 1758
                //HttpPost httppost = new HttpPost(ProfitTillConstants.Push_Url);
1759
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1760
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1761
                HttpResponse response = httpclient.execute(httppost);
1762
                HttpEntity entity = response.getEntity();
1763
                int status = response.getStatusLine().getStatusCode();
1764
                if(status == 200){
1765
                    return "success";
1766
                } else {
1767
                    return "failure";
1768
                }
1769
            } catch (Exception e) {
1770
                return null;
1771
            }
1772
        }
1773
        @Override
1774
        protected void onPostExecute(String result) {
1775
            super.onPostExecute(result);
1776
            if (userData.getString("fcm_token_sent", "false").equals("false") && (!userData.getString("id", "").equals(""))) {
1777
                regId = FirebaseInstanceId.getInstance().getToken();
1778
                Log.d("RegisterActivity", "registerInBackground - regId: "
1779
                        + regId);
1780
                msg = "Device registered";
1781
                new gcmPushData().execute(msg);
1782
            }}}
1783
 
1784
    class gcmPushData extends AsyncTask<String, Integer, String> {
1785
 
1786
        @Override
21480 rajender 1787
        protected void onPreExecute() {
1788
            super.onPreExecute();
1789
        }
1790
 
1791
        @Override
22130 rajender 1792
        protected String doInBackground(String... arg0) {
1793
            String id = null;
1794
            try {
1795
                HttpClient httpclient = new DefaultHttpClient();
22830 rajender 1796
                HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url","http://api.profittill.com/gcm_users/add"));
22130 rajender 1797
                //HttpPost httppost = new HttpPost(ProfitTillConstants.gcm_url);
1798
                ArrayList<NameValuePair> nameValuePairsGcm = new ArrayList<>();
1799
                TelephonyManager telephonyManager = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
1800
                nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid", regId));
1801
                nameValuePairsGcm.add(new BasicNameValuePair("imeinumber", telephonyManager.getDeviceId()));
1802
                nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id", null)));
1803
                nameValuePairsGcm.add(new BasicNameValuePair("notification_type","fcm"));
1804
                nameValuePairsGcm.add(new BasicNameValuePair("device_message", arg0[0]));
1805
                nameValuePairsGcm.add(new BasicNameValuePair("androidid", UtilityFunctions.androidId(getActivity())));
1806
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1807
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));
1808
                HttpResponse response = httpclient.execute(httppost);
1809
                HttpEntity entity = response.getEntity();
1810
                int status = response.getStatusLine().getStatusCode();
1811
 
1812
                if (status == 200) {
1813
                    Log.d("ResponseCode GCM ", status + "");
1814
                    userDataEditor.putString("fcm_token_sent", "true");
1815
                    userDataEditor.commit();
1816
                } else {
1817
                    Log.d("ResponseCode GCM ", status + "");
1818
                }
1819
                nameValuePairsGcm.clear();
1820
                Log.e("pass 1", "connection success ");
1821
            } catch (Exception e) {
1822
                Log.e("Fail 1", e.toString());
1823
 
1824
            }
1825
            return null;
1826
        }
1827
 
1828
        @Override
1829
        protected void onPostExecute(String result)
1830
        {
1831
 
1832
            super.onPostExecute(result);
1833
        }}
1834
 
1835
    class loadData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
1836
 
1837
        @Override
1838
        protected void onPreExecute() {
1839
            super.onPreExecute();
1840
        }
1841
 
1842
        @Override
21480 rajender 1843
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
1844
 
1845
 
1846
            try {
1847
                HttpClient httpclient = new DefaultHttpClient();
1848
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
1849
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1850
 
1851
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
1852
                HttpResponse response = httpclient.execute(httppost);
1853
                HttpEntity entity = response.getEntity();
1854
 
1855
                int status = response.getStatusLine().getStatusCode();
1856
 
1857
                if (status == 200) {
1858
                    NameValuePair y = orderDetail[0].get(2);
1859
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
1860
                } else {
1861
                    Log.d("Status in load Data ", "Status Load data " + status);
1862
 
1863
                }
1864
                String getJSON = EntityUtils.toString(entity);
1865
                if (getJSON == null) {
1866
                    return null;
1867
                } else {
1868
                    JSONObject jObjGmail = new JSONObject(getJSON);
1869
                    return jObjGmail;
1870
                }
1871
            } catch (Exception e) {
1872
                return null;
1873
            }
1874
        }
1875
 
1876
 
1877
        @Override
1878
        protected void onPostExecute(JSONObject result) {
1879
            if (result == null) {
1880
                //Log.d("Error in fetching result ", "Flipkart html ");
1881
            } else {
1882
                try {
1883
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
1884
                        orderDetails.deleterecords();
1885
                } catch (Exception e) {
1886
                }
1887
            }
1888
            super.onPostExecute(result);
1889
        }
1890
    }
1891
 
1892
    class AmazonOrderDetails extends WebViewClient {
1893
 
1894
        @Override
1895
        public void onReceivedHttpAuthRequest(WebView view,
1896
                                              HttpAuthHandler handler, String host, String realm) {
1897
 
1898
            handler.proceed("dtr", "dtr18Feb2015");
1899
 
1900
        }
1901
 
1902
        @Override
1903
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
1904
            super.onPageStarted(view, url, favicon);
1905
        }
1906
 
1907
        @Override
1908
        public void onPageFinished(WebView view, String url) {
1909
            view.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
1910
            super.onPageFinished(view, url);
1911
        }
1912
    }
1913
 
1914
    class amazonInterface {
1915
 
1916
        Context mContext;
1917
 
1918
        /**
1919
         * Instantiate the interface and set the context
1920
         */
1921
        public amazonInterface(Context c) {
1922
            mContext = c;
1923
        }
1924
 
1925
        /**
1926
         * Show a toast from the web page
1927
         */
1928
        @JavascriptInterface
1929
        public void showToast(String toast) {
1930
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(toast)));
1931
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("zip", "1"));
1932
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1933
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1934
            nameValuePairsRawHtmlAmazon.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1935
            if (isInternetOn()) {
1936
                new amazonPushData().execute(nameValuePairsRawHtmlAmazon);
1937
            }
1938
        }
1939
 
1940
 
1941
        @JavascriptInterface
1942
        public void showHTML(String html) {
1943
            showToast(html);
1944
        }
1945
 
1946
        @JavascriptInterface
1947
        public void orderHistory(String html) {
1948
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1949
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(0)));
1950
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1951
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1952
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1953
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1954
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1955
            if (isInternetOn()) {
1956
                new pushQueuedData().execute(amazonOrderHistory);
1957
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
1958
            }
1959
        }
1960
 
1961
        @JavascriptInterface
1962
        public void cancelledHistory(String html) {
1963
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1964
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(j++)));
1965
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1966
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1967
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1968
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1969
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1970
            if (isInternetOn()) {
1971
                new pushCancelledQueuedData().execute(amazonOrderHistory);
1972
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
1973
            }
1974
        }
1975
 
1976
        @JavascriptInterface
1977
        public void amazonOrderUrls(String html) {
1978
            //Log.e("OrderUrls","Order amazonOrderUrls" + html);
1979
            List<NameValuePair> amazonOrderHistory = new ArrayList<>();
1980
            amazonOrderHistory.add(new BasicNameValuePair("url", str.get(1)));
1981
            amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
1982
            amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
1983
            amazonOrderHistory.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
1984
            amazonOrderHistory.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
1985
            amazonOrderHistory.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
1986
            if (isInternetOn()) {
1987
                new pushCancelledQueuedData().execute(amazonOrderHistory);
1988
            } else {
1989
 
1990
            }
1991
        }
1992
 
1993
    }
1994
 
1995
    int j;
1996
 
1997
    class amazonPushData extends AsyncTask<List<NameValuePair>, Integer, String> {
1998
        private StringBuilder sb;
1999
 
2000
        private HttpResponse req;
2001
        private InputStream is;
2002
 
2003
        @Override
2004
        protected void onPreExecute() {
2005
            super.onPreExecute();
2006
            Log.e("Pre execute", "Pre execute");
2007
 
2008
        }
2009
 
2010
        @Override
2011
        protected String doInBackground(List<NameValuePair>... orderDetail) {
2012
            try {
2013
                HttpClient httpclient = new DefaultHttpClient();
2014
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
2015
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2016
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
2017
                HttpResponse response = httpclient.execute(httppost);
2018
                HttpEntity entity = response.getEntity();
2019
                int status = response.getStatusLine().getStatusCode();
2020
 
2021
                if (status == 200) {
2022
                    System.out.println("ResponseCode of record: " + status + " is " + status);
2023
                    NameValuePair y = orderDetail[0].get(2);
2024
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
2025
                    amazonapiSettingsEditor.remove("amazonurl");
2026
                    amazonapiSettingsEditor.commit();
2027
                } else {
2028
                    /*Log.d("ResponseCode",status+"");
2029
                    System.out.println(" NOT Transfered");
2030
                    Log.d("ResponseCode",status+"");*/
2031
                }
2032
/*                Log.e("pass 1", "Amazon success ");*/
2033
            } catch (Exception e) {
2034
/*                Log.e("Fail 1", e.toString());*/
2035
 
2036
            }
2037
            return "success";
2038
        }
2039
 
2040
        @Override
2041
        protected void onPostExecute(String result) {
2042
            super.onPostExecute(result);
2043
            new FetchOrderURLS().execute();
2044
        }
2045
    }
2046
 
2047
 
2048
    class PushRawHTML extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2049
        @Override
2050
        protected void onPreExecute() {
2051
            super.onPreExecute();
2052
        }
2053
 
2054
        @Override
2055
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
2056
 
2057
            try {
2058
                HttpClient httpclient = new DefaultHttpClient();
2059
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
2060
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2061
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
2062
                HttpResponse response = httpclient.execute(httppost);
2063
                HttpEntity entity = response.getEntity();
2064
                int status = response.getStatusLine().getStatusCode();
2065
 
2066
                if (status == 200) {
2067
                    NameValuePair y = orderDetail[0].get(2);
2068
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
2069
                } else {
2070
                }
2071
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2072
 
2073
                return jObjGmail;
2074
            } catch (Exception e) {
2075
                return null;
2076
            }
2077
        }
2078
 
2079
        @Override
2080
        protected void onPostExecute(JSONObject result) {
2081
            super.onPostExecute(result);
2082
            try {
2083
                userDataEditor.putString("amazonOrder", "true").commit();
2084
                userDataEditor.putBoolean("amazonLoggedIn", true).commit();
2085
                userDataEditor.putLong("amazonNextFetchTime", System.currentTimeMillis() + ProfitTillConstants.DURATION_TRACKING_ORDERS).commit();
2086
                if (result.getString("htmlRequired").equalsIgnoreCase("true")) {
2087
                    String orderId = result.getString("orderId");
2088
                    amazonapiSettingsEditor.putString("amazonurl", result.getString("url"));
2089
                    amazonapiSettingsEditor.commit();
2090
                    pushDataInAmazon(orderId);
2091
                }
2092
            } catch (Exception e) {
2093
 
2094
            }
2095
        }
2096
    }
2097
 
2098
    class AmazonOrderTrackingDetails extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2099
        @Override
2100
        protected void onPreExecute() {
2101
            super.onPreExecute();
2102
        }
2103
 
2104
        @Override
2105
        protected JSONObject doInBackground(List<NameValuePair>... arg0) {
2106
            try {
2107
                HttpClient httpclient = new DefaultHttpClient();
2108
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
2109
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2110
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
2111
                HttpResponse response = httpclient.execute(httppost);
2112
                HttpEntity entity = response.getEntity();
2113
                int status = response.getStatusLine().getStatusCode();
2114
 
2115
                if (status == 200) {
2116
                } else {
2117
                }
2118
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2119
                return jObjGmail;
2120
 
2121
            } catch (Exception e) {
2122
                return null;
2123
            }
2124
        }
2125
 
2126
        @Override
2127
        protected void onPostExecute(JSONObject result) {
2128
            super.onPostExecute(result);
2129
        }
2130
    }
2131
 
2132
    class pushQueuedData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2133
        @Override
2134
        protected void onPreExecute() {
2135
            super.onPreExecute();
2136
        }
2137
 
2138
        @Override
2139
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
2140
 
2141
            try {
2142
                HttpClient httpclient = new DefaultHttpClient();
2143
                //Get store id
2144
                // NameValuePair nvp = pushOrder[1].get(0);
2145
                //String storeId = nvp.getValue();
2146
 
2147
                String fetchUrl = apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
2148
                HttpPost httppost = new HttpPost(fetchUrl);
2149
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2150
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
2151
                HttpResponse response = httpclient.execute(httppost);
2152
                HttpEntity entity = response.getEntity();
2153
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2154
                return jObjGmail;
2155
 
2156
            } catch (Exception e) {
2157
                return null;
2158
            }
2159
 
2160
        }
2161
 
2162
        @Override
2163
        protected void onPostExecute(JSONObject result) {
2164
            super.onPostExecute(result);
2165
            try {
2166
                if (result == null) {
2167
 
2168
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
2169
                    userDataEditor.putBoolean("amazonLoggedIn", false).commit();
2170
                } else {
2171
                    addOrderHistoryCancelled(str.get(1));
2172
                }
2173
            } catch (Exception e) {
2174
                e.printStackTrace();
2175
            }
2176
        }
2177
    }
2178
 
2179
    class pushCancelledQueuedData extends AsyncTask<List<NameValuePair>, Integer, String> {
2180
 
2181
        @Override
2182
        protected void onPreExecute() {
2183
            super.onPreExecute();
2184
        }
2185
 
2186
        @Override
2187
        protected String doInBackground(List<NameValuePair>... pushOrder) {
2188
 
2189
            try {
2190
                HttpClient httpclient = new DefaultHttpClient();
2191
 
2192
                String fetchUrl = apiData.getString("amazon.order.tracking.post.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
2193
                HttpPost httppost = new HttpPost(fetchUrl);
2194
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2195
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
2196
                HttpResponse response = httpclient.execute(httppost);
2197
                HttpEntity entity = response.getEntity();
2198
 
2199
                return "success";
2200
            } catch (Exception e) {
2201
                return "failure";
2202
            }
2203
 
2204
        }
2205
 
2206
        @Override
2207
        protected void onPostExecute(String result) {
2208
            super.onPostExecute(result);
2209
            try {
2210
                addOrderHistoryCancelled(str.get(++sizeList));
2211
            } catch (Exception e) {
2212
                e.printStackTrace();
2213
            }
2214
            FLAG = false;
2215
        }
2216
    }
2217
 
22130 rajender 2218
    class SendOtpMessage extends AsyncTask<String, Integer, String> {
2219
 
2220
        @Override
2221
        protected void onPreExecute() {
2222
 
2223
            super.onPreExecute();
2224
        }
2225
 
2226
        @Override
2227
        protected String doInBackground(String... params) {
2228
            try {
2229
 
2230
                HttpClient httpclient = new DefaultHttpClient();
22830 rajender 2231
                HttpPost httppost = new HttpPost(apiData.getString("Web_Api_Otp","http://app.profitmandi.com/apis/otp/parseOTP"));
22130 rajender 2232
                //HttpPost httppost = new HttpPost(ProfitTillConstants.Web_Api + "/otp/parseOTP");
2233
                httppost.setHeader("Auth-Token", userData.getString("token", ""));
2234
                httppost.setEntity(new UrlEncodedFormEntity(messageNameValuePair));
2235
                HttpResponse response = httpclient.execute(httppost);
2236
                HttpEntity entity = response.getEntity();
2237
                int status = response.getStatusLine().getStatusCode();
2238
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2239
                return String.valueOf(jObjGmail);
2240
 
2241
            }
2242
            catch (UnsupportedEncodingException e) {
2243
                e.printStackTrace();
2244
            }
2245
            catch (IOException e) {
2246
                e.printStackTrace();
2247
            }
2248
            catch (JSONException e) {
2249
                e.printStackTrace();
2250
            }
2251
            return null;
2252
        }
2253
        @Override
2254
        protected void onPostExecute(String result) {
2255
            super.onPostExecute(result);
2256
            try {
2257
                JSONObject jsonObject = new JSONObject(result);
2258
                String response=jsonObject.getString("response");
2259
 
2260
                String js = ("javascript:window.localStorage.setItem('android.otpReceived','"+response +"');");
2261
                webView.loadUrl(js);
2262
                //webView.loadUrl("javascript:alert(window.localStorage.getItem('android.otpReceived'))");
2263
 
2264
                Log.d("otp",js);
2265
           /* for(int i=1; i<6; i++){
2266
                js += "document.getElementsByName('otp" + i + "')[0].value ='" +response.substring(i-1,i) + "';";
2267
 
2268
            }
2269
                 /* String js = ("javascript:document.getElementsByName('otp1')[0].value ='"+response +"';");
2270
                //js +="document.getElementsByName('otpForm')[0].submit();";
2271
               // Log.d("otp",js);
2272
            if (Build.VERSION.SDK_INT >= 19) {
2273
                webView.evaluateJavascript(js, new ValueCallback<String>() {
2274
                    @Override
2275
                    public void onReceiveValue(String s) {
2276
 
2277
                    }
2278
                });
2279
            } else {
2280
                webView.loadUrl(js);
2281
            }*/
2282
                //String js2 =("javascript:document.getElementById('').click()");
2283
                //webView.loadUrl(js2);
2284
            } catch (JSONException e) {
2285
                e.printStackTrace();
2286
            }
2287
        }
2288
 
2289
    }
2290
 
21480 rajender 2291
    int sizeList;
2292
 
2293
    class FetchOrderURLS extends AsyncTask<String, Integer, JSONObject> {
2294
 
2295
        @Override
2296
        protected void onPreExecute() {
2297
            super.onPreExecute();
2298
        }
2299
 
2300
        @Override
2301
        protected JSONObject doInBackground(String... arg0) {
2302
            HttpClient httpclient = new DefaultHttpClient();
2303
            try {
2304
                String fetchUrl = apiData.getString("amazon.order.tracking.get.url", null) + "?user_id=" + userData.getString("id", "") + "&store_id=" + apiData.getString("store.code.amazon", "1");
2305
                HttpGet httppost = new HttpGet(fetchUrl);
2306
 
2307
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2308
                HttpResponse response = httpclient.execute(httppost);
2309
                HttpEntity entity = response.getEntity();
2310
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2311
                return jObjGmail;
2312
 
2313
            } catch (ClientProtocolException e) {
2314
                return null;
2315
            } catch (IOException e) {
2316
                return null;
2317
            }
2318
            catch (Exception e) {
2319
                e.printStackTrace();
2320
                return null;
2321
            }
2322
        }
2323
 
2324
        @Override
2325
        protected void onPostExecute(JSONObject result) {
2326
            super.onPostExecute(result);
2327
            try {
2328
                if (result == null) {
2329
                    userDataEditor.putString("amazonOrder", "false").commit();
2330
                } else {
2331
                    if (result.length() == 0) {
2332
                        userDataEditor.putString("amazonOrder", "false").commit();
2333
                    } else {
2334
                        JSONArray js = result.getJSONArray("result");
2335
                        if (js.length() != 0) {
2336
                            str = new ArrayList<>();
2337
                            for (int i = 0; i < js.length(); i++) {
2338
                                String s = js.getString(i);
2339
                                str.add(s);
2340
                            }
2341
                            sizeList = 1;
2342
                            j = 1;
2343
                            addOrderHistory(str.get(0));
2344
                        } else {
2345
                            userDataEditor.putString("amazonOrder", "false").commit();
2346
                        }
2347
                    }
2348
                }
2349
            } catch (Exception e) {
2350
            }
2351
        }
2352
    }
2353
 
2354
    int count = 0;
2355
    List<String> str;
2356
 
2357
    public void addOrderHistory(String s) {
2358
        AmazonOrderHistoryDetails amazonOrderClient = new AmazonOrderHistoryDetails();
2359
        amazonOrderHistoryWebView = new WebView(webView.getContext());
2360
        amazonOrderHistoryWebView.setVisibility(View.GONE);
2361
        amazonOrderHistoryWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
2362
        amazonOrderHistoryWebView.getSettings().setJavaScriptEnabled(true);
2363
        amazonOrderHistoryWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
2364
        amazonOrderHistoryWebView.loadUrl(s);
2365
        amazonOrderHistoryWebView.setWebViewClient(amazonOrderClient);
2366
    }
2367
 
2368
    public void addOrderHistoryCancelled(String s) {
2369
        AmazonOrderCancelledDetails amazonOrderClient1 = new AmazonOrderCancelledDetails();
2370
        amazonOrderHistoryCancelledWebView = new WebView(webView.getContext());
2371
        amazonOrderHistoryCancelledWebView.setVisibility(View.GONE);
2372
        amazonOrderHistoryCancelledWebView.getSettings().setJavaScriptEnabled(true);
2373
        amazonOrderHistoryCancelledWebView.getSettings().setUserAgentString("Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36");
2374
        amazonOrderHistoryCancelledWebView.addJavascriptInterface(new amazonInterface(getActivity()), "HTMLOUT");
2375
        amazonOrderHistoryCancelledWebView.loadUrl(s);
2376
        amazonOrderHistoryCancelledWebView.setWebViewClient(amazonOrderClient1);
2377
    }
2378
 
2379
    class AmazonOrderHistoryDetails extends WebViewClient {
2380
 
2381
        @Override
2382
        public void onReceivedHttpAuthRequest(WebView view,
2383
                                              HttpAuthHandler handler, String host, String realm) {
2384
 
2385
            handler.proceed("dtr", "dtr18Feb2015");
2386
 
2387
        }
2388
 
2389
        @Override
2390
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2391
            super.onPageStarted(view, url, favicon);
2392
        }
2393
 
2394
        @Override
2395
        public void onPageFinished(WebView view, String url) {
2396
            super.onPageFinished(view, url);
2397
            if (url.contains("signin")) {
2398
                userDataEditor.putBoolean("amazonLoggedIn", false).commit();
2399
            } else {
2400
                view.loadUrl("javascript:window.HTMLOUT.orderHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2401
            }
2402
        }
2403
    }
2404
 
2405
    class AmazonOrderCancelledDetails extends WebViewClient {
2406
 
2407
        @Override
2408
        public void onReceivedHttpAuthRequest(WebView view,
2409
                                              HttpAuthHandler handler, String host, String realm) {
2410
 
2411
            handler.proceed("dtr", "dtr18Feb2015");
2412
 
2413
        }
2414
 
2415
        @Override
2416
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2417
            super.onPageStarted(view, url, favicon);
2418
        }
2419
 
2420
        @Override
2421
        public void onPageFinished(WebView view, String url) {
2422
            super.onPageFinished(view, url);
2423
            view.loadUrl("javascript:window.HTMLOUT.cancelledHistory('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2424
        }
2425
    }
2426
 
2427
 
2428
    public final boolean isInternetOn() {
2429
 
2430
        ConnectivityManager connec =
2431
                (ConnectivityManager) getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
2432
 
2433
        if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
2434
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
2435
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
2436
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) {
2437
            return true;
2438
 
2439
        } else if (
2440
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
2441
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED) {
2442
 
2443
            return false;
2444
        }
2445
        return false;
2446
    }
2447
 
2448
    class checkGateWayProblem extends AsyncTask<String, Integer, String> {
2449
        @Override
2450
        protected void onPreExecute() {
2451
            super.onPreExecute();
2452
        }
2453
 
2454
        @Override
2455
        protected String doInBackground(String... arg0) {
2456
            HttpClient httpclient = new DefaultHttpClient();
2457
            try {
2458
                HttpPost httppost = new HttpPost(arg0[0]);
2459
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
2460
                httppost.setHeader("Authorization", basicAuth);
2461
                HttpResponse response = httpclient.execute(httppost);
2462
                int status = response.getStatusLine().getStatusCode();
2463
 
2464
                jsArraySaholic = new JSONArray();
2465
                jSaholic.put("url", arg0[0]);
2466
 
2467
                jSaholic.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
2468
                jSaholic.put("httpstatus", status);
2469
                jSaholic.put("cookies", CookieManager.getInstance().getCookie(arg0[0]));
2470
                jsArraySaholic.put(jSaholic);
2471
                obj.put("pushdata", jsArraySaholic);
2472
                Log.d("status ", "Status in checkGatewayProbelm " + status);
2473
                if (status == 200) {
2474
                    return "success";
2475
                } else {
2476
                    return "failure";
2477
                }
2478
 
2479
            } catch (ClientProtocolException e) {
2480
                return "failure";
2481
            } catch (IOException e) {
2482
                return "failure";
2483
            } catch (JSONException e) {
2484
                return "failure";
2485
            }
2486
        }
2487
 
2488
        @Override
2489
        protected void onPostExecute(String result) {
2490
            super.onPostExecute(result);
2491
            new pushData1().execute(obj);
2492
        }
2493
    }
2494
 
2495
    class pushData1 extends AsyncTask<JSONObject, Integer, String> {
2496
 
2497
        @Override
2498
        protected void onPreExecute() {
2499
            super.onPreExecute();
2500
        }
2501
 
2502
        @Override
2503
        protected String doInBackground(JSONObject... arg0) {
2504
            HttpClient httpclient = new DefaultHttpClient();
2505
            try {
2506
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
2507
                nameValuePairs.add(new BasicNameValuePair("pushdata", arg0[0].toString()));
2508
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api", null));
2509
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
2510
                httppost.setHeader("Authorization", basicAuth);
2511
 
2512
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
2513
                System.out.println("JSON object in push Data 1 " + arg0[0].toString());
2514
                StringEntity se = new StringEntity(arg0[0].toString());
2515
                HttpResponse response = httpclient.execute(httppost);
2516
                int status = response.getStatusLine().getStatusCode();
2517
 
2518
                if (status == 200) {
2519
                    return "success";
2520
                } else {
2521
                    return "failure";
2522
                }
2523
 
2524
            } catch (ClientProtocolException e) {
2525
                return "failure";
2526
            } catch (IOException e) {
2527
                return "failure";
2528
            }
2529
        }
2530
 
2531
        @Override
2532
        protected void onPostExecute(String result) {
2533
            super.onPostExecute(result);
2534
        }
2535
    }
2536
 
2537
    public void redirectPage(final AlertDialog builder) {
2538
        Handler h = new Handler();
2539
        h.postDelayed(new Runnable() {
2540
            @Override
2541
            public void run() {
2542
                if (builder != null) {
2543
                    builder.dismiss();
2544
                }
2545
                userDataEditor.clear().commit();
2546
                startActivity(new Intent(getActivity(), LoginActivity.class));
2547
            }
2548
        }, 3000);
2549
 
2550
    }
2551
 
2552
    public void sendQueuedResponse() {
2553
 
2554
        List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
2555
        postDataNameValuePair = orderDetails.readData1();
2556
        for (List<NameValuePair> orderDetail : postDataNameValuePair) {
2557
            orderDetail.add(new BasicNameValuePair("zip", "1"));
2558
            orderDetail.add(new BasicNameValuePair("wifi", UtilityFunctions.checkWifi(getActivity()) + ""));
2559
            orderDetail.add(new BasicNameValuePair("imeinumber", UtilityFunctions.getImeiNumber(getActivity())));
2560
            orderDetail.add(new BasicNameValuePair("appversion", UtilityFunctions.getAppVersion(getActivity())));
2561
            PushRawHTML pm = new PushRawHTML();
2562
            pm.execute(orderDetail);
2563
        }
2564
    }
2565
 
2566
 
2567
    class PaytmWebViewClient extends WebViewClient {
2568
        @Override
2569
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2570
            super.onPageStarted(view, url, favicon);
2571
        }
2572
 
2573
        @Override
2574
        public void onPageFinished(WebView view, String url) {
2575
            super.onPageFinished(view, url);
2576
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
2577
                view.loadUrl("javascript:window.location='" + getPaytmUrl(url) + "';");
2578
            } else {
2579
                view.loadUrl("javascript:window.HTMLOUT.showHTML(document.getElementsByTagName('html')[0].innerHTML);");
2580
            }
2581
        }
2582
    }
2583
 
2584
    public String getPaytmUrl(String url) {
2585
        String returnUrl = null;
2586
        //Pattern p = Pattern.compile("[/]myorders/(\\d+)");
2587
        Pattern p = Pattern.compile(apiData.getString("paytm.myorders.pattern", "[/]myorders/(\\d+)"));
2588
        Matcher m = p.matcher(url);
2589
        if (m.find()) {
2590
            returnUrl = m.group(1);
2591
        }
2592
        System.out.println(apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2");
2593
        return apiData.getString("paytm.orderdetail.url", "https://paytm.com/shop/orderdetail/") + returnUrl + "?actions=1&channel=web&version=2";
2594
    }
2595
 
2596
 
2597
    public String getPaytmReferer(String url) {
2598
        String returnUrl = null;
2599
        Pattern p = Pattern.compile(apiData.getString("paytm.summary.pattern", "[/]summary/(\\d+)"));
2600
        //Pattern p = Pattern.compile("[/]summary/(\\d+)");
2601
        Matcher m = p.matcher(url);
2602
        if (m.find()) {
2603
            returnUrl = m.group(1);
2604
        }
2605
        System.out.println("In paytm Referer" + apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl);
2606
        return apiData.getString("paytm.myorders.url", "https://paytm.com/myorders/") + returnUrl;
2607
    }
2608
 
2609
 
2610
    class PaytmOrderURL extends AsyncTask<String, Integer, JSONObject> {
2611
 
2612
        @Override
2613
        protected void onPreExecute() {
2614
            super.onPreExecute();
2615
        }
2616
 
2617
        @Override
2618
        protected JSONObject doInBackground(String... arg0) {
2619
            HttpClient httpclient = new DefaultHttpClient();
2620
            try {
2621
                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");
2622
                HttpGet httppost = new HttpGet(fetchUrl);
2623
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2624
                HttpResponse response = httpclient.execute(httppost);
2625
                HttpEntity entity = response.getEntity();
2626
                int status = response.getStatusLine().getStatusCode();
2627
 
2628
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2629
                return jObjGmail;
2630
            } catch (JSONException e) {
2631
                return null;
2632
            } catch (ClientProtocolException e) {
2633
                return null;
2634
            } catch (IOException e) {
2635
                e.printStackTrace();
2636
                return null;
2637
            }
2638
        }
2639
 
2640
        @Override
2641
        protected void onPostExecute(JSONObject result) {
2642
            super.onPostExecute(result);
2643
            try {
2644
                if (result != null) {
2645
                    if (result.length() == 0) {
2646
                        userDataEditor.putString("paytmOrder", "false").commit();
2647
                    } else {
2648
                        JSONArray js = result.getJSONArray("result");
2649
                        if (js.length() != 0) {
2650
                            strPaytmUrls = new ArrayList<>();
2651
                            strPaytmReferer = new ArrayList<>();
2652
                            for (int i = 0; i < js.length(); i++) {
2653
                                JSONObject paytmURLRef = js.getJSONObject(i);
2654
                                String url = paytmURLRef.getString("url");
2655
                                String referer = paytmURLRef.getString("referer");
2656
                                strPaytmUrls.add(url);
2657
                                strPaytmReferer.add(referer);
2658
                            }
2659
                            paytmOrderTracking(strPaytmUrls.get(0), strPaytmReferer.get(0));
2660
                        } else {
2661
                            userDataEditor.putString("paytmOrder", "false").commit();
2662
                        }
2663
                    }
2664
                }
2665
            } catch (Exception e) {
2666
                e.printStackTrace();
2667
            }
2668
 
2669
        }
2670
    }
2671
 
2672
 
2673
    class PaytmOrderCreation extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2674
 
2675
        @Override
2676
        protected void onPreExecute() {
2677
            super.onPreExecute();
2678
        }
2679
 
2680
        @Override
2681
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
2682
 
2683
 
2684
            try {
2685
                HttpClient httpclient = new DefaultHttpClient();
2686
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
2687
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2688
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
2689
                HttpResponse response = httpclient.execute(httppost);
2690
                HttpEntity entity = response.getEntity();
2691
 
2692
                int status = response.getStatusLine().getStatusCode();
2693
 
2694
                if (status == 200) {
2695
                    NameValuePair y = orderDetail[0].get(2);
2696
                    int z = orderDetails.deleteRecord(y.getName(), new String[]{y.getValue()});
2697
                } else {
2698
                }
2699
                String getJSON = EntityUtils.toString(entity);
2700
                if (getJSON == null) {
2701
                    return null;
2702
                } else {
2703
                    JSONObject jObjGmail = new JSONObject(getJSON);
2704
                    return jObjGmail;
2705
                }
2706
            } catch (Exception e) {
2707
                return null;
2708
            }
2709
        }
2710
 
2711
 
2712
        @Override
2713
        protected void onPostExecute(JSONObject result) {
2714
            if (result == null) {
2715
 
2716
            } else {
2717
                userDataEditor.putString("paytmOrder", "true").commit();
2718
                userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
2719
                try {
2720
                    if (result.getString("message").equalsIgnoreCase("PROCESSED"))
2721
                        orderDetails.deleterecords();
2722
                } catch (Exception e) {
2723
                }
2724
            }
2725
            super.onPostExecute(result);
2726
        }
2727
    }
2728
 
2729
    public void paytmOrderTracking(List<String> paytmUrls, List<String> paytmReferers) {
2730
        for (int i = 1; i < paytmReferers.size(); i++) {
2731
            PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrls.get(i));
2732
            paytmWebView = new WebView(webView.getContext());
2733
            paytmWebView.setVisibility(View.GONE);
2734
            paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
2735
            paytmWebView.getSettings().setJavaScriptEnabled(true);
2736
            paytmWebView.loadUrl(paytmReferers.get(i));
2737
            paytmWebView.setWebViewClient(paytmOrderTrackingClient);
2738
        }
2739
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
2740
    }
2741
 
2742
    public void paytmOrderTracking(String paytmUrl, String paytmReferer) {
2743
        PaytmOrderTrackingClient paytmOrderTrackingClient = new PaytmOrderTrackingClient(paytmUrl);
2744
        paytmWebView = new WebView(webView.getContext());
2745
        paytmWebView.setVisibility(View.GONE);
2746
        paytmWebView.addJavascriptInterface(new paytmInterface(getActivity()), "HTMLOUT");
2747
        paytmWebView.getSettings().setJavaScriptEnabled(true);
2748
        paytmWebView.loadUrl(paytmReferer);
2749
        paytmWebView.setWebViewClient(paytmOrderTrackingClient);
2750
        userDataEditor.putLong("paytmNextFetchTime", System.currentTimeMillis() + 21600000).commit();
2751
    }
2752
 
2753
    class PaytmOrderTrackingClient extends WebViewClient {
2754
        String paytmUrlAfterReferer;
2755
 
2756
        public PaytmOrderTrackingClient(String paytmUrl) {
2757
            paytmUrlAfterReferer = paytmUrl;
2758
        }
2759
 
2760
        @Override
2761
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2762
            super.onPageStarted(view, url, favicon);
2763
        }
2764
 
2765
        @Override
2766
        public void onPageFinished(WebView view, String url) {
2767
            super.onPageFinished(view, url);
2768
            if (url.contains(apiData.getString("paytm.myorders.url", "paytm.com/myorders"))) {
2769
                view.loadUrl("javascript:window.location='" + paytmUrlAfterReferer + "';");
2770
            } else {
2771
                view.loadUrl("javascript:window.HTMLOUT.paytmTracking(document.getElementsByTagName('html')[0].innerHTML);");
2772
            }
2773
        }
2774
    }
2775
 
2776
    List<String> strPaytmUrls, strPaytmReferer;
2777
    int paytmCounter = 0;
2778
 
2779
    class PaytmPushTrackingUrls extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
2780
        @Override
2781
        protected void onPreExecute() {
2782
            super.onPreExecute();
2783
        }
2784
 
2785
        @Override
2786
        protected JSONObject doInBackground(List<NameValuePair>... pushOrder) {
2787
 
2788
            try {
2789
                HttpClient httpclient = new DefaultHttpClient();
2790
                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");
2791
                HttpPost httppost = new HttpPost(fetchUrl);
2792
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
2793
                httppost.setEntity(new UrlEncodedFormEntity(pushOrder[0]));
2794
                HttpResponse response = httpclient.execute(httppost);
2795
                HttpEntity entity = response.getEntity();
2796
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
2797
                return jObjGmail;
2798
            } catch (Exception e) {
2799
                return null;
2800
            }
2801
        }
2802
 
2803
        @Override
2804
        protected void onPostExecute(JSONObject result) {
2805
            super.onPostExecute(result);
2806
            try {
2807
                if (result == null) {
2808
 
2809
                } else if (result.getString("result").equalsIgnoreCase("PARSE_ERROR")) {
2810
                    userDataEditor.putBoolean("paytmLoggedIn", false).commit();
2811
                } else {
2812
                    paytmOrderTracking(strPaytmUrls, strPaytmReferer);
2813
                }
2814
            } catch (Exception e) {
2815
                e.printStackTrace();
2816
            }
2817
        }
2818
    }
2819
 
2820
    class paytmInterface {
2821
 
2822
        Context mContext;
2823
 
2824
        public paytmInterface(Context c) {
2825
            mContext = c;
2826
        }
2827
 
2828
        @JavascriptInterface
2829
        public void showHTML(String html) {
2830
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml", UtilityFunctions.compress(html)));
2831
            long x = orderDetails.insertOrderDetails(nameValuePairsRawHtml);
2832
            List<List<NameValuePair>> postDataNameValuePair = new ArrayList<List<NameValuePair>>();
2833
            postDataNameValuePair = orderDetails.readData1();
2834
            for (List<NameValuePair> orderDetail : postDataNameValuePair) {
2835
                orderDetail.add(new BasicNameValuePair("zip", "1"));
2836
                new PaytmOrderCreation().execute(orderDetail);
2837
            }
2838
        }
2839
 
2840
        @JavascriptInterface
2841
        public void paytmTracking(String html) {
2842
            try {
2843
                String url = strPaytmUrls.get(paytmCounter++);
2844
                List<NameValuePair> amazonOrderHistory = new ArrayList<NameValuePair>();
2845
                amazonOrderHistory.add(new BasicNameValuePair("url", url));
2846
                amazonOrderHistory.add(new BasicNameValuePair("html", UtilityFunctions.compress(html)));
2847
                amazonOrderHistory.add(new BasicNameValuePair("zip", "1"));
2848
                if (isInternetOn()) {
2849
                    new PaytmPushTrackingUrls().execute(amazonOrderHistory);
2850
                } else {
2851
 
2852
                }
2853
            } catch (Exception e) {
2854
                e.printStackTrace();
2855
            }
2856
 
2857
        }
2858
    }
2859
 
2860
    public void onShareClick(String url) {
2861
        try {
2862
            List<Intent> targetShareIntents = new ArrayList<Intent>();
2863
            Intent shareIntent = new Intent();
2864
            shareIntent.setAction(Intent.ACTION_SEND);
2865
            shareIntent.setType("text/plain");
2866
            List<ResolveInfo> resInfos = getActivity().getPackageManager().queryIntentActivities(shareIntent, 0);
2867
            if (!resInfos.isEmpty()) {
2868
                for (ResolveInfo resInfo : resInfos) {
2869
                    String packageName = resInfo.activityInfo.packageName;
2870
                    Intent intent = new Intent();
2871
                    intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
2872
                    intent.setAction(Intent.ACTION_SEND);
2873
                    intent.setType("text/plain");
2874
                    intent.putExtra(Intent.EXTRA_TEXT, Uri.parse(url).getQueryParameter("message"));
2875
                    intent.setPackage(packageName);
2876
                    targetShareIntents.add(intent);
2877
                }
2878
                if (!targetShareIntents.isEmpty()) {
2879
                    Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Choose app to share");
2880
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{}));
2881
                    startActivity(chooserIntent);
2882
                }
2883
            }
2884
        } catch (Exception e) {
2885
            e.printStackTrace();
2886
        }
2887
    }
2888
 
2889
    public void fetchAmazonOrder(String url) {
2890
        pd1 = new ProgressDialog(getActivity());
2891
        pd1.setTitle("Please wait");
2892
        pd1.setMessage("Placing your order...");
2893
        pd1.show();
2894
        webView.post(new Runnable() {
2895
            @Override
2896
            public void run() {
2897
                webView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2898
            }
2899
        });
2900
 
2901
    }
2902
 
2903
    @Override
2904
    public void onPause() {
2905
        super.onPause();
2906
        if (apiData.getString("deal.redirect", "false").equalsIgnoreCase("true")) {
2907
            if (webView != null) {
2908
                if (isPause) {
22830 rajender 2909
                    webView.loadUrl(apiData.getString("app.domain.profitmandi", "http://app.profitmandi.com"));
21480 rajender 2910
                    isPause = false;
2911
                }
2912
            }
2913
        }
2914
    }
2915
 
2916
    class FlipkartWebview extends WebViewClient {
2917
 
2918
        @Override
2919
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
2920
            super.onPageStarted(view, url, favicon);
2921
        }
2922
 
2923
        @Override
2924
        public void onPageFinished(WebView view, String url) {
2925
            super.onPageFinished(view, url);
2926
            if(url.contains(apiData.getString("flipkart.response.url","https://www.flipkart.com/rv/accounts"))) {
2927
                view.loadUrl("javascript:window.HTMLOUT.orderpage('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
2928
            }
2929
 
2930
        }
2931
    }
2932
}