Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

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