Subversion Repositories SmartDukaan

Rev

Rev 15977 | 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;
16278 manas 4
import android.app.ProgressDialog;
14792 manas 5
import android.content.Context;
6
import android.content.DialogInterface;
7
import android.content.Intent;
8
import android.content.SharedPreferences;
9
import android.net.ConnectivityManager;
10
import android.os.AsyncTask;
11
import android.support.v7.app.ActionBarActivity;
12
import android.os.Bundle;
15977 manas 13
import android.text.SpannableString;
14
import android.text.style.UnderlineSpan;
14792 manas 15
import android.util.Log;
16
import android.view.Menu;
17
import android.view.MenuItem;
18
import android.view.View;
19
import android.widget.Button;
20
import android.widget.EditText;
21
import android.widget.TextView;
22
import android.widget.Toast;
23
 
24
import com.facebook.Session;
25
import com.google.android.gms.analytics.HitBuilders;
26
import com.google.android.gms.analytics.Tracker;
27
import com.google.android.gms.common.ConnectionResult;
28
import com.google.android.gms.common.api.GoogleApiClient;
29
import com.google.android.gms.plus.Plus;
30
import com.mixpanel.android.mpmetrics.MixpanelAPI;
31
import com.saholic.profittill.Constants.ProfitTillConstants;
32
import com.saholic.profittill.R;
16278 manas 33
import com.saholic.profittill.Utils.AnalyticsUtility;
34
import com.saholic.profittill.Volley.Analytics;
35
import com.saholic.profittill.Volley.AnalyticsErrorResponse;
36
import com.saholic.profittill.Volley.AnalyticsJsonResponse;
14792 manas 37
import com.testin.agent.TestinAgent;
38
 
39
import org.apache.http.HttpEntity;
40
import org.apache.http.HttpResponse;
41
import org.apache.http.NameValuePair;
42
import org.apache.http.client.ClientProtocolException;
43
import org.apache.http.client.HttpClient;
44
import org.apache.http.client.entity.UrlEncodedFormEntity;
45
import org.apache.http.client.methods.HttpPost;
46
import org.apache.http.impl.client.DefaultHttpClient;
47
import org.apache.http.message.BasicNameValuePair;
48
import org.apache.http.util.EntityUtils;
49
import org.json.JSONException;
50
import org.json.JSONObject;
51
 
52
import java.io.IOException;
53
import java.text.SimpleDateFormat;
54
import java.util.ArrayList;
55
import java.util.Date;
56
 
57
public class MobileNumber extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
58
    SharedPreferences userData;
59
    SharedPreferences apiData;
60
    SharedPreferences.Editor userDataEditor;
61
    SharedPreferences.Editor apiSettingsEditor;
62
    EditText phoneNumberFirstTime;
63
    TextView skipMobileNumber;
64
    Button phoneNumberFirstTimeButton;
65
    boolean glogout;
66
    MixpanelAPI mixpanel;
67
    String type1;
68
    public GoogleApiClient mGoogleApiClient;
69
    @Override
70
    protected void onCreate(Bundle savedInstanceState) {
71
        super.onCreate(savedInstanceState);
72
        setContentView(R.layout.activity_mobile_number);
73
        TestinAgent.init(this);
74
        getSupportActionBar().hide();
75
        mixpanel= MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
76
        userData = getApplicationContext().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
77
        apiData = getApplicationContext().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
78
        userDataEditor = userData.edit();
79
        apiSettingsEditor = apiData.edit();
80
        TestinAgent.setUserInfo(userData.getString("id", ""));
81
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
82
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
83
        t.setScreenName("First Time Mobile Entered Screen");
84
        t.send(new HitBuilders.ScreenViewBuilder().build());
16278 manas 85
        new Analytics(ProfitTillConstants.ANALYTICS_URL,
86
                AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Screen", "Mobile Number", "Mobile Number Entering"),
87
                AnalyticsJsonResponse.getAnalyticsRequestInstance(),
88
                AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);
14792 manas 89
 
90
        type1 = userData.getString("type",null);
91
 
92
        if(type1!=null && type1.equalsIgnoreCase("google")) {
93
            mGoogleApiClient = new GoogleApiClient.Builder(this)
94
                    .addConnectionCallbacks(this)
95
                    .addOnConnectionFailedListener(this).addApi(Plus.API)
96
                    .addScope(Plus.SCOPE_PLUS_LOGIN).build();
97
            mGoogleApiClient.connect();
98
        }
99
 
100
        phoneNumberFirstTime=(EditText)findViewById(R.id.phoneNumberFirstTime);
101
        skipMobileNumber = (TextView)findViewById(R.id.skipMobileNumber);
102
        phoneNumberFirstTimeButton=(Button)findViewById(R.id.phoneNumberFirstTimeButton);
15977 manas 103
        SpannableString content = new SpannableString(skipMobileNumber.getText().toString());
104
        content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
105
        skipMobileNumber.setText(content);
14792 manas 106
 
107
        skipMobileNumber.setOnClickListener(new View.OnClickListener() {
108
            @Override
109
            public void onClick(View v) {
110
 
111
                JSONObject props = new JSONObject();
112
                try {
16278 manas 113
                    mixpanel.identify(userData.getString("id", null));
14792 manas 114
                    props.put("Screen", "Mobile Verification");
16278 manas 115
                    mixpanel.track("First Time Mobile Number Skipped", props);
14792 manas 116
                } catch (JSONException e) {
117
                    e.printStackTrace();
118
                }
119
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
120
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
121
                t.send(new HitBuilders.EventBuilder()
122
                        .setCategory("First Time Mobile Entered ")
123
                        .setAction("Number not entered")
124
                        .setLabel("First Time Mobile Not entered")
125
                        .build());
126
 
16278 manas 127
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
128
                        AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Clicks", "Mobile Number", "Mobile Number Skipped"),
129
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
130
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);
131
 
132
                Intent i = new Intent(MobileNumber.this, MainActivity.class);
133
                i.putExtra("displayView", "7");
14792 manas 134
                startActivity(i);
135
            }
136
        });
16278 manas 137
 
14792 manas 138
        phoneNumberFirstTimeButton.setOnClickListener(new View.OnClickListener() {
139
            @Override
140
            public void onClick(View v) {
141
                if(phoneNumberFirstTime.getText().toString().length()==10){
142
                    if(isInternetOn()) {
143
                        JSONObject props = new JSONObject();
144
                        try {
145
                            mixpanel.identify(userData.getString("id",null));
146
                            props.put("Screen", "Mobile Verification");
147
                            mixpanel.track("First Time Mobile Number Entered",props);
148
                        } catch (JSONException e) {
149
                            e.printStackTrace();
150
                        }
16278 manas 151
                        if(!(userData.getString("id", "").isEmpty())) {
152
                            new Analytics(ProfitTillConstants.ANALYTICS_URL,
153
                                    AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Clicks", "Mobile Number", "Mobile Number Entered"),
154
                                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
155
                                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);
156
                        }
14792 manas 157
                        new pushVerification().execute();
158
                    }else{
159
                        Toast.makeText(getApplicationContext(), "No internet connection. Please try again.", Toast.LENGTH_SHORT).show();
160
                    }
161
 
162
                }
163
                else{
164
                    Toast.makeText(getApplicationContext(), "Mobile Number not valid.", Toast.LENGTH_SHORT).show();
165
                }
166
 
167
            }
168
        });
169
 
170
 
171
    }
172
 
173
 
174
    @Override
175
    public boolean onCreateOptionsMenu(Menu menu) {
176
        getMenuInflater().inflate(R.menu.menu_mobile_number, menu);
177
        return true;
178
    }
179
 
180
    @Override
181
    public boolean onOptionsItemSelected(MenuItem item) {
182
 
183
        int id = item.getItemId();
184
        if (id == R.id.action_settings) {
185
            return true;
186
        }
187
        return super.onOptionsItemSelected(item);
188
    }
189
 
190
    @Override
191
    public void onConnected(Bundle bundle) {
192
 
193
    }
194
 
195
    @Override
196
    public void onConnectionSuspended(int i) {
197
 
198
    }
199
 
200
    @Override
201
    public void onConnectionFailed(ConnectionResult connectionResult) {
202
 
203
    }
204
 
16278 manas 205
    ProgressDialog pMobile;
14792 manas 206
    class pushVerification extends AsyncTask<String, Integer, String> {
207
 
208
        @Override
209
        protected void onPreExecute() {
210
            super.onPreExecute();
16278 manas 211
            pMobile= new ProgressDialog(MobileNumber.this);
212
            pMobile.setMessage("Saving Data");
213
            pMobile.setCancelable(false);
214
            pMobile.show();
14792 manas 215
        }
216
 
217
        @Override
218
        protected String doInBackground(String... arg0) {
219
            HttpClient httpclient = new DefaultHttpClient();
220
            try {
221
 
222
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
223
                SimpleDateFormat sdf = new SimpleDateFormat(ProfitTillConstants.SQL_DATE_FORMAT);
224
                String dateUpdated = sdf.format(new Date());
225
                nameValuePairs.add(new BasicNameValuePair("id",userData.getString("id","")));
226
                nameValuePairs.add(new BasicNameValuePair("mobile_number",phoneNumberFirstTime.getText().toString()));
227
                nameValuePairs.add(new BasicNameValuePair("mobile_number_last_updated",dateUpdated));
228
                String updateURL = apiData.getString("useredit.url","");
229
                String url = updateURL+userData.getString("id","");
230
                HttpPost httppost = new HttpPost(url);
231
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
232
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
233
                HttpResponse response = httpclient.execute(httppost);
234
                HttpEntity entity = response.getEntity();
235
                int status = response.getStatusLine().getStatusCode();
236
                JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));
16278 manas 237
 
14792 manas 238
                String success = jObjGmail.getString("success");
239
 
240
                if(status == 200){
241
                    Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
242
                            GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
243
                    t.send(new HitBuilders.EventBuilder()
244
                            .setCategory("First Time Mobile Entered ")
245
                            .setAction("Number entered")
246
                            .setLabel("First Time Mobile entered")
247
                            .build());
248
                }
249
                if(success.equalsIgnoreCase("true")){
250
                    userDataEditor.putString("message","false");;
251
                    userDataEditor.commit();
252
                    return "true";
253
                }else{
254
                    userDataEditor.putString("message","true");;
255
                    userDataEditor.commit();
256
                    return "false";
257
                }
258
            } catch (ClientProtocolException e) {
259
                return "false";
260
            } catch (IOException e) {
261
                return "false";
262
            }catch (Exception e){
263
                return "false";
264
            }
265
        }
266
 
267
        @Override
268
        protected void onPostExecute(String result) {
269
            super.onPostExecute(result);
16278 manas 270
            if(pMobile!=null) {
271
                pMobile.dismiss();
272
            }
273
            if(result.equalsIgnoreCase("true")) {
274
                Intent i = new Intent(MobileNumber.this, MobileVerificationFirstTime.class);
275
                i.putExtra("numberVerification", phoneNumberFirstTime.getText().toString());
276
                startActivity(i);
277
            }
14792 manas 278
        }
279
    }
280
 
281
    @Override
282
    public void onBackPressed() {
283
        new AlertDialog.Builder(this)
284
                .setIcon(android.R.drawable.ic_dialog_alert)
285
                .setTitle("Exit!")
286
                .setMessage("Are you sure you want to sign out?")
16278 manas 287
                .setPositiveButton("Yes", new DialogInterface.OnClickListener(){
14792 manas 288
                    @Override
289
                    public void onClick(DialogInterface dialog, int which) {
290
                        if(type1.equalsIgnoreCase("facebook")) {
291
                            Log.d("fblogout","logout");
292
                            if (Session.getActiveSession() != null) {
293
                                Session.getActiveSession().closeAndClearTokenInformation();
294
                            }
295
                            Session.setActiveSession(null);
296
                            userDataEditor.clear().commit();
297
                            startActivity(new Intent(MobileNumber.this, LoginActivity.class));
298
                        }
299
                        else{
300
                            Log.d("gmailLogout","logout");
301
                            signOutFromGplus();
302
                            if(glogout==true){
303
                                startActivity(new Intent(MobileNumber.this, LoginActivity.class));
304
                            }
305
                        }
306
 
307
                    }
308
 
309
                })
310
                .setNegativeButton("No", null)
311
                .show();
312
    }
313
 
314
    public void signOutFromGplus() {
315
        if (mGoogleApiClient.isConnected()) {
316
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
317
            mGoogleApiClient.disconnect();
318
            mGoogleApiClient.connect();
319
            glogout=true;
320
            userDataEditor.clear();
321
            userDataEditor.commit();
322
        } else {
323
            glogout=false;
324
        }
325
    }
326
 
327
    public final boolean isInternetOn() {
328
 
329
        ConnectivityManager connec =
330
                (ConnectivityManager)this.getSystemService(getBaseContext().CONNECTIVITY_SERVICE);
331
 
332
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
333
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
334
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
335
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
336
            return true;
337
 
338
        } else if (
339
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
340
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
341
 
342
            return false;
343
        }
344
        return false;
345
    }
346
 
347
}