Subversion Repositories SmartDukaan

Rev

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