Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
3
import android.app.Activity;
4
import android.app.AlertDialog;
5
import android.app.ProgressDialog;
6
import android.content.Context;
7
import android.content.DialogInterface;
8
import android.content.Intent;
9
import android.content.SharedPreferences;
10
import android.graphics.Bitmap;
11
import android.net.ConnectivityManager;
12
import android.net.Uri;
13
import android.os.AsyncTask;
14
import android.os.Bundle;
15
import android.app.Fragment;
14991 manas 16
import android.util.Base64;
14792 manas 17
import android.util.Log;
18
import android.view.KeyEvent;
19
import android.view.LayoutInflater;
20
import android.view.View;
21
import android.view.ViewGroup;
22
import android.webkit.CookieManager;
14991 manas 23
import android.webkit.CookieSyncManager;
14792 manas 24
import android.webkit.HttpAuthHandler;
14991 manas 25
import android.webkit.JavascriptInterface;
14792 manas 26
import android.webkit.WebView;
27
import android.webkit.WebViewClient;
14991 manas 28
import android.widget.Button;
29
import android.widget.Toast;
14792 manas 30
 
14991 manas 31
import com.facebook.Session;
14792 manas 32
import com.google.android.gms.analytics.GoogleAnalytics;
33
import com.google.android.gms.analytics.HitBuilders;
34
import com.google.android.gms.analytics.Tracker;
14991 manas 35
import com.google.android.gms.auth.GoogleAuthUtil;
36
import com.google.android.gms.common.ConnectionResult;
37
import com.google.android.gms.common.Scopes;
38
import com.google.android.gms.common.api.GoogleApiClient;
39
import com.google.android.gms.plus.Plus;
14792 manas 40
import com.mixpanel.android.mpmetrics.MixpanelAPI;
41
import com.saholic.profittill.Constants.ProfitTillConstants;
42
import com.saholic.profittill.R;
14991 manas 43
import com.saholic.profittill.Utils.UtilityFunctions;
14792 manas 44
import com.testin.agent.TestinAgent;
45
 
14991 manas 46
import org.apache.http.HttpEntity;
14792 manas 47
import org.apache.http.HttpResponse;
48
import org.apache.http.NameValuePair;
49
import org.apache.http.client.ClientProtocolException;
50
import org.apache.http.client.HttpClient;
51
import org.apache.http.client.entity.UrlEncodedFormEntity;
52
import org.apache.http.client.methods.HttpPost;
53
import org.apache.http.entity.StringEntity;
54
import org.apache.http.impl.client.DefaultHttpClient;
55
import org.apache.http.message.BasicNameValuePair;
14991 manas 56
import org.apache.http.util.EntityUtils;
14792 manas 57
import org.json.JSONArray;
58
import org.json.JSONException;
59
import org.json.JSONObject;
60
 
61
import java.io.IOException;
62
import java.text.SimpleDateFormat;
63
import java.util.ArrayList;
64
import java.util.Date;
14991 manas 65
import java.util.HashMap;
66
import java.util.List;
67
import java.util.Map;
14792 manas 68
 
69
public class MyWallet extends Fragment {
70
    WebView myWalletWebView;
71
    SharedPreferences userData;
72
    SharedPreferences apiData;
73
    SharedPreferences.Editor userDataEditor;
74
    SharedPreferences.Editor apiSettingsEditor;
14991 manas 75
    String saholicUrl;
76
    JSONObject jSaholic;
77
    JSONArray jsArraySaholic;
78
    int pageRedirect=0;
79
    boolean displayActionBar;
80
    ArrayList<NameValuePair> nameValuePairsRawHtml;
14792 manas 81
    public MyWallet() {
82
 
83
    }
84
 
85
 
86
    @Override
87
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
88
                             Bundle savedInstanceState) {
89
        // Inflate the layout for this fragment
90
        View rootView = inflater.inflate(R.layout.fragment_my_wallet, container, false);
91
        TestinAgent.init(getActivity());
92
        MixpanelAPI mixpanel = MixpanelAPI.getInstance(getActivity(), ProfitTillConstants.MIX_PANEL_TOKEN);
93
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
94
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
95
        userDataEditor = userData.edit();
14991 manas 96
 
14792 manas 97
        apiSettingsEditor = apiData.edit();
98
        TestinAgent.setUserInfo(userData.getString("id", ""));
99
        String url = apiData.getString("mywallet.url",null);
100
        String id = userData.getString("id",null);
101
        String landingUrl = url + "?user_id=" + id;
102
        JSONObject props = new JSONObject();
103
        try {
104
            mixpanel.identify(userData.getString("id",null));
105
            props.put("Screen", "My Wallet");
106
            mixpanel.track("My Wallet", props);
107
        } catch (JSONException e) {
108
            e.printStackTrace();
109
        }
110
        if(isInternetOn()) {
111
            WebClientClass webViewClient = new WebClientClass();
112
            myWalletWebView = (WebView) rootView.findViewById(R.id.myWalletWebView);
113
            myWalletWebView.setClickable(true);
114
            myWalletWebView.setFocusableInTouchMode(true);
115
            myWalletWebView.getSettings().setDomStorageEnabled(true);
116
            myWalletWebView.getSettings().setJavaScriptEnabled(true);
14991 manas 117
            myWalletWebView.addJavascriptInterface(new javascriptInterface(getActivity()), "HTMLOUT");
118
            if(Uri.parse(landingUrl).getHost().contains("api.profittill")) {
119
                userDataEditor.putString("saholic.data", UtilityFunctions.clearCookiesNew(landingUrl,getActivity())).commit();
120
            }
14792 manas 121
            myWalletWebView.loadUrl(landingUrl);
122
            myWalletWebView.setWebViewClient(webViewClient);
123
        }else{
124
            SearchFragment nextFrag= new SearchFragment();
125
            Bundle args = new Bundle();
126
            args.putString("finishingurl", landingUrl);
127
            args.putString("fragmentNumber", "17");
128
            nextFrag.setArguments(args);
129
            getActivity().getFragmentManager().beginTransaction()
130
                    .replace(R.id.frame_container, nextFrag)
131
                    .addToBackStack(null)
132
                    .commit();
133
        }
134
        return rootView;
135
 
136
    }
137
 
138
    @Override
139
    public void onViewCreated(View view, Bundle savedInstanceState) {
140
        super.onViewCreated(view, savedInstanceState);
141
    }
142
 
143
    JSONObject obj;
14991 manas 144
    public void getDisplayActionBar(String url) throws Exception{
145
        String snapdealConfirmation = apiData.getString("snapdeal.order.success.url",null);
146
        String flipkartConfirmation = apiData.getString("flipkart.order.success.url",null);
147
        String amazonConfirmation = apiData.getString("amazon.order.success.url",null);
148
        String amazonThankYouConfirmation = apiData.getString("amazon.order.success.thankyou.url",null);
149
        String saholicConfirmation = apiData.getString("saholic.order.success.url",null);
150
        if(url.contains(snapdealConfirmation) || url.contains(flipkartConfirmation) || url.contains(amazonConfirmation) || url.contains(amazonThankYouConfirmation) || url.contains(saholicConfirmation)){
151
            displayActionBar=true;
152
            String storeID = getStoreId(url);
153
            if(storeID==null){
154
                Log.e("Deals Page Activity", "Null value returned for storeID");
155
            }
156
            else{
157
                nameValuePairsRawHtml=new ArrayList<NameValuePair>();
158
                nameValuePairsRawHtml.add(new BasicNameValuePair("user_id",userData.getString("id",null)));
159
                nameValuePairsRawHtml.add(new BasicNameValuePair("store_id",storeID));
160
                nameValuePairsRawHtml.add(new BasicNameValuePair("order_url",url));
161
                nameValuePairsRawHtml.add(new BasicNameValuePair("sub_tag",userData.getString("subtag",null)));
162
            }
163
        }
164
        else{
165
            displayActionBar = false;
166
        }
167
        return;
168
    }
169
 
170
 
171
    public String getStoreId(String url){
172
        if(url.contains("snapdeal")){
173
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.snapdeal","0"));
174
            return apiData.getString("store.code.snapdeal",null);
175
        }
176
        else if(url.contains("flipkart")){
177
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.flipkart","0"));
178
            return apiData.getString("store.code.flipkart",null);
179
        }
180
        else if(url.contains("amazon")){
181
            pageRedirect=Integer.parseInt(apiData.getString("pageredirect.amazon","0"));
182
            return apiData.getString("store.code.amazon",null);
183
        }
184
        else if(url.contains("saholic")){
185
            return apiData.getString("store.code.spice",null);
186
        }
187
        return null;
188
    }
189
 
14792 manas 190
    public class WebClientClass extends WebViewClient {
191
        ProgressDialog pd = null;
192
 
193
        @Override
194
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
195
            super.onPageStarted(view, url, favicon);
14991 manas 196
            CookieSyncManager.createInstance(getActivity());
197
            CookieManager cookieManager = CookieManager.getInstance();
198
            cookieManager.setCookie(url, "token="+userData.getString("token",""));
199
          try {
200
                getDisplayActionBar(url);
201
            }catch (Exception e){
202
                e.printStackTrace();
203
            }
204
        }
205
        @Override
206
        public void onPageFinished(WebView view, String url) {
207
            super.onPageFinished(view, url);
14792 manas 208
            obj = new JSONObject();
209
            try {
14991 manas 210
                if(Uri.parse(url).getHost().contains("saholic") && apiData.getString("saholic.data","false").equalsIgnoreCase("true")){
211
                    saholicUrl=url;
212
                    view.loadUrl("javascript:window.HTMLOUT.saholicHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
213
                }else {
214
                    JSONObject j = new JSONObject();
215
                    JSONArray jsArray = new JSONArray();
216
                    j.put("url", url);
217
                    j.put("user_id", userData.getString("id", null));
218
                    j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
219
                    jsArray.put(j);
220
                    obj.put("pushdata", jsArray);
221
                    new pushData().execute();
222
                }
14792 manas 223
            } catch (JSONException e) {
224
                e.printStackTrace();
225
            }
226
 
14991 manas 227
            if(displayActionBar){
228
                view.loadUrl("javascript:window.HTMLOUT.flipkartHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
229
            }
14792 manas 230
            view.setOnKeyListener(new View.OnKeyListener()
231
            {
232
                @Override
233
                public boolean onKey(View v, int keyCode, KeyEvent event)
234
                {
235
                    if(event.getAction() == KeyEvent.ACTION_DOWN)
236
                    {
237
                        WebView webView = (WebView) v;
238
 
239
                        switch(keyCode)
240
                        {
241
                            case KeyEvent.KEYCODE_BACK:
242
                                if(webView.canGoBack())
243
                                {
244
                                    webView.goBack();
245
                                    return true;
246
                                }
247
                                else{
248
                                    Intent i = new Intent(getActivity(),MainActivity.class);
249
                                    i.putExtra("displayView","0");
250
                                    startActivity(i);
251
                                }
252
                                break;
253
                        }
254
                    }
255
 
256
                    return false;
257
                }
258
            });
14991 manas 259
 
14792 manas 260
        }
261
        @Override
262
        public void onReceivedHttpAuthRequest(WebView view,
263
                                              HttpAuthHandler handler, String host, String realm) {
264
 
265
            handler.proceed("dtr", "dtr18Feb2015");
266
 
267
        }
268
 
269
        @Override
270
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
271
            super.onReceivedError(view, errorCode, description, failingUrl);
272
            SearchFragment nextFrag= new SearchFragment();
273
            Bundle args = new Bundle();
274
            args.putString("finishingurl",failingUrl);
275
            nextFrag.setArguments(args);
276
            getActivity().getFragmentManager().beginTransaction()
277
                    .replace(R.id.frame_container, nextFrag)
278
                    .addToBackStack(null)
279
                    .commit();
280
        }
281
 
14991 manas 282
      /*  @Override
283
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
284
            Map<String, String> headers1 = new HashMap<>();
285
            headers1.put("token", userData.getString("token",""));
286
            Log.d("Token","Token " + userData.getString("token",""));
287
            view.loadUrl(url,headers1);
288
            return true;
289
        }*/
14792 manas 290
    }
291
 
292
    @Override
293
    public void onResume() {
294
        super.onResume();
295
        getView().setFocusableInTouchMode(true);
296
        getView().requestFocus();
297
        getView().setOnKeyListener(new View.OnKeyListener() {
298
            @Override
299
            public boolean onKey(View v, int keyCode, KeyEvent event) {
300
 
14991 manas 301
                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
14792 manas 302
                    Intent i = new Intent(getActivity(), MainActivity.class);
303
                    i.putExtra("displayView", "0");
304
                    startActivity(i);
305
                    return true;
306
 
307
                }
308
                return false;
309
            }
310
        });
311
    }
312
 
313
 
314
    class pushData extends AsyncTask<String, Integer, String> {
315
 
316
        @Override
317
        protected void onPreExecute() {
318
            super.onPreExecute();
319
            Log.e("Push Service", "Pre execute");
320
        }
321
 
322
        @Override
323
        protected String doInBackground(String... arg0) {
324
            HttpClient httpclient = new DefaultHttpClient();
325
            try {
326
 
327
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
328
                nameValuePairs.add(new BasicNameValuePair("pushdata",obj.toString()));
329
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
330
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
331
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
332
                System.out.println(obj.toString());
333
                StringEntity se = new StringEntity(obj.toString());
334
                HttpResponse response = httpclient.execute(httppost);
335
                int status = response.getStatusLine().getStatusCode();
336
 
337
                if(status == 200){
338
                    System.out.println("ResponseCode of record: "+ status + " is " + status);
339
                    return "success";
340
                } else {
341
                    Log.d("ResponseCode",status+"");
342
                    System.out.println(" NOT Transfered");
343
                    return "failure";
344
                }
345
 
346
            } catch (ClientProtocolException e) {
347
                return "failure";
348
            } catch (IOException e) {
349
                return "failure";
350
            }
351
        }
352
 
353
        @Override
354
        protected void onPostExecute(String result) {
355
            super.onPostExecute(result);
356
 
357
        }
358
    }
359
 
360
    public final boolean isInternetOn() {
361
        ConnectivityManager connec =
362
                (ConnectivityManager)getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
363
 
364
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
365
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
366
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
367
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
368
 
369
            return true;
370
 
371
        } else if (
372
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
373
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
374
            return false;
375
        }
376
        return false;
377
    }
14991 manas 378
    class checkGateWayProblem extends AsyncTask<String, Integer, String> {
14792 manas 379
 
14991 manas 380
        // JSONObject jobj1;
14792 manas 381
 
14991 manas 382
        @Override
383
        protected void onPreExecute() {
384
            super.onPreExecute();
385
        }
386
 
387
        @Override
388
        protected String doInBackground(String... arg0) {
389
            HttpClient httpclient = new DefaultHttpClient();
390
            try {
391
                //jobj1 = new JSONObject();
392
                HttpPost httppost = new HttpPost(arg0[0]);
393
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
394
                httppost.setHeader("Authorization", basicAuth);
395
                HttpResponse response = httpclient.execute(httppost);
396
                int status = response.getStatusLine().getStatusCode();
397
 
398
                jsArraySaholic = new JSONArray();
399
                jSaholic.put("url", arg0[0]);
400
 
401
                jSaholic.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
402
                jSaholic.put("httpstatus", status);
403
                jSaholic.put("cookies", CookieManager.getInstance().getCookie(arg0[0]));
404
                jsArraySaholic.put(jSaholic);
405
                obj.put("pushdata", jsArraySaholic);
406
                Log.d("status " ,"Status in checkGatewayProbelm " + status);
407
                if(status == 200){
408
                    return "success";
409
                } else {
410
                    return "failure";
411
                }
412
 
413
            } catch (ClientProtocolException e) {
414
                return "failure";
415
            } catch (IOException e) {
416
                return "failure";
417
            }catch (JSONException e){
418
                return "failure";
419
            }
420
        }
421
 
422
        @Override
423
        protected void onPostExecute(String result) {
424
            super.onPostExecute(result);
425
            new pushData1().execute(obj);
426
        }
427
    }
428
    class javascriptInterface {
429
 
430
        Context mContext;
431
 
432
        /**
433
         * Instantiate the interface and set the context
434
         */
435
        public javascriptInterface(Context c) {
436
            mContext = c;
437
        }
438
 
439
        @JavascriptInterface
440
        public void saholicHTML(String html) {
441
 
442
            try {
443
                obj = new JSONObject();
444
                jSaholic = new JSONObject();
445
                jSaholic.put("html", UtilityFunctions.compress(html));
446
                jSaholic.put("zip", "1");
447
                jSaholic.put("user_id", userData.getString("id", null));
448
            } catch (Exception e) {
449
 
450
            }
451
            new checkGateWayProblem().execute(saholicUrl);
452
        }
453
        @JavascriptInterface
454
        public void flipkartHTML(String html) {
455
            nameValuePairsRawHtml.add(new BasicNameValuePair("rawhtml",UtilityFunctions.compress(html)));
456
            nameValuePairsRawHtml.add(new BasicNameValuePair("zip","1"));
457
            new loadData().execute(nameValuePairsRawHtml);
458
        }
459
    }
460
 
461
    class pushData1 extends AsyncTask<JSONObject, Integer, String> {
462
 
463
        @Override
464
        protected void onPreExecute() {
465
            super.onPreExecute();
466
        }
467
 
468
        @Override
469
        protected String doInBackground(JSONObject... arg0) {
470
            HttpClient httpclient = new DefaultHttpClient();
471
            try {
472
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
473
                nameValuePairs.add(new BasicNameValuePair("pushdata",arg0[0].toString()));
474
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
475
                final String basicAuth = "Basic " + Base64.encodeToString("dtr:dtr18Feb2015".getBytes(), Base64.NO_WRAP);
476
                httppost.setHeader("Authorization", basicAuth);
477
 
478
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
479
                System.out.println("JSON object in push Data 1 " + arg0[0].toString());
480
                StringEntity se = new StringEntity(arg0[0].toString());
481
                HttpResponse response = httpclient.execute(httppost);
482
                int status = response.getStatusLine().getStatusCode();
483
 
484
                if(status == 200){
485
                    return "success";
486
                } else {
487
                    return "failure";
488
                }
489
 
490
            } catch (ClientProtocolException e) {
491
                return "failure";
492
            } catch (IOException e) {
493
                return "failure";
494
            }
495
        }
496
 
497
        @Override
498
        protected void onPostExecute(String result) {
499
            super.onPostExecute(result);
500
        }
501
    }
502
    class loadData extends AsyncTask<List<NameValuePair>, Integer, JSONObject> {
503
 
504
        @Override
505
        protected void onPreExecute() {
506
            super.onPreExecute();
507
        }
508
 
509
        @Override
510
        protected JSONObject doInBackground(List<NameValuePair>... orderDetail) {
511
 
512
 
513
            try {
514
                HttpClient httpclient = new DefaultHttpClient();
515
                HttpPost httppost = new HttpPost(apiData.getString("orderpagehtml.push.api", null));
516
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
517
 
518
                httppost.setEntity(new UrlEncodedFormEntity(orderDetail[0]));
519
                HttpResponse response = httpclient.execute(httppost);
520
                HttpEntity entity = response.getEntity();
521
                String getJSON = EntityUtils.toString(entity);
522
                if(getJSON==null){
523
                    return null;
524
                }else {
525
                    JSONObject jObjGmail = new JSONObject(getJSON);
526
                    return jObjGmail;
527
                }
528
            } catch (Exception e) {
529
                return null;
530
            }
531
        }
532
 
533
 
534
        @Override
535
        protected void onPostExecute(JSONObject result) {
536
            super.onPostExecute(result);
537
        }
538
    }
539
 
14792 manas 540
}