Subversion Repositories SmartDukaan

Rev

Rev 14991 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
3
import android.app.AlertDialog;
4
import android.app.ProgressDialog;
5
import android.net.ConnectivityManager;
6
import android.net.Uri;
7
import android.os.AsyncTask;
8
import android.content.Context;
9
import android.content.DialogInterface;
10
import android.content.Intent;
11
import android.content.IntentSender;
12
import android.content.SharedPreferences;
13
import android.content.pm.PackageInfo;
14
import android.content.pm.PackageManager;
15
import android.content.res.Configuration;
16
import android.support.v7.app.ActionBarActivity;
17
import android.os.Bundle;
18
import android.telephony.TelephonyManager;
19
import android.text.TextUtils;
20
import android.util.Log;
21
import android.view.Menu;
22
import android.view.MenuItem;
23
import android.view.View;
24
import android.widget.EditText;
25
import android.widget.ImageButton;
26
import android.widget.TextView;
27
import android.widget.Toast;
28
 
29
import com.facebook.Request;
30
import com.facebook.RequestAsyncTask;
31
import com.facebook.Response;
32
import com.facebook.Session;
33
import com.facebook.SessionState;
34
import com.facebook.UiLifecycleHelper;
35
import com.facebook.model.GraphUser;
36
import com.facebook.widget.LoginButton;
37
import com.google.android.gms.analytics.HitBuilders;
38
import com.google.android.gms.analytics.Tracker;
39
import com.google.android.gms.auth.GoogleAuthException;
40
import com.google.android.gms.auth.GoogleAuthUtil;
41
import com.google.android.gms.auth.UserRecoverableAuthException;
42
import com.google.android.gms.common.ConnectionResult;
43
import com.google.android.gms.common.GooglePlayServicesUtil;
44
import com.google.android.gms.common.Scopes;
45
import com.google.android.gms.common.api.GoogleApiClient;
46
import com.google.android.gms.common.api.ResultCallback;
47
import com.google.android.gms.common.api.Status;
48
import com.google.android.gms.gcm.GoogleCloudMessaging;
49
import com.google.android.gms.plus.Plus;
50
import com.google.android.gms.plus.model.people.Person;
51
import com.mixpanel.android.mpmetrics.MixpanelAPI;
52
import com.saholic.profittill.Constants.ProfitTillConstants;
53
import com.saholic.profittill.R;
54
import com.testin.agent.TestinAgent;
55
 
56
import org.apache.http.HttpEntity;
57
import org.apache.http.HttpResponse;
58
import org.apache.http.NameValuePair;
59
import org.apache.http.client.HttpClient;
60
import org.apache.http.client.entity.UrlEncodedFormEntity;
61
import org.apache.http.client.methods.HttpPost;
62
import org.apache.http.impl.client.DefaultHttpClient;
63
import org.apache.http.message.BasicNameValuePair;
64
import org.apache.http.util.EntityUtils;
65
import org.json.JSONException;
66
import org.json.JSONObject;
67
 
68
import java.io.IOException;
69
import java.util.ArrayList;
70
import java.util.Arrays;
71
import java.util.Date;
72
import java.util.StringTokenizer;
73
import java.util.regex.Matcher;
74
import java.util.regex.Pattern;
75
 
76
public class LoginActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{
77
    public GoogleApiClient mGoogleApiClient;
78
    String scope = "oauth2:" + Scopes.PLUS_LOGIN;
79
    private UiLifecycleHelper uiHelper;
80
    private boolean mIntentInProgress;
81
    private boolean mSignInClicked;
82
    private ConnectionResult mConnectionResult;
83
    private static final int RC_SIGN_IN = 0;
84
    public static final int REQUEST_CODE_TOKEN_AUTH =1;
85
    ArrayList<NameValuePair> nameValuePairs;
86
    ArrayList<NameValuePair> nameValuePairsGcm;
87
    SharedPreferences userData;
88
    SharedPreferences apiData;
89
    SharedPreferences.Editor inviteDataEditor;
90
    SharedPreferences inviteData;
91
    boolean FLAG=false;
92
    SharedPreferences.Editor userDataEditor;
93
    SharedPreferences.Editor apiSettingsEditor;
94
    SharedPreferences inviteD;
95
    SharedPreferences.Editor inviteDEditor;
96
    LoginButton fb_button;
97
    ImageButton facebookLogin,googlelogin;
98
    String mobile;
99
/*    String referrer;*/
100
    MixpanelAPI mixpanel;
101
    GoogleCloudMessaging gcm;
102
    Context context;
103
    String regId;
104
/*    EditText referralCode;*/
105
/*
106
    String  invitationCode;
107
    final ArrayList<String> invitationCodeList = new ArrayList<String>();
108
*/
109
    public static final String REG_ID = "regId";
110
    private static final String APP_VERSION = "appVersion";
111
   /* TextView inviteError;
112
    TextView inviteNumber;
113
    TextView inviteMessage,inviteMessage1;*/
114
 
115
    static final String TAG = "Register Activity";
116
    @Override
117
 
118
    protected void onCreate(Bundle savedInstanceState) {
119
 
120
        context = getApplicationContext();
121
        mixpanel= MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
122
        super.onCreate(savedInstanceState);
123
        uiHelper = new UiLifecycleHelper(this, statusCallback);
124
        uiHelper.onCreate(savedInstanceState);
125
        setContentView(R.layout.activity_login);
126
        TestinAgent.init(this);
127
        getSupportActionBar().hide();
128
        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
129
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
130
        userDataEditor = userData.edit();
131
        apiSettingsEditor = apiData.edit();
132
        inviteData = context.getSharedPreferences("Invite_Data", Context.MODE_PRIVATE);
133
        inviteDataEditor = inviteData.edit();
134
        inviteD = getApplicationContext().getSharedPreferences("Invite", MODE_PRIVATE);
135
        inviteDEditor = inviteD.edit();
136
        facebookLogin =(ImageButton)findViewById(R.id.facebook_login_button);
137
        googlelogin =(ImageButton)findViewById(R.id.google_login_button);
138
 
139
        if(getIntent().getAction()=="Login"){
140
            nameValuePairsGcm = new ArrayList<>();
141
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
142
            nameValuePairsGcm.add(new BasicNameValuePair("result","login"));
143
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",new Date()+""));
144
            getIntent().getExtras().remove("cid");
145
            new NotificationOpenedData().execute(nameValuePairsGcm);
146
        }
147
        /*referralCode = (EditText)findViewById(R.id.referralCode1);*/
148
       /* inviteError=(TextView)findViewById(R.id.inviteErrorLogin);
149
        inviteNumber=(TextView)findViewById(R.id.inviteNumberLogin);
150
        inviteMessage=(TextView)findViewById(R.id.inviteMessageLogin);
151
        inviteMessage1=(TextView)findViewById(R.id.inviteMessage1Login);*/
152
/*
153
        invitationCode=apiData.getString("profitmandi.invitation.code","");
154
*/
155
/*
156
        Log.d("Invite Code Boolean","Boolean" +inviteData.getBoolean("inviteCodeRequired",true));
157
        if(!(inviteData.getBoolean("inviteCodeRequired",true))) {
158
               referralCode.setVisibility(View.GONE);
159
        }else{
160
            inviteMessage1.setVisibility(View.VISIBLE);
161
            inviteMessage.setVisibility(View.VISIBLE);
162
            inviteNumber.setVisibility(View.VISIBLE);
163
            inviteMessage.setText(apiData.getString("referralinvite.text","Invite Code Required."));
164
            inviteMessage1.setText(apiData.getString("referralinvite.call","Call to get one"));
165
            inviteNumber.setText(apiData.getString("contactus.number", ""));
166
            inviteNumber.setOnClickListener(new View.OnClickListener() {
167
                @Override
168
                public void onClick(View v) {
169
                    Intent callIntent = new Intent(Intent.ACTION_CALL);
170
                    callIntent.setData(Uri.parse("tel:0" + apiData.getString("contactus.number", "")));
171
                    startActivity(callIntent);
172
                }
173
            });
174
        }
175
        StringTokenizer st = new StringTokenizer(invitationCode,"|");
176
        while(st.hasMoreTokens()){
177
            invitationCodeList.add( st.nextToken());
178
        }
179
*/
180
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
181
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
182
        t.setScreenName("Login Screen");
183
        t.send(new HitBuilders.ScreenViewBuilder().build());
184
 
185
        MixpanelAPI mixpanel = MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
186
        JSONObject props = new JSONObject();
187
        try {
188
            props.put("Screen", "Login Screen");
189
            mixpanel.track("Login Page", props);
190
        } catch (JSONException e) {
191
           /* TestinAgent.uploadException(this,"Exception in Resolve sign in error", e.printStackTrace());*/
192
            e.printStackTrace();
193
        }
194
        if (Session.getActiveSession() != null) {
195
            Session.getActiveSession().closeAndClearTokenInformation();
196
        }
197
 
198
 
199
        Session.setActiveSession(null);
200
 
201
        fb_button=(LoginButton)findViewById(R.id.facebook_class_login_button);
202
 
203
        fb_button.setReadPermissions(Arrays.asList("email"));
204
 
205
        facebookLogin.setOnClickListener(new View.OnClickListener() {
206
            @Override
207
            public void onClick(View v) {
208
                if(isInternetOn()) {
209
                    if (TextUtils.isEmpty(regId)) {
210
                        regId = registerGCM();
211
                    } else {
212
 
213
                    }
214
                    fb_button.performClick();
215
                    /*if(!(inviteData.getBoolean("inviteCodeRequired",true))) {
216
                        fb_button.performClick();
217
                    }else {
218
                        if (apiData.getString("profitmandi.invitation", "false").equalsIgnoreCase("true")) {
219
                            if (inviteD.getString("invite_added", "").equalsIgnoreCase("added")) {
220
                                fb_button.performClick();
221
                            } else {
222
                                String referalCode1 = referralCode.getText().toString();
223
                                if (referalCode1.isEmpty()) {
224
                                    if (Session.getActiveSession() != null) {
225
                                        Session.getActiveSession().closeAndClearTokenInformation();
226
                                    }
227
                                    Session.setActiveSession(null);
228
                                inviteError.setVisibility(View.VISIBLE);
229
                                inviteError.setText(apiData.getString("invite.message", ""));
230
 
231
                                } else {
232
                                    for (String s : invitationCodeList) {
233
                                        if (referalCode1.equalsIgnoreCase(s)) {
234
                                            FLAG = true;
235
                                            break;
236
                                        }
237
                                    }
238
                                    if (FLAG) {
239
                                        if (Session.getActiveSession() != null) {
240
                                            Session.getActiveSession().closeAndClearTokenInformation();
241
                                        }
242
                                        Session.setActiveSession(null);
243
                                        fb_button.performClick();
244
                                    } else {
245
                                        if (Session.getActiveSession() != null) {
246
                                            Session.getActiveSession().closeAndClearTokenInformation();
247
                                        }
248
                                        Session.setActiveSession(null);
249
                                    inviteError.setVisibility(View.VISIBLE);
250
                                    inviteError.setText(apiData.getString("invite.error.message", ""));
251
                                   }
252
                                }
253
                            }
254
                        } else if (apiData.getString("profitmandi.invitation", "").equalsIgnoreCase("false")) {
255
                            fb_button.performClick();
256
                        } else {
257
                        }
258
                    }*/
259
                }
260
                else{
261
                    Toast.makeText(getApplicationContext(),"Sorry your internet is not working. Please check again",Toast.LENGTH_SHORT).show();
262
                }
263
 
264
            }
265
        });
266
        googlelogin.setOnClickListener(new View.OnClickListener() {
267
            @Override
268
            public void onClick(View v) {
269
                if(isInternetOn()) {
270
                    if (TextUtils.isEmpty(regId)) {
271
                        regId = registerGCM();
272
                        Log.d("RegisterActivity", "GCM RegId: " + regId);
273
                    } else {
274
                    }
275
                    signInWithGplus();
276
                    /*if(!(inviteData.getBoolean("inviteCodeRequired",true))) {
277
                        signInWithGplus();
278
                    }else {
279
                        if (apiData.getString("profitmandi.invitation", "false").equalsIgnoreCase("true")) {
280
                            if (inviteD.getString("invite_added", "").equalsIgnoreCase("added")) {
281
                                signInWithGplus();
282
                            } else {
283
                                String referalCode1 = referralCode.getText().toString();
284
                                if (referalCode1.isEmpty()) {
285
                                inviteError.setVisibility(View.VISIBLE);
286
                                inviteError.setText(apiData.getString("invite.error.message", ""));
287
                                } else {
288
                                    for (String s : invitationCodeList) {
289
                                        if (referalCode1.equalsIgnoreCase(s)) {
290
                                            FLAG = true;
291
                                            break;
292
                                        }
293
                                    }
294
                                    if (FLAG) {
295
                                        signInWithGplus();
296
                                    } else {
297
                                    inviteError.setVisibility(View.VISIBLE);
298
                                    inviteError.setText(apiData.getString("invite.error.message", ""));
299
 
300
                                    }
301
                                }
302
                            }
303
                        } else if (apiData.getString("profitmandi.invitation", "").equalsIgnoreCase("false")) {
304
                            signInWithGplus();
305
                        }
306
                    }*/
307
                }
308
                else{
309
                    Toast.makeText(getApplicationContext(),"Sorry your internet is not working. Please check again",Toast.LENGTH_SHORT).show();
310
                }
311
            }
312
        });
313
 
314
 
315
        mGoogleApiClient = new GoogleApiClient.Builder(this)
316
                .addConnectionCallbacks(this)
317
                .addOnConnectionFailedListener(this).addApi(Plus.API)
318
                .addScope(Plus.SCOPE_PLUS_LOGIN).build();
319
    }
320
    //
321
    /**
322
     * Sign-in into google
323
     * */
324
    private void signInWithGplus() {
325
        if (!mGoogleApiClient.isConnecting()) {
326
            mSignInClicked = true;
327
            resolveSignInError();
328
        }
329
    }
330
    private Session.StatusCallback statusCallback = new Session.StatusCallback() {
331
        @Override
332
        public void call(final Session session, SessionState state,
333
                         Exception exception) {
334
            if (state.isOpened()) {
335
                nameValuePairs = new ArrayList<NameValuePair>();
336
                nameValuePairs.add(new BasicNameValuePair("type","facebook"));
337
                nameValuePairs.add(new BasicNameValuePair("token",session.getAccessToken()+""));
338
                Request mRequest = Request.newMeRequest(session,new Request.GraphUserCallback() {
339
                    @Override
340
                    public void onCompleted(GraphUser graphUser, Response response) {
341
                        if(response.getError()==null)
342
                        {
343
                            nameValuePairs.add(new BasicNameValuePair("id",graphUser.getId()));
344
                            nameValuePairs.add(new BasicNameValuePair("name",graphUser.getName()));
345
                            //nameValuePairs.add(new BasicNameValuePair("mobile_number",mobile));
346
                            // nameValuePairs.add(new BasicNameValuePair("referrer",referalCode.getText().toString()));
347
                            Log.d("Invite Code Boolean","Boolean" +inviteData.getBoolean("inviteCodeRequired",true));
348
                            if(!(inviteData.getBoolean("inviteCodeRequired",true))) {
349
                                nameValuePairs.add(new BasicNameValuePair("utm_source",inviteData.getString("utm_source","")));
350
                                nameValuePairs.add(new BasicNameValuePair("utm_medium",inviteData.getString("utm_medium","")));
351
                                nameValuePairs.add(new BasicNameValuePair("utm_content",inviteData.getString("utm_content","")));
352
                                nameValuePairs.add(new BasicNameValuePair("utm_term",inviteData.getString("utm_term","")));
353
                                nameValuePairs.add(new BasicNameValuePair("utm_campaign",inviteData.getString("utm_campaign","")));
354
 
355
                            }/*else{
356
                                if (inviteD.getString("invite_added", "").equalsIgnoreCase("added")) {
357
                                    nameValuePairs.add(new BasicNameValuePair("referrer",inviteD.getString("ref","")));
358
                                }else {
359
                                    nameValuePairs.add(new BasicNameValuePair("referrer", referralCode.getText().toString()));
360
                                    inviteDEditor.putString("ref", referralCode.getText().toString());
361
                                    inviteDEditor.commit();
362
                                }
363
                            }*/
364
                            nameValuePairs.add(new BasicNameValuePair("profile_pic","http://graph.facebook.com/"+graphUser.getId()+"/picture"));
365
 
366
                            try{
367
                                if(graphUser.getProperty("email").toString()==null){
368
                                    //Toast.makeText(getApplicationContext(),"In if",Toast.LENGTH_SHORT).show();
369
                                    //Toast.makeText(getApplicationContext(),"User Name " + graphUser.toString(),Toast.LENGTH_SHORT).show();
370
                                }
371
                                else{
372
                                    nameValuePairs.add(new BasicNameValuePair("email",graphUser.getProperty("email").toString()));
373
                                    nameValuePairs.add(new BasicNameValuePair("gender",graphUser.getProperty("gender").toString()));
374
                                    userDataEditor.putString("email",graphUser.getProperty("email").toString());
375
                                    userDataEditor.commit();
376
                                    // Toast.makeText(getApplicationContext(),"User Name " + graphUser.getName(),Toast.LENGTH_SHORT).show();
377
                                    // Toast.makeText(getApplicationContext(),"Email " + graphUser.getProperty("email").toString(),Toast.LENGTH_SHORT).show();
378
                                    new loadData().execute();
379
                                }
380
                            }
381
                            catch (Exception e){
382
                                AlertDialog.Builder alert = new AlertDialog.Builder(LoginActivity.this);
383
                                alert.setMessage("Enter Email Id to complete registration: ");
384
                                final EditText input = new EditText(LoginActivity.this);
385
                                alert.setView(input);
386
                                alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
387
                                    public void onClick(DialogInterface dialog, int whichButton) {
388
                                        String value = input.getText().toString();
389
                                        Pattern pattern;
390
                                        Matcher matcher;
391
                                        pattern = Pattern.compile(ProfitTillConstants.EMAIL_PATTERN);
392
                                        matcher = pattern.matcher(value);
393
                                        if( matcher.matches()){
394
                                            nameValuePairs.add(new BasicNameValuePair("email",value.toString()));
395
                                            userDataEditor.putString("email",value.toString());
396
                                            userDataEditor.commit();
397
                                            new loadData().execute();
398
                                        }
399
                                        else{
400
                                            Toast.makeText(getApplicationContext(),"Please enter a valid Email id",Toast.LENGTH_SHORT ).show();
401
                                            if (Session.getActiveSession() != null) {
402
                                                Session.getActiveSession().closeAndClearTokenInformation();
403
                                            }
404
                                            Session.setActiveSession(null);
405
                                        }
406
                                    }
407
                                });
408
                                alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
409
                                    public void onClick(DialogInterface dialog, int whichButton) {
410
                                        // Canceled.
411
                                        if (Session.getActiveSession() != null) {
412
                                            Session.getActiveSession().closeAndClearTokenInformation();
413
                                        }
414
                                        Session.setActiveSession(null);
415
                                    }
416
                                });
417
 
418
                                alert.show();
419
                            }
420
 
421
 
422
                        }
423
                        else{
424
                            Log.e("Login Activity Facebook",response.getError()+"");
425
                        }
426
                    }
427
                });
428
                RequestAsyncTask asyncTask=mRequest.executeAsync();
429
            } else if (state.isClosed()) {
430
            }
431
        }
432
    };
433
    @Override
434
    public boolean onCreateOptionsMenu(Menu menu) {
435
        // Inflate the menu; this adds items to the action bar if it is present.
436
        getMenuInflater().inflate(R.menu.menu_login, menu);
437
        return true;
438
    }
439
 
440
    @Override
441
    public boolean onOptionsItemSelected(MenuItem item) {
442
        // Handle action bar item clicks here. The action bar will
443
        // automatically handle clicks on the Home/Up button, so long
444
        // as you specify a parent activity in AndroidManifest.xml.
445
        int id = item.getItemId();
446
 
447
        //noinspection SimplifiableIfStatement
448
        if (id == R.id.action_settings) {
449
            return true;
450
        }
451
 
452
        return super.onOptionsItemSelected(item);
453
    }
454
 
455
    /**
456
     * Method to resolve any signin errors
457
     * */
458
    private void resolveSignInError() {
459
        if (mConnectionResult.hasResolution()) {
460
            try {
461
                mIntentInProgress = true;
462
                mConnectionResult.startResolutionForResult(this, RC_SIGN_IN);
463
            } catch (IntentSender.SendIntentException e) {
464
                e.printStackTrace();
465
                TestinAgent.uploadException(this,"Exception in Resolve sign in error", new Exception());
466
                mIntentInProgress = false;
467
                //mGoogleApiClient.connect();
468
                revokeGplusAccess();
469
            }
470
        }
471
    }
472
 
473
    /**
474
     * Revoking access from google
475
     * */
476
    private void revokeGplusAccess() {
477
        if (mGoogleApiClient.isConnected()) {
478
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
479
            Plus.AccountApi.revokeAccessAndDisconnect(mGoogleApiClient)
480
                    .setResultCallback(new ResultCallback<Status>() {
481
                        @Override
482
                        public void onResult(Status arg0) {
483
                            Log.e(TAG, "User access revoked!");
484
                            mGoogleApiClient.connect();
485
                            //updateUI(false);
486
                        }
487
 
488
                    });
489
        }
490
    }
491
 
492
    @Override
493
    public void onConfigurationChanged(Configuration newConfig) {
494
        super.onConfigurationChanged(newConfig);
495
    }
496
 
497
    protected void onStart() {
498
        super.onStart();
499
        mGoogleApiClient.connect();
500
    }
501
 
502
    protected void onStop() {
503
        super.onStop();
504
        if (mGoogleApiClient.isConnected()) {
505
            mGoogleApiClient.disconnect();
506
        }
507
    }
508
 
509
    @Override
510
    public void onConnectionFailed(ConnectionResult result) {
511
        if (!result.hasResolution()) {
512
            GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this,0).show();
513
            return;
514
        }
515
 
516
        if (!mIntentInProgress) {
517
            mConnectionResult = result;
518
            if (mSignInClicked) {
519
                resolveSignInError();
520
            }
521
        }
522
    }
523
 
524
    @Override
525
    protected void onActivityResult(int requestCode, int responseCode,
526
                                    Intent intent) {
527
        if (requestCode == RC_SIGN_IN) {
528
            if (responseCode != RESULT_OK) {
529
                mSignInClicked = false;
530
            }
531
 
532
            mIntentInProgress = false;
533
 
534
            if (!mGoogleApiClient.isConnecting()) {
535
                mGoogleApiClient.connect();
536
            }
537
        }
538
        else if (requestCode==REQUEST_CODE_TOKEN_AUTH &&responseCode==RESULT_OK){
539
            getAccessToken();
540
        }
541
        uiHelper.onActivityResult(requestCode, responseCode, intent);
542
    }
543
 
544
    private void getAccessToken() {
545
        new getToken().execute();
546
 
547
    }
548
 
549
    @Override
550
    public void onConnectionSuspended(int arg0) {
551
        mGoogleApiClient.connect();
552
    }
553
    @Override
554
    public void onConnected(Bundle arg0) {
555
        mSignInClicked = false;
556
        getAccessToken();
557
 
558
    }
559
    private void showProgressDialog()
560
    {
561
        pDlg = new ProgressDialog(LoginActivity.this);
562
        pDlg.setMessage("Logging In");
563
        pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
564
        pDlg.setCancelable(false);
565
        pDlg.show();
566
 
567
    }
568
    private ProgressDialog pDlg = null;
569
    class getToken extends AsyncTask<String,Integer,String> {
570
 
571
        @Override
572
        protected void onPreExecute() {
573
            showProgressDialog();
574
        }
575
        @   Override
576
        protected String doInBackground(String... params) {
577
            String id=null;
578
 
579
 
580
            String token = null;
581
            Bundle appActivities = new Bundle();
582
            appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES,"MainActivity");
583
            try {
584
                token = GoogleAuthUtil.getToken(
585
                        LoginActivity.this,
586
                        Plus.AccountApi.getAccountName(mGoogleApiClient),
587
                        scope,appActivities);
588
                if (Plus.PeopleApi.getCurrentPerson(mGoogleApiClient) != null) {
589
                    Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient);
590
                    String imageUrl = currentPerson.getImage().getUrl();
591
                    int i = currentPerson.getGender();
592
                    String gender;
593
                    if(i==0){
594
                        gender="male";
595
                    }
596
                    else if (i==1){
597
                        gender="female";
598
                    }
599
                    else if(i==2) {
600
                        gender = "otherwise";
601
                    }
602
                    else {
603
                        gender = "not available";
604
                    }
605
                    nameValuePairs = new ArrayList<NameValuePair>();
606
                    nameValuePairs.add(new BasicNameValuePair("type","google"));
607
                    nameValuePairs.add(new BasicNameValuePair("id",currentPerson.getId()));
608
                    nameValuePairs.add(new BasicNameValuePair("name",currentPerson.getDisplayName()));
609
                    nameValuePairs.add(new BasicNameValuePair("email",Plus.AccountApi.getAccountName(mGoogleApiClient)));
610
                    userDataEditor.putString("email",Plus.AccountApi.getAccountName(mGoogleApiClient));
611
                    userDataEditor.commit();
612
                    nameValuePairs.add(new BasicNameValuePair("gender",gender));
613
                    nameValuePairs.add(new BasicNameValuePair("token",token));
614
                    Log.d("Invite Code Boolean","Boolean" +inviteData.getBoolean("inviteCodeRequired",true));
615
                    if(!(inviteData.getBoolean("inviteCodeRequired",true))) {
616
                        nameValuePairs.add(new BasicNameValuePair("utm_source",inviteData.getString("utm_source","")));
617
                        nameValuePairs.add(new BasicNameValuePair("utm_medium",inviteData.getString("utm_medium","")));
618
                        nameValuePairs.add(new BasicNameValuePair("utm_content",inviteData.getString("utm_content","")));
619
                        nameValuePairs.add(new BasicNameValuePair("utm_term",inviteData.getString("utm_term","")));
620
                        nameValuePairs.add(new BasicNameValuePair("utm_campaign",inviteData.getString("utm_campaign","")));
621
 
622
                    }/*else{
623
                        if (inviteD.getString("invite_added", "").equalsIgnoreCase("added")) {
624
                            nameValuePairs.add(new BasicNameValuePair("referrer",inviteD.getString("ref","")));
625
                        }else {
626
                            nameValuePairs.add(new BasicNameValuePair("referrer", referralCode.getText().toString()));
627
                            inviteDEditor.putString("ref", referralCode.getText().toString());
628
                            inviteDEditor.commit();
629
                        }
630
                    }*/
631
 
632
                    nameValuePairs.add(new BasicNameValuePair("profile_pic",currentPerson.getImage().getUrl()));
633
                    HttpClient httpclient = new DefaultHttpClient();
634
                    HttpPost httppost = new HttpPost(apiData.getString("user.registration.api",null));
635
                    httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
636
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
637
                    HttpResponse response = httpclient.execute(httppost);
638
                    HttpEntity entity = response.getEntity();
639
                    JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
640
                    System.out.println("JSON object in Login " + jObjGmail.toString());
641
                    String success = jObjGmail.getString("success");
642
                    if(success.equalsIgnoreCase("true")){
643
                        userDataEditor.putString("referralCodeRequired",jObjGmail.getString("referrerRequired"));
644
                        userDataEditor.putString("message",jObjGmail.getString("mobileRequired"));
645
                        userDataEditor.putString("type","google");
646
                        id= jObjGmail.getString("id");
647
                        userDataEditor.putString("id",id);
648
                    }
649
                    else{
650
 
651
                    }
652
                }
653
                else{
654
                    return "failure";
655
                }
656
 
657
            } catch (IOException transientEx) {
658
                Log.e("InputOutput", transientEx.toString());
659
 
660
            } catch (UserRecoverableAuthException e) {
661
                Log.d("Here","Here " + e.getMessage());
662
                Intent recover = e.getIntent();
663
                startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH);
664
            } catch (GoogleAuthException authEx) {
665
                //resolveSignInError();
666
                //revokeGplusAccess();
667
                Log.e("AuthEX", authEx.toString());
668
            }catch (Exception e) {
669
                Log.e("Exception main", e.toString());
670
            }
671
            return id;
672
        }
673
        @Override
674
        protected void onPostExecute(String result){
675
            super.onPostExecute(result);
676
            userDataEditor.commit();
677
            pDlg.dismiss();
678
            try {
679
                if (userData.getString("id", null) == null)  {
680
                    if(mGoogleApiClient.isConnected()) {
681
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
682
                        mGoogleApiClient.disconnect();
683
                        userDataEditor.clear().commit();
684
                    }
685
                    else{
686
                        userDataEditor.clear().commit();
687
                    }
688
                } else {
689
                    new gcmPushData().execute();
690
                }
691
            }catch (Exception e){
692
                e.printStackTrace();
693
            }
694
        }
695
    }
696
 
697
 
698
    @Override
699
    public void onResume() {
700
        super.onResume();
701
        uiHelper.onResume();
702
    }
703
 
704
    @Override
705
    public void onPause() {
706
        super.onPause();
707
        uiHelper.onPause();
708
    }
709
 
710
    @Override
711
    public void onDestroy() {
712
        super.onDestroy();
713
        uiHelper.onDestroy();
714
        mixpanel.flush();
715
    }
716
    @Override
717
    public void onSaveInstanceState(Bundle savedState) {
718
 
719
        super.onSaveInstanceState(savedState);
720
        uiHelper.onSaveInstanceState(savedState);
721
    }
722
    class loadData extends AsyncTask<String, Integer, String> {
723
 
724
        @Override
725
        protected void onPreExecute() {
726
            super.onPreExecute();
727
            Log.d("Pre execute", "Pre execute");
728
        }
729
 
730
        @Override
731
        protected String doInBackground(String... arg0) {
732
            String id=null;
733
            try {
734
                HttpClient httpclient = new DefaultHttpClient();
735
                HttpPost httppost = new HttpPost(apiData.getString("user.registration.api",null));
736
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
737
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
738
                HttpResponse response = httpclient.execute(httppost);
739
                HttpEntity entity = response.getEntity();
740
                int status = response.getStatusLine().getStatusCode();
741
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
742
                String success = jObjGmail.getString("success");
743
                if(success.equalsIgnoreCase("true")){
744
                    id  = jObjGmail.getString("id");
745
                    userDataEditor.putString("type","facebook");
746
                    userDataEditor.putString("id",id);
747
                    userDataEditor.putString("referralCodeRequired",jObjGmail.getString("referrerRequired"));
748
                    userDataEditor.putString("message",jObjGmail.getString("mobileRequired"));
749
                }
750
                else{
751
                }
752
                nameValuePairs.clear();
753
            } catch (Exception e) {
754
                Log.e("Fail 1", e.toString());
755
            }
756
            return id;
757
        }
758
 
759
        @Override
760
        protected void onPostExecute(String result) {
761
            super.onPostExecute(result);
762
            JSONObject props = new JSONObject();
763
            try {
764
                props.put("ID ", result);
765
            } catch (JSONException e) {
766
                e.printStackTrace();
767
            }
768
            mixpanel.track("Facebook",props);
769
            userDataEditor.commit();
770
            if(userData.getString("id",null)==null){
771
                Session.getActiveSession().closeAndClearTokenInformation();
772
                Session.setActiveSession(null);
773
                userDataEditor.clear().commit();
774
            }else {
775
                new gcmPushData().execute();
776
            }
777
        }
778
    }
779
 
780
    @Override
781
    public void onBackPressed() {
782
        new AlertDialog.Builder(this)
783
                .setIcon(android.R.drawable.ic_dialog_alert)
784
                .setTitle("Exit!")
785
                .setMessage("Are you sure you want to close?")
786
                .setPositiveButton("Yes", new DialogInterface.OnClickListener()
787
                {
788
                    @Override
789
                    public void onClick(DialogInterface dialog, int which) {
790
                        Intent startMain = new Intent(Intent.ACTION_MAIN);
791
                        startMain.addCategory(Intent.CATEGORY_HOME);
792
                        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
793
                        startActivity(startMain);
794
                    }
795
 
796
                })
797
                .setNegativeButton("No", null)
798
                .show();
799
    }
800
 
801
    private static int getAppVersion(Context context) {
802
        try {
803
            PackageInfo packageInfo = context.getPackageManager()
804
                    .getPackageInfo(context.getPackageName(), 0);
805
            return packageInfo.versionCode;
806
        } catch (PackageManager.NameNotFoundException e) {
807
            throw new RuntimeException(e);
808
        }
809
    }
810
 
811
    private void registerInBackground() {
812
        new AsyncTask<Void, Void, String>() {
813
            @Override
814
            protected String doInBackground(Void... params) {
815
                String msg = "";
816
                try {
817
                    if (gcm == null) {
818
                        gcm = GoogleCloudMessaging.getInstance(context);
819
                    }
820
                    regId = gcm.register(ProfitTillConstants.GOOGLE_SENDER_ID);
821
                    Log.d("RegisterActivity", "registerInBackground - regId: "
822
                            + regId);
823
                    msg = "Device registered, registration ID=" + regId;
824
 
825
                } catch (IOException ex) {
826
                    msg = "Error :" + ex.getMessage();
827
                    Log.d("RegisterActivity", "Error: " + msg);
828
                }
829
                Log.d("RegisterActivity", "AsyncTask completed: " + msg);
830
                return msg;
831
            }
832
 
833
            @Override
834
            protected void onPostExecute(String msg) {
835
                /*Toast.makeText(getApplicationContext(),
836
                        "Registered with GCM Server." + msg, Toast.LENGTH_LONG)
837
                        .show();*/
838
            }
839
        }.execute(null, null, null);
840
    }
841
 
842
    /*private void storeRegistrationId(Context context, String regId) {
843
        final SharedPreferences prefs = getSharedPreferences(
844
                MainActivity.class.getSimpleName(), Context.MODE_PRIVATE);
845
        int appVersion = getAppVersion(context);
846
        Log.i(TAG, "Saving regId on app version " + appVersion);
847
        SharedPreferences.Editor editor = prefs.edit();
848
        editor.putString(REG_ID, regId);
849
        editor.putInt(APP_VERSION, appVersion);
850
        editor.commit();
851
    }*/
852
    public String registerGCM() {
853
 
854
        gcm = GoogleCloudMessaging.getInstance(this);
855
        regId = getRegistrationId(context);
856
 
857
        if (TextUtils.isEmpty(regId)) {
858
 
859
            registerInBackground();
860
 
861
            Log.d("RegisterActivity",
862
                    "registerGCM - successfully registered with GCM server - regId: "
863
                            + regId);
864
        } else {
865
           /* Toast.makeText(getApplicationContext(),
866
                    "RegId already available. RegId: " + regId,
867
                    Toast.LENGTH_LONG).show();*/
868
        }
869
        return regId;
870
    }
871
 
872
    private String getRegistrationId(Context context) {
873
 
874
        String registrationId = userData.getString("gcm_regid", "");
875
        if (registrationId.isEmpty()) {
876
            Log.i(TAG, "Registration not found.");
877
            return "";
878
        }
879
        return registrationId;
880
    }
881
 
882
    class gcmPushData extends AsyncTask<String, Integer, String> {
883
 
884
        @Override
885
        protected void onPreExecute() {
886
            super.onPreExecute();
887
            MixpanelAPI mixpanel = MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
888
            MixpanelAPI.People people = mixpanel.getPeople();
889
            JSONObject props = new JSONObject();
890
            try {
891
                mixpanel.identify(userData.getString("id",null));
892
                people.identify(userData.getString("id",null));
893
                props.put("Screen", "Logged In");
894
                people.set("$last_login",new Date());
895
                people.set("user_id" , userData.getString("id",null));
896
                mixpanel.track("Successfully Logged In", props);
897
            } catch (JSONException e) {
898
                e.printStackTrace();
899
            }
900
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
901
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
902
            t.set("&uid",userData.getString("id",null));
903
            t.send(new HitBuilders.EventBuilder()
904
                    .setCategory("Login ")
905
                    .setAction("Login Successful")
906
                    .setLabel("Successful for User" +userData.getString("id",null))
907
                    .build());
908
        }
909
 
910
        @Override
911
        protected String doInBackground(String... arg0) {
912
            String id=null;
913
            try {
914
                HttpClient httpclient = new DefaultHttpClient();
915
                HttpPost httppost = new HttpPost(apiData.getString("gcm.push.url",null));
916
                nameValuePairsGcm = new ArrayList<>();
917
                TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
918
                nameValuePairsGcm.add(new BasicNameValuePair("gcm_regid",regId));
919
                nameValuePairsGcm.add(new BasicNameValuePair("imeinumber",telephonyManager.getDeviceId()));
920
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id",null)));
921
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
922
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairsGcm));
923
                HttpResponse response = httpclient.execute(httppost);
924
                HttpEntity entity = response.getEntity();
925
                int status = response.getStatusLine().getStatusCode();
926
 
927
                if(status == 200){
928
                    Log.d("ResponseCode GCM ",status+"");
929
                } else {
930
                    Log.d("ResponseCode GCM ",status+"");
931
                }
932
 
933
                nameValuePairsGcm.clear();
934
                Log.e("pass 1", "connection success ");
935
            } catch (Exception e) {
936
                Log.e("Fail 1", e.toString());
937
 
938
            }
939
            return id;
940
        }
941
 
942
        @Override
943
        protected void onPostExecute(String result) {
944
            super.onPostExecute(result);
945
            userDataEditor.putString("gcm_regid", regId);
946
            userDataEditor.commit();
947
            String check = userData.getString("message","");
948
            /*if(apiData.getString("profitmandi.invitation","false").equalsIgnoreCase("true")){
949
                inviteDEditor.putString("invite_added","added");
950
                inviteDEditor.commit();
951
            }*/
952
            //Toast.makeText(getApplicationContext(),"Invite Data"+inviteData.getBoolean("inviteCodeRequired",true),Toast.LENGTH_SHORT).show();
953
            //Ask anikendra as to what screen needs to be shown. Even if its from the campaign have a check at the backend.
954
            if(userData.getString("referralCodeRequired","").equalsIgnoreCase("true")){
955
                Log.d("In if","in if" +inviteD.getString("referrerCode","").equalsIgnoreCase("") + inviteD  .getString("referrerCode","") );
956
                Intent i = new Intent(LoginActivity.this, ReferrerActivity.class);
957
                startActivity(i);
958
            }
959
            else if(check.equalsIgnoreCase("true")){
960
                /*boolean inviteCode =inviteData.getBoolean("inviteCodeRequired",true);
961
                if(inviteCode && inviteD.getString("referrerCode","").equalsIgnoreCase("")){
962
                    Log.d("In if","in if" +inviteD.getString("referrerCode","").equalsIgnoreCase("") + inviteD  .getString("referrerCode","") );
963
                    Intent i = new Intent(LoginActivity.this, ReferrerActivity.class);
964
                    i.putExtra("displayView", "7");
965
                    startActivity(i);
966
                }else{*/
967
                    Log.d("In if","in else");
968
                    Intent i = new Intent(LoginActivity.this, MobileNumber.class);
969
                    i.putExtra("displayView", "7");
970
                    startActivity(i);
971
                //}
972
            }
973
            else{
974
                Intent i = new Intent(LoginActivity.this,MainActivity.class);
975
                i.putExtra("displayView","0");
976
                startActivity(i);
977
            }
978
        }
979
 
980
 
981
    }
982
 
983
    public final boolean isInternetOn() {
984
 
985
        ConnectivityManager connection =
986
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
987
 
988
        if ( connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
989
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
990
                connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
991
                connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
992
 
993
            return true;
994
 
995
        } else if (
996
                connection.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
997
                        connection.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
998
 
999
            return false;
1000
        }
1001
        return false;
1002
    }
1003
    class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {
1004
 
1005
        @Override
1006
        protected void onPreExecute() {
1007
            super.onPreExecute();
1008
 
1009
        }
1010
 
1011
        @Override
1012
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {
1013
 
1014
            try {
1015
                HttpClient httpclient = new DefaultHttpClient();
1016
                HttpPost httppost = new HttpPost(apiData.getString("notication.data.url","http://api.profittill.com/pushnotifications/add"));
1017
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1018
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1019
                HttpResponse response = httpclient.execute(httppost);
1020
                HttpEntity entity = response.getEntity();
1021
                int status = response.getStatusLine().getStatusCode();
1022
 
1023
                if(status == 200){
1024
                    Log.d("Notification Opened","Notication opened and sent to server");
1025
                    Log.d("ResponseCode GCM ",status+"");
1026
                } else {
1027
                    Log.d("ResponseCode GCM ",status+"");
1028
                }
1029
 
1030
                nameValuePairsGcm.clear();
1031
                Log.e("pass 1", "connection success ");
1032
            } catch (Exception e) {
1033
                Log.e("Fail 1", e.toString());
1034
 
1035
            }
1036
            return "success";
1037
        }
1038
 
1039
        @Override
1040
        protected void onPostExecute(String result) {
1041
            super.onPostExecute(result);
1042
            Log.d("Notification Opened","Notication opened and login page");
1043
        }
1044
    }
1045
}