Rev 16278 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.saholic.profittill.main;import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.net.ConnectivityManager;import android.net.Uri;import android.os.AsyncTask;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.text.SpannableString;import android.text.style.UnderlineSpan;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import com.facebook.Session;import com.google.android.gms.analytics.HitBuilders;import com.google.android.gms.analytics.Tracker;import com.google.android.gms.common.ConnectionResult;import com.google.android.gms.common.api.GoogleApiClient;import com.google.android.gms.plus.Plus;import com.mixpanel.android.mpmetrics.MixpanelAPI;import com.saholic.profittill.Constants.ProfitTillConstants;import com.saholic.profittill.R;import com.saholic.profittill.Utils.AnalyticsUtility;import com.saholic.profittill.Utils.UtilityFunctions;import com.saholic.profittill.Volley.Analytics;import com.saholic.profittill.Volley.AnalyticsErrorResponse;import com.saholic.profittill.Volley.AnalyticsJsonResponse;import com.testin.agent.TestinAgent;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;public class MobileNumber extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {SharedPreferences userData;SharedPreferences apiData;SharedPreferences.Editor userDataEditor;SharedPreferences.Editor apiSettingsEditor;EditText phoneNumberFirstTime;TextView skipMobileNumber;Button phoneNumberFirstTimeButton;boolean glogout;MixpanelAPI mixpanel;String type1;ArrayList<NameValuePair> nameValuePairsGcm;public GoogleApiClient mGoogleApiClient;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mobile_number);TestinAgent.init(this);getSupportActionBar().hide();mixpanel= MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);userData = getApplicationContext().getSharedPreferences("User_Data", Context.MODE_PRIVATE);apiData = getApplicationContext().getSharedPreferences("API_Data", Context.MODE_PRIVATE);userDataEditor = userData.edit();apiSettingsEditor = apiData.edit();TestinAgent.setUserInfo(userData.getString("id", ""));Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(GoogleAnalyticsTracker.TrackerName.APP_TRACKER);t.setScreenName("First Time Mobile Entered Screen");t.send(new HitBuilders.ScreenViewBuilder().build());new Analytics(ProfitTillConstants.ANALYTICS_URL,AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Screen", "Mobile Number", "Mobile Number Entering"),AnalyticsJsonResponse.getAnalyticsRequestInstance(),AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);type1 = userData.getString("type",null);if(type1!=null && type1.equalsIgnoreCase("google")) {mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN).build();mGoogleApiClient.connect();}if(getIntent().getAction()=="31"){String emailURL= String.valueOf(getIntent().getData());Uri url = Uri.parse(emailURL);String campaignId = url.getQueryParameter("campaign");if(url.getQueryParameter("intent_type").equalsIgnoreCase("url")) {t.send(new HitBuilders.EventBuilder().setCategory("Message/Email").setAction("Message/Email Opened For User Id " + UtilityFunctions.campaignUserId(url)).setLabel("Campaign Id " + campaignId).build());new Analytics(ProfitTillConstants.ANALYTICS_URL,AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, UtilityFunctions.campaignUserId(url), "Message", "Message Opened Mobile", campaignId),AnalyticsJsonResponse.getAnalyticsRequestInstance(),AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);nameValuePairsGcm = new ArrayList<>();nameValuePairsGcm.add(new BasicNameValuePair("user_id", UtilityFunctions.campaignUserId(url)));nameValuePairsGcm.add(new BasicNameValuePair("cid", campaignId));nameValuePairsGcm.add(new BasicNameValuePair("timestamp", UtilityFunctions.notificationDate()));nameValuePairsGcm.add(new BasicNameValuePair("result", "message_opened_mobile"));new NotificationOpenedData().execute(nameValuePairsGcm);}else{nameValuePairsGcm = new ArrayList<>();nameValuePairsGcm.add(new BasicNameValuePair("user_id", userData.getString("id","")));nameValuePairsGcm.add(new BasicNameValuePair("cid", campaignId));nameValuePairsGcm.add(new BasicNameValuePair("timestamp", UtilityFunctions.notificationDate()));nameValuePairsGcm.add(new BasicNameValuePair("result", "message_opened_mobile"));new NotificationOpenedData().execute(nameValuePairsGcm);}}phoneNumberFirstTime=(EditText)findViewById(R.id.phoneNumberFirstTime);skipMobileNumber = (TextView)findViewById(R.id.skipMobileNumber);phoneNumberFirstTimeButton=(Button)findViewById(R.id.phoneNumberFirstTimeButton);SpannableString content = new SpannableString(skipMobileNumber.getText().toString());content.setSpan(new UnderlineSpan(), 0, content.length(), 0);skipMobileNumber.setText(content);skipMobileNumber.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {JSONObject props = new JSONObject();try {mixpanel.identify(userData.getString("id", null));props.put("Screen", "Mobile Verification");mixpanel.track("First Time Mobile Number Skipped", props);} catch (JSONException e) {e.printStackTrace();}Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(GoogleAnalyticsTracker.TrackerName.APP_TRACKER);t.send(new HitBuilders.EventBuilder().setCategory("First Time Mobile Entered ").setAction("Number not entered").setLabel("First Time Mobile Not entered").build());new Analytics(ProfitTillConstants.ANALYTICS_URL,AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Clicks", "Mobile Number", "Mobile Number Skipped"),AnalyticsJsonResponse.getAnalyticsRequestInstance(),AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);Intent i = new Intent(MobileNumber.this, MainActivity.class);i.putExtra("displayView", "7");startActivity(i);}});phoneNumberFirstTimeButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(phoneNumberFirstTime.getText().toString().length()==10){if(isInternetOn()) {JSONObject props = new JSONObject();try {mixpanel.identify(userData.getString("id",null));props.put("Screen", "Mobile Verification");mixpanel.track("First Time Mobile Number Entered",props);} catch (JSONException e) {e.printStackTrace();}if(!(userData.getString("id", "").isEmpty())) {new Analytics(ProfitTillConstants.ANALYTICS_URL,AnalyticsUtility.getAnalyticsRequest(MobileNumber.this, userData.getString("id", ""), "Clicks", "Mobile Number", "Mobile Number Entered"),AnalyticsJsonResponse.getAnalyticsRequestInstance(),AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MobileNumber.this);}new pushVerification().execute();}else{Toast.makeText(getApplicationContext(), "No internet connection. Please try again.", Toast.LENGTH_SHORT).show();}}else{Toast.makeText(getApplicationContext(), "Mobile Number not valid.", Toast.LENGTH_SHORT).show();}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu_mobile_number, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onConnected(Bundle bundle) {}@Overridepublic void onConnectionSuspended(int i) {}@Overridepublic void onConnectionFailed(ConnectionResult connectionResult) {}ProgressDialog pMobile;class pushVerification extends AsyncTask<String, Integer, String> {@Overrideprotected void onPreExecute() {super.onPreExecute();pMobile= new ProgressDialog(MobileNumber.this);pMobile.setMessage("Saving Data");pMobile.setCancelable(false);pMobile.show();}@Overrideprotected String doInBackground(String... arg0) {HttpClient httpclient = new DefaultHttpClient();try {ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();SimpleDateFormat sdf = new SimpleDateFormat(ProfitTillConstants.SQL_DATE_FORMAT);String dateUpdated = sdf.format(new Date());nameValuePairs.add(new BasicNameValuePair("id",userData.getString("id","")));nameValuePairs.add(new BasicNameValuePair("mobile_number",phoneNumberFirstTime.getText().toString()));nameValuePairs.add(new BasicNameValuePair("mobile_number_last_updated",dateUpdated));String updateURL = apiData.getString("useredit.url","");String url = updateURL+userData.getString("id","");HttpPost httppost = new HttpPost(url);httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();int status = response.getStatusLine().getStatusCode();JSONObject jObjGmail = new JSONObject(EntityUtils.toString(entity));String success = jObjGmail.getString("success");if(status == 200){Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(GoogleAnalyticsTracker.TrackerName.APP_TRACKER);t.send(new HitBuilders.EventBuilder().setCategory("First Time Mobile Entered ").setAction("Number entered").setLabel("First Time Mobile entered").build());}if(success.equalsIgnoreCase("true")){userDataEditor.putString("message","false");;userDataEditor.commit();return "true";}else{userDataEditor.putString("message","true");;userDataEditor.commit();return "false";}} catch (ClientProtocolException e) {return "false";} catch (IOException e) {return "false";}catch (Exception e){return "false";}}@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);if(pMobile!=null) {pMobile.dismiss();}if(result.equalsIgnoreCase("true")) {Intent i = new Intent(MobileNumber.this, MobileVerificationFirstTime.class);i.putExtra("numberVerification", phoneNumberFirstTime.getText().toString());startActivity(i);}}}@Overridepublic void onBackPressed() {new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit!").setMessage("Are you sure you want to sign out?").setPositiveButton("Yes", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which) {if(type1.equalsIgnoreCase("facebook")) {Log.d("fblogout","logout");if (Session.getActiveSession() != null) {Session.getActiveSession().closeAndClearTokenInformation();}Session.setActiveSession(null);userDataEditor.clear().commit();startActivity(new Intent(MobileNumber.this, LoginActivity.class));}else{Log.d("gmailLogout","logout");signOutFromGplus();if(glogout==true){startActivity(new Intent(MobileNumber.this, LoginActivity.class));}}}}).setNegativeButton("No", null).show();}public void signOutFromGplus() {if (mGoogleApiClient.isConnected()) {Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);mGoogleApiClient.disconnect();mGoogleApiClient.connect();glogout=true;userDataEditor.clear();userDataEditor.commit();} else {glogout=false;}}public final boolean isInternetOn() {ConnectivityManager connec =(ConnectivityManager)this.getSystemService(getBaseContext().CONNECTIVITY_SERVICE);if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {return true;} else if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED ) {return false;}return false;}class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {@Overrideprotected void onPreExecute() {super.onPreExecute();}@Overrideprotected String doInBackground(ArrayList<NameValuePair>... arg0) {try {HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost(apiData.getString("notication.data.url","http://api.profittill.com/pushnotifications/add"));httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();int status = response.getStatusLine().getStatusCode();nameValuePairsGcm.clear();} catch (Exception e) {Log.e("Fail 1", e.toString());}return "success";}@Overrideprotected void onPostExecute(String result) {super.onPostExecute(result);}}}