Subversion Repositories SmartDukaan

Rev

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