Subversion Repositories SmartDukaan

Rev

Rev 19653 | Rev 20406 | 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;
19653 manas 2
import android.app.AlarmManager;
15356 manas 3
import android.app.Fragment;
4
import android.app.FragmentManager;
19946 manas 5
import android.app.FragmentTransaction;
19653 manas 6
import android.app.PendingIntent;
14792 manas 7
import android.content.Context;
8
import android.content.Intent;
9
import android.content.SharedPreferences;
15356 manas 10
import android.content.res.Configuration;
14792 manas 11
import android.graphics.Color;
12
import android.graphics.drawable.ColorDrawable;
13
import android.net.ConnectivityManager;
16310 manas 14
import android.net.Uri;
14792 manas 15
import android.os.AsyncTask;
15356 manas 16
import android.os.Bundle;
14792 manas 17
import android.os.PersistableBundle;
19653 manas 18
import android.os.SystemClock;
15356 manas 19
import android.support.v4.app.ActionBarDrawerToggle;
20
import android.support.v4.widget.DrawerLayout;
14792 manas 21
import android.support.v7.app.ActionBarActivity;
15356 manas 22
import android.util.Log;
14792 manas 23
import android.view.KeyEvent;
24
import android.view.Menu;
25
import android.view.MenuItem;
26
import android.view.View;
27
import android.view.ViewConfiguration;
28
import android.view.Window;
16310 manas 29
import android.webkit.CookieManager;
30
import android.webkit.CookieSyncManager;
31
import android.widget.ExpandableListView;
19653 manas 32
import android.widget.ImageView;
16310 manas 33
import android.widget.LinearLayout;
19653 manas 34
import android.widget.RelativeLayout;
35
import android.widget.TextView;
36
 
14792 manas 37
import com.facebook.Session;
38
import com.google.android.gms.analytics.HitBuilders;
39
import com.google.android.gms.analytics.Tracker;
40
import com.google.android.gms.common.ConnectionResult;
41
import com.google.android.gms.common.api.GoogleApiClient;
42
import com.google.android.gms.plus.Plus;
43
import com.mixpanel.android.mpmetrics.MixpanelAPI;
44
import com.saholic.profittill.Constants.ProfitTillConstants;
19653 manas 45
import com.saholic.profittill.Network.NotificationCount;
15356 manas 46
import com.saholic.profittill.R;
19653 manas 47
import com.saholic.profittill.Services.PollingService;
16278 manas 48
import com.saholic.profittill.Utils.AnalyticsUtility;
18082 manas 49
import com.saholic.profittill.Utils.DESEncrypter;
15356 manas 50
import com.saholic.profittill.Utils.UtilityFunctions;
16278 manas 51
import com.saholic.profittill.Volley.Analytics;
52
import com.saholic.profittill.Volley.AnalyticsErrorResponse;
53
import com.saholic.profittill.Volley.AnalyticsJsonResponse;
16310 manas 54
import com.saholic.profittill.navigationdrawer.ExpandableNavigationAdapter;
55
import com.saholic.profittill.navigationdrawer.ExpandableNavigationItem;
14792 manas 56
import com.testin.agent.TestinAgent;
57
 
58
import org.apache.http.HttpEntity;
59
import org.apache.http.HttpResponse;
60
import org.apache.http.NameValuePair;
61
import org.apache.http.client.HttpClient;
62
import org.apache.http.client.entity.UrlEncodedFormEntity;
63
import org.apache.http.client.methods.HttpPost;
64
import org.apache.http.impl.client.DefaultHttpClient;
65
import org.apache.http.message.BasicNameValuePair;
66
import org.json.JSONException;
67
import org.json.JSONObject;
68
 
69
import java.lang.reflect.Field;
70
import java.lang.reflect.Method;
71
import java.util.ArrayList;
16310 manas 72
import java.util.Arrays;
14792 manas 73
import java.util.Date;
16310 manas 74
import java.util.HashMap;
75
import java.util.List;
76
import java.util.Map;
14792 manas 77
 
78
 
79
public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
80
    public GoogleApiClient mGoogleApiClient;
81
    SharedPreferences userData;
82
    SharedPreferences apiData;
83
    boolean glogout;
84
    SharedPreferences.Editor userDataEditor;
85
    SharedPreferences.Editor apiSettingsEditor;
86
    SharedPreferences.Editor inviteDataEditor;
87
    SharedPreferences inviteData;
88
    String type1;
89
    int flag;
90
    boolean shouldGoInvisible;
91
    int titleVisible;
92
    String redirectUrl;
93
    MixpanelAPI mixpanel;
94
    String notificationURL;
95
    ArrayList<NameValuePair> nameValuePairsGcm;
16310 manas 96
 
97
 
98
    private DrawerLayout mDrawerLayout;
99
    private ExpandableListView mDrawerList;
100
    private LinearLayout navDrawerView;
101
    ExpandableNavigationAdapter customAdapter;
102
    private ActionBarDrawerToggle mDrawerToggle;
103
    private CharSequence mDrawerTitle;
104
    private CharSequence mTitle;
105
    private String[] mPlanetTitles;
17092 manas 106
    private String[] mHelpTtiles;
16310 manas 107
    private int selectedPosition;
108
    List<ExpandableNavigationItem> listParent;
109
    HashMap<String, List<String>> listDataChild;
110
 
111
 
14792 manas 112
    @Override
113
    protected void onCreate(Bundle savedInstanceState) {
114
        super.onCreate(savedInstanceState);
115
        setContentView(R.layout.activity_main);
116
        TestinAgent.init(this);
117
        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
118
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
119
        userDataEditor = userData.edit();
120
        apiSettingsEditor = apiData.edit();
121
        inviteData = getApplicationContext().getSharedPreferences("Invite_Data", Context.MODE_PRIVATE);
122
        inviteDataEditor = inviteData.edit();
123
        TestinAgent.setUserInfo(userData.getString("id",""));
124
        mixpanel = MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
125
        type1 = userData.getString("type",null);
126
 
127
        if(getIntent().getAction()=="20"){
15588 manas 128
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
129
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
130
            t.send(new HitBuilders.EventBuilder()
131
                    .setCategory("Notification")
132
                    .setAction("Notification Opened ")
133
                    .setLabel("For User Id " + userData.getString("id","0"))
134
                    .build());
16310 manas 135
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
136
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
137
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
138
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 139
            flag=20;
140
            notificationURL = String.valueOf(getIntent().getData());
141
            nameValuePairsGcm = new ArrayList<>();
142
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
143
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 144
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp", UtilityFunctions.notificationDate()));
14792 manas 145
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
146
            getIntent().getExtras().remove("cid");
147
            new NotificationOpenedData().execute(nameValuePairsGcm);
148
        }else if(getIntent().getAction()=="15"){
15588 manas 149
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
150
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
151
            t.send(new HitBuilders.EventBuilder()
152
                    .setCategory("Notification")
153
                    .setAction("Notification Opened ")
154
                    .setLabel("For User Id " + userData.getString("id","0"))
155
                    .build());
14792 manas 156
            flag=15;
16310 manas 157
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
158
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
159
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
160
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 161
            nameValuePairsGcm = new ArrayList<>();
162
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
163
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 164
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 165
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
166
            getIntent().getExtras().remove("cid");
167
            new NotificationOpenedData().execute(nameValuePairsGcm);
168
        }else if(getIntent().getAction()=="7"){
15588 manas 169
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
170
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
171
            t.send(new HitBuilders.EventBuilder()
172
                    .setCategory("Notification")
173
                    .setAction("Notification Opened ")
174
                    .setLabel("For User Id " + userData.getString("id","0"))
175
                    .build());
16310 manas 176
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
177
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
178
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
179
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 180
            flag=7;
181
            nameValuePairsGcm = new ArrayList<>();
182
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
183
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 184
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 185
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
186
            getIntent().getExtras().remove("cid");
187
            new NotificationOpenedData().execute(nameValuePairsGcm);
188
        }else if(getIntent().getAction()=="6"){
15588 manas 189
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
190
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
191
            t.send(new HitBuilders.EventBuilder()
192
                    .setCategory("Notification")
193
                    .setAction("Notification Opened ")
194
                    .setLabel("For User Id " + userData.getString("id","0"))
195
                    .build());
16310 manas 196
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
197
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
198
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
199
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 200
            flag=6;
201
            nameValuePairsGcm = new ArrayList<>();
202
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
203
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 204
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 205
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
206
            getIntent().getExtras().remove("cid");
207
            new NotificationOpenedData().execute(nameValuePairsGcm);
16080 manas 208
        }else if(getIntent().getAction()=="31"){
209
            String emailURL= String.valueOf(getIntent().getData());
18082 manas 210
            Uri url = Uri.parse(emailURL);
211
            if(url.getQueryParameter("intent_type").equalsIgnoreCase("url")){
212
                String campaignId = url.getQueryParameter("campaign");
213
                DESEncrypter desEncrypter = new DESEncrypter(ProfitTillConstants.AUTH_PASSWORD);
214
                String urlOpen = desEncrypter.decrypt(url.getQueryParameter("key"));
215
                String campaignUserId=urlOpen.split("user_id=")[1];
216
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
217
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
218
                t.send(new HitBuilders.EventBuilder()
219
                        .setCategory("Message/Email")
220
                        .setAction("Message/Email Opened For User Id " + UtilityFunctions.campaignUserId(url))
221
                        .setLabel("Campaign Id " + campaignId)
222
                        .build());
223
 
224
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
225
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,UtilityFunctions.campaignUserId(url),"Message","Message Opened",campaignId),
226
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
227
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
228
 
229
                nameValuePairsGcm = new ArrayList<>();
230
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",campaignUserId));
231
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
232
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
233
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
234
                new NotificationOpenedData().execute(nameValuePairsGcm);
235
                flag=20;
236
                notificationURL=urlOpen.replace("?user_id="+campaignUserId,"?user_id="+userData.getString("id",""));
237
            }else if (url.getQueryParameter("intent_type").equalsIgnoreCase("native")){
238
                String campaignId = url.getQueryParameter("campaign");
239
                DESEncrypter desEncrypter = new DESEncrypter(ProfitTillConstants.AUTH_PASSWORD);
240
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
241
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
242
                t.send(new HitBuilders.EventBuilder()
243
                        .setCategory("Message/Email")
244
                        .setAction("Message/Email Opened For User Id " + userData.getString("id",""))
245
                        .setLabel("Campaign Id " + campaignId)
246
                        .build());
247
 
248
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
249
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Message","Message Opened",campaignId),
250
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
251
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
252
 
253
                nameValuePairsGcm = new ArrayList<>();
254
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
255
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
256
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
257
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
258
                new NotificationOpenedData().execute(nameValuePairsGcm);
259
 
260
                if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("profile")){
261
                    flag=15;
262
                }
263
                else if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("contact")){
264
                    flag=6;
265
                }
266
                else if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("tutorial")){
267
                    flag=7;
268
                }else{
269
                    flag=20;
270
                    notificationURL = apiData.getString("mobile.website.url","http://api.profittill.com/deals")+"?user_id=" + userData.getString("id","");
271
                }
272
            }else if (url.getQueryParameter("intent_type").equalsIgnoreCase("update")){
273
                String campaignId = url.getQueryParameter("campaign");
274
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
275
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
276
                t.send(new HitBuilders.EventBuilder()
277
                        .setCategory("Message/Email")
278
                        .setAction("Message/Email Opened For User Id " + userData.getString("id",""))
279
                        .setLabel("Campaign Id " + campaignId)
280
                        .build());
281
 
282
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
283
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Message","Message Opened",campaignId),
284
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
285
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
286
 
287
                nameValuePairsGcm = new ArrayList<>();
288
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
289
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
290
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
291
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
292
                new NotificationOpenedData().execute(nameValuePairsGcm);
293
 
294
                Intent intent = null;
295
                try {
296
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getApplicationContext().getPackageName()));
297
                } catch (android.content.ActivityNotFoundException anfe) {
298
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getApplicationContext().getPackageName()));
299
                }
300
                startActivity(intent);
301
            }else{
302
                flag=20;
303
                notificationURL = apiData.getString("mobile.website.url","http://api.profittill.com/deals")+"?user_id=" + userData.getString("id","");
304
            }
17066 manas 305
        }else if(getIntent().getAction()=="11"){
306
            flag=11;
14792 manas 307
        }else {
308
            Bundle i = getIntent().getExtras();
309
            if (i != null) {
310
                flag = Integer.parseInt(i.getString("displayView"));
311
                if (flag == 31) {
312
                    redirectUrl = i.getString("redirectUrl");
313
                }
314
            }
315
        }
316
 
317
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
318
        getSupportActionBar().setIcon(R.drawable.logo_cirlce_1);
319
        getSupportActionBar().setDisplayShowCustomEnabled(true);
320
        getSupportActionBar().setDisplayShowTitleEnabled(false);
321
 
322
        try {
323
            ViewConfiguration config = ViewConfiguration.get(this);
324
            Field menuKeyField = ViewConfiguration.class
325
                    .getDeclaredField("sHasPermanentMenuKey");
326
            if (menuKeyField != null) {
327
                menuKeyField.setAccessible(true);
328
                menuKeyField.setBoolean(config, false);
329
            }
330
        } catch (Exception ex) {
331
            Log.d("Exception","Message"+ex);
332
        }
333
 
334
        if(type1!=null && type1.equalsIgnoreCase("google")) {
335
            mGoogleApiClient = new GoogleApiClient.Builder(this)
336
                    .addConnectionCallbacks(this)
337
                    .addOnConnectionFailedListener(this).addApi(Plus.API)
338
                    .addScope(Plus.SCOPE_PLUS_LOGIN).build();
339
            mGoogleApiClient.connect();
340
        }
341
 
16310 manas 342
        mTitle = mDrawerTitle = getTitle();
343
 
344
        navDrawerView = (LinearLayout) findViewById(R.id.navDrawerView);
345
        mPlanetTitles = getResources().getStringArray(R.array.stores_array);
17092 manas 346
        mHelpTtiles= getResources().getStringArray(R.array.help_array);
16310 manas 347
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
348
        mDrawerList = (ExpandableListView) findViewById(R.id.nav_left_drawer);
349
 
350
        listParent = new ArrayList<ExpandableNavigationItem>();
351
        listDataChild = new HashMap<String, List<String>>();
352
        listParent.add(new ExpandableNavigationItem(getString(R.string.Deals)));
353
        listParent.add(new ExpandableNavigationItem(getString(R.string.Search)));
354
        listParent.add(new ExpandableNavigationItem(getString(R.string.Stores)));
17092 manas 355
        listParent.add(new ExpandableNavigationItem(getString(R.string.Help)));
16310 manas 356
        listDataChild.put(getString(R.string.Deals), new ArrayList<String>());
357
        listDataChild.put(getString(R.string.Search), new ArrayList<String>());
358
        listDataChild.put(getString(R.string.Stores), Arrays.asList(mPlanetTitles));
17092 manas 359
        listDataChild.put(getString(R.string.Help), Arrays.asList(mHelpTtiles));
16310 manas 360
 
361
        customAdapter = new ExpandableNavigationAdapter(this, listParent, listDataChild);
17092 manas 362
 
16310 manas 363
        mDrawerList.setAdapter(customAdapter);
364
        mDrawerList.setChoiceMode(ExpandableListView.CHOICE_MODE_SINGLE);
365
 
366
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
367
        getSupportActionBar().setHomeButtonEnabled(true);
368
        mDrawerList.setOnChildClickListener(new ExpandableListViewChildClick());
16453 manas 369
        mDrawerList.setOnGroupExpandListener(new ExpandableGroupExpandListener());
17092 manas 370
        mDrawerToggle = new ActionBarDrawerToggle(this,
371
                mDrawerLayout,
372
                R.drawable.menu_button_2,
373
                R.string.drawer_open,
374
                R.string.drawer_close
16310 manas 375
        ) {
376
            public void onDrawerClosed(View view) {
377
                if(titleVisible!=0) {
378
                    if(titleVisible==1)
379
                        getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);
380
 
381
                    if(titleVisible==2)
382
                        getSupportActionBar().setCustomView(R.layout.actionbarprefernces);
383
 
384
                    if(titleVisible==3)
385
                        getSupportActionBar().setCustomView(R.layout.actionbarmywallet);
386
 
387
                    if(titleVisible==4)
388
                        getSupportActionBar().setCustomView(R.layout.actionbarmyorders);
389
 
390
                    if(titleVisible==5)
391
                        getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);
392
 
393
                    if(titleVisible==6)
394
                        getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
395
                }
396
                shouldGoInvisible = false;
397
                invalidateOptionsMenu();
398
            }
399
 
400
            public void onDrawerOpened(View drawerView) {
401
                getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
402
                shouldGoInvisible = true;
403
                invalidateOptionsMenu();
404
            }
405
        };
406
        mDrawerLayout.setDrawerListener(mDrawerToggle);
407
 
408
 
409
        if (savedInstanceState == null) {
410
 
411
            if (flag == 7) {
412
                getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
17464 manas 413
                displayHelpChildView(1);
16310 manas 414
            } else if (flag == 6) {
415
                getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
17464 manas 416
                displayHelpChildView(0);
16310 manas 417
            } else if (flag == 15) {
418
                getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
419
                MyProfile myProfile = new MyProfile();
420
                this.getFragmentManager().beginTransaction()
421
                        .replace(R.id.frame_container, myProfile, "Mike")
422
                        .addToBackStack(null)
423
                        .commit();
424
            }else if (flag == 20) {
425
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
426
                JSONObject propsNotification = new JSONObject();
427
                try {
428
                    mixpanel.identify(userData.getString("id",null));
429
                    propsNotification.put("Screen", "Notification Url opened");
430
                    mixpanel.track("Notification Opened", propsNotification);
431
                } catch (JSONException e) {
432
                    e.printStackTrace();
433
                }
434
                Bundle args = new Bundle();
435
                DealsHomeFragment notifcationFragment = new DealsHomeFragment();
436
                args.putString("key", notificationURL);
437
                this.getFragmentManager().beginTransaction()
438
                        .replace(R.id.frame_container, notifcationFragment, "Mike")
439
                        .addToBackStack(null)
440
                        .commit();
441
                notifcationFragment.setArguments(args);
442
            }else if (flag == 31) {
443
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
444
                Bundle args = new Bundle();
445
                DealsHomeFragment redirectUrlFragment = new DealsHomeFragment();
446
                args.putString("key", redirectUrl);
447
                this.getFragmentManager().beginTransaction()
448
                        .replace(R.id.frame_container, redirectUrlFragment, "Mike")
449
                        .addToBackStack(null)
450
                        .commit();
451
                redirectUrlFragment.setArguments(args);
17066 manas 452
            }else if (flag == 11) {
453
                getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
454
                Bundle args = new Bundle();
455
                AboutUsFragment redirectUrlFragment = new AboutUsFragment();
456
                args.putString("key", redirectUrl);
457
                this.getFragmentManager().beginTransaction()
458
                        .replace(R.id.frame_container, redirectUrlFragment, "Mike")
459
                        .addToBackStack(null)
460
                        .commit();
461
                redirectUrlFragment.setArguments(args);
16310 manas 462
            }else {
463
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
464
                displayView(0);
465
            }
14792 manas 466
        }
467
    }
468
 
17092 manas 469
    private class ExpandableGroupExpandListener implements ExpandableListView.OnGroupExpandListener {
14792 manas 470
        @Override
16453 manas 471
        public void onGroupExpand(int groupPosition) {
472
            int len = customAdapter.getGroupCount();
473
            int index = mDrawerList.getFlatListPosition(ExpandableListView.getPackedPositionForGroup(groupPosition));
474
            mDrawerList.setItemChecked(index, true);
16310 manas 475
            String parentTitle = ((ExpandableNavigationItem) customAdapter.getGroup(groupPosition)).getTitle();
17092 manas 476
 
477
            if (groupPosition == 0 || groupPosition == 1) {
478
                displayView(groupPosition);
16310 manas 479
                mDrawerLayout.closeDrawer(navDrawerView);
480
                mDrawerList.collapseGroup(2);
17092 manas 481
                mDrawerList.collapseGroup(3);
482
            } else {
483
                if (groupPosition == 3) {
484
                    if (mDrawerList.isGroupExpanded(2)) {
485
                        mDrawerList.collapseGroup(2);
486
                    }
487
                } else if (groupPosition == 2) {
488
                    if (mDrawerList.isGroupExpanded(3)) {
489
                        mDrawerList.collapseGroup(3);
490
                    }
491
                }
16310 manas 492
            }
493
            setActionBarTitlte(parentTitle);
17092 manas 494
        }
16310 manas 495
 
496
    }
497
 
16453 manas 498
    private class ExpandableListViewChildClick implements ExpandableListView.OnChildClickListener {
16310 manas 499
        @Override
500
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
501
            int index = parent.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition, childPosition));
502
            parent.setItemChecked(index, true);
503
            mDrawerLayout.closeDrawer(navDrawerView);
17092 manas 504
            if(groupPosition==2) {
505
                displayChildView(childPosition);
506
            }else if(groupPosition==3){
507
                if (childPosition==0) {
508
                    getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
509
                }
510
                else if (childPosition==1) {
511
                    getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
512
                }
513
                else if (childPosition==2) {
514
                    getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
515
                }
516
                displayHelpChildView(childPosition);
517
            }
16310 manas 518
            return false;
519
        }
17092 manas 520
 
16310 manas 521
    }
17092 manas 522
 
523
    private void displayHelpChildView(int position) {
524
        titleVisible=0;
525
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
526
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
527
        Fragment fragment = null;
528
        Map<String, String> jsonParams;
529
        switch (position) {
530
            case 0:
531
                JSONObject propsContactUs = new JSONObject();
532
                try {
533
                    mixpanel.identify(userData.getString("id",null));
534
                    propsContactUs.put("Screen", "Contact Us");
535
                    mixpanel.track("Contact Us", propsContactUs);
536
                } catch (JSONException e) {
537
                    e.printStackTrace();
538
                }
539
                t.send(new HitBuilders.EventBuilder()
540
                        .setCategory("Menu")
541
                        .setAction("Contact Us ")
542
                        .setLabel("Contact us Clicked")
543
                        .build());
544
                fragment = new ContactUsFragment();
545
                break;
546
            case 1:
547
                JSONObject propsHowItWorks = new JSONObject();
548
                try {
549
                    mixpanel.identify(userData.getString("id",null));
550
                    propsHowItWorks.put("Screen", "How it Works");
551
                    mixpanel.track("How it Works", propsHowItWorks);
552
                } catch (JSONException e) {
553
                    e.printStackTrace();
554
                }
555
                t.send(new HitBuilders.EventBuilder()
556
                        .setCategory("Menu")
557
                        .setAction("Tutorials ")
558
                        .setLabel("Tutorials Clicked")
559
                        .build());
560
                fragment = new HowItWorksFragment();
561
                break;
562
            case 2:
563
                JSONObject propsAboutUs = new JSONObject();
564
                try {
565
                    mixpanel.identify(userData.getString("id",null));
566
                    propsAboutUs.put("Screen", "About Us");
567
                    mixpanel.track("About Us", propsAboutUs);
568
                } catch (JSONException e) {
569
                    e.printStackTrace();
570
                }
571
                t.send(new HitBuilders.EventBuilder()
572
                        .setCategory("Menu")
573
                        .setAction("About Us ")
574
                        .setLabel("About us Clicked")
575
                        .build());
576
                fragment = new AboutUsFragment();
577
                break;
578
            default:
579
                break;
580
        }
19946 manas 581
        /*if (fragment != null) {
17092 manas 582
            FragmentManager fragmentManager = getFragmentManager();
583
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
584
 
585
        } else {
586
            Log.e("MainActivity", "Error in creating fragment");
19946 manas 587
        }*/
588
        if (fragment != null) {
589
            FragmentManager fragmentManager = getFragmentManager();
590
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
591
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
592
            System.gc();
593
        } else {
594
            Log.e("MainActivity", "Error in creating fragment");
17092 manas 595
        }
19946 manas 596
 
17092 manas 597
    }
598
 
14792 manas 599
    @Override
600
    public boolean onCreateOptionsMenu(Menu menu) {
601
        mainMenu=menu;
602
        super.onCreateOptionsMenu(menu);
603
        getMenuInflater().inflate(R.menu.menu_main, menu);
19653 manas 604
        RelativeLayout badgeLayout = (RelativeLayout) mainMenu.findItem(R.id.action_notifications).getActionView();
605
        ImageView k = (ImageView) badgeLayout.findViewById(R.id.inAppNotificationImage);
606
        TextView notifciationCount = (TextView) badgeLayout.findViewById(R.id.inAppNotificationText);
607
        k.setOnClickListener(new View.OnClickListener() {
608
            @Override
609
            public void onClick(View v) {
610
                Bundle args = new Bundle();
611
                args.putString("key", apiData.getString("notification.page.url", "http://api.profittill.com/users/usernotification") + "?user_id=" + userData.getString("id", "") + "&android_id=" + UtilityFunctions.androidId(MainActivity.this));
612
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
613
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Icon","Notification Icon Clicked"),
614
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
615
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 616
 
19653 manas 617
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
618
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
619
                t.send(new HitBuilders.EventBuilder()
620
                        .setCategory("Menu")
621
                        .setAction("Search ")
622
                        .setLabel("Search Clicked")
623
                        .build());
624
                DealsHomeFragment notificationFragment = new DealsHomeFragment();
625
                getFragmentManager().beginTransaction()
626
                        .replace(R.id.frame_container, notificationFragment, "Mike")
627
                        .addToBackStack(null)
628
                        .commit();
629
                notificationFragment.setArguments(args);
630
            }
631
        });
632
 
633
        if(userData.getInt("notification_count",0)!=0) {
634
            notifciationCount.setVisibility(View.VISIBLE);
635
            notifciationCount.setText(userData.getInt("notification_count",0)+"");
636
        }else{
637
            notifciationCount.setVisibility(View.GONE);
638
        }
14792 manas 639
        return true;
640
    }
641
 
642
    @Override
643
    public boolean onOptionsItemSelected(MenuItem item) {
644
        Fragment menuFragment= null;
645
        JSONObject props = new JSONObject();
646
        Bundle args = new Bundle();
647
        String id = userData.getString("id",null);
648
        if (mDrawerToggle.onOptionsItemSelected(item)) {
649
            return true;
650
        }
651
        getSupportActionBar().setDisplayShowCustomEnabled(true);
652
        switch (item.getItemId()) {
653
            case R.id.action_settings:
19653 manas 654
                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
655
                Intent i = new Intent(this, PollingService.class);
656
                PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
657
                am.cancel(pi);
658
                userDataEditor.putString("alarm_set","false").commit();
14792 manas 659
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
660
                android.webkit.CookieSyncManager.createInstance(this);
661
                cookieManager.removeAllCookie();
662
                try {
663
                    mixpanel.identify(userData.getString("id",null));
664
                    props.put("Screen", "Signing Out");
665
                    mixpanel.track("Signing Out", props);
666
                } catch (JSONException e) {
667
                    e.printStackTrace();
668
                }
16278 manas 669
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
670
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Sign Out","Sign Out Clicked"),
671
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
672
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 673
                try{
674
                    if (mGoogleApiClient.isConnected()) {
675
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
676
                        mGoogleApiClient.disconnect();
677
                        mGoogleApiClient.connect();
678
                        userDataEditor.clear().commit();
679
                        inviteDataEditor.clear().commit();
680
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
681
                    }
682
                    else if(Session.getActiveSession() != null){
683
                        Session.getActiveSession().closeAndClearTokenInformation();
684
                        Session.setActiveSession(null);
685
                        userDataEditor.clear().commit();
686
                        inviteDataEditor.clear().commit();
687
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
688
                    }
689
                    else{
690
                        if(!mGoogleApiClient.isConnected() || Session.getActiveSession()==null){
691
                            userDataEditor.clear().commit();
692
                            inviteDataEditor.clear().commit();
693
                            startActivity(new Intent(MainActivity.this, LoginActivity.class));
694
                        }
695
 
696
 
697
                    }
698
                }catch (Exception e){
699
                    userDataEditor.clear().commit();
700
                    startActivity(new Intent(MainActivity.this, LoginActivity.class));
701
                }
702
                return true;
703
 
704
            case R.id.my_wallet:
705
                titleVisible=3;
706
                getSupportActionBar().setCustomView(R.layout.actionbarmywallet);
707
                try {
708
                    mixpanel.identify(userData.getString("id",null));
709
                    props.put("Screen", "My Wallet");
710
                    mixpanel.track("My Wallet", props);
711
                } catch (JSONException e) {
712
                    e.printStackTrace();
713
                }
16278 manas 714
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
715
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Wallet","My Wallet Clicked"),
716
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
717
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 718
                MyWallet myWallet= new MyWallet();
719
                this.getFragmentManager().beginTransaction()
720
                        .replace(R.id.frame_container, myWallet,"Mike")
721
                        .addToBackStack(null)
722
                        .commit();
723
                return true;
724
            case R.id.pending_cashback:
725
                titleVisible=5;
726
                getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);
727
                try {
728
                    mixpanel.identify(userData.getString("id",null));
729
                    props.put("Screen", "Cashback Status");
730
                    mixpanel.track("Cashback Status", props);
731
                } catch (JSONException e) {
732
                    e.printStackTrace();
733
                }
16278 manas 734
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
735
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Cashback Status","Cashback Status Clicked"),
736
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
737
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16080 manas 738
                args.putString("key", apiData.getString("pendingcashback.url",null)+"?user_id="+id);
739
                DealsHomeFragment orderFragment= new DealsHomeFragment();
740
                this.getFragmentManager().beginTransaction()
741
                        .replace(R.id.frame_container, orderFragment,"Mike")
742
                        .addToBackStack(null)
14792 manas 743
                        .commit();
16080 manas 744
                orderFragment.setArguments(args);
745
 
14792 manas 746
                return true;
747
            case R.id.my_favorites:
748
                titleVisible=1;
749
                getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);
750
                try {
751
                    mixpanel.identify(userData.getString("id",null));
752
                    props.put("Screen", "My Favorites");
753
                    mixpanel.track("My Favorites", props);
754
                } catch (JSONException e) {
755
                    e.printStackTrace();
756
                }
16278 manas 757
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
758
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Favorites","My Favorites Clicked"),
759
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
760
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 761
                args.putString("key", apiData.getString("myfavourite.url",null)+"?user_id="+id);
762
                DealsHomeFragment favoritesFragment= new DealsHomeFragment();
763
                this.getFragmentManager().beginTransaction()
764
                        .replace(R.id.frame_container, favoritesFragment,"Mike")
765
                        .addToBackStack(null)
766
                        .commit();
767
                favoritesFragment.setArguments(args);
768
                return true;
769
            case R.id.my_profile:
770
                titleVisible=6;
771
                getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
772
                try {
773
                    mixpanel.identify(userData.getString("id",null));
774
                    props.put("Screen", "My Profile");
775
                    mixpanel.track("My profile", props);
776
                } catch (JSONException e) {
777
                    e.printStackTrace();
778
                }
16278 manas 779
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
780
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Profile","My Profile Clicked"),
781
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
782
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 783
                MyProfile myProfile= new MyProfile();
784
                this.getFragmentManager().beginTransaction()
785
                        .replace(R.id.frame_container, myProfile,"Mike")
786
                        .addToBackStack(null)
787
                        .commit();
788
                return true;
789
            case R.id.my_order:
790
                titleVisible=4;
791
                getSupportActionBar().setCustomView(R.layout.actionbarmyorders);
792
                try {
793
                    mixpanel.identify(userData.getString("id",null));
794
                    props.put("Screen", "My Orders");
795
                    mixpanel.track("My Orders", props);
796
                } catch (JSONException e) {
797
                    e.printStackTrace();
798
                }
16278 manas 799
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
800
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Orders","My Orders Clicked"),
801
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
802
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 803
                args.putString("key", apiData.getString("myorders.url",null)+"?user_id="+id);
16080 manas 804
                DealsHomeFragment preferenceFragment= new DealsHomeFragment();
14792 manas 805
                this.getFragmentManager().beginTransaction()
16080 manas 806
                        .replace(R.id.frame_container, preferenceFragment,"Mike")
14792 manas 807
                        .addToBackStack(null)
808
                        .commit();
16080 manas 809
                preferenceFragment.setArguments(args);
14792 manas 810
 
811
                return true;
812
            case R.id.my_preferences:
813
                titleVisible=2;
814
                getSupportActionBar().setCustomView(R.layout.actionbarprefernces);
815
                try {
816
                    mixpanel.identify(userData.getString("id",null));
817
                    props.put("Screen", "My Preferences");
818
                    mixpanel.track("My Preferences", props);
819
                } catch (JSONException e) {
820
                    e.printStackTrace();
821
                }
16080 manas 822
                userDataEditor.remove("preferences").commit();
16278 manas 823
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
824
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Preferences","My Preferences Clicked"),
825
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
826
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 827
                PreferencesFragment my_preferences = new PreferencesFragment();
828
                this.getFragmentManager().beginTransaction()
829
                        .replace(R.id.frame_container, my_preferences,"Mike")
830
                        .addToBackStack(null)
831
                        .commit();
832
 
833
                return true;
834
           default:
835
                return super.onOptionsItemSelected(item);
836
        }
837
 
838
 
839
    }
840
    public void signOutFromGplus() {
841
        if (mGoogleApiClient.isConnected()) {
842
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
843
            mGoogleApiClient.disconnect();
844
            mGoogleApiClient.connect();
845
            glogout=true;
846
            userDataEditor.remove("id");
847
            userDataEditor.remove("type");
848
            userDataEditor.remove("email");
849
            userDataEditor.commit();
850
        } else {
851
            glogout=false;
852
            }
853
    }
854
 
855
    @Override
856
    public void onConnected(Bundle bundle) {
857
 
858
    }
859
 
860
    @Override
861
    public void onConnectionSuspended(int i) {
862
 
863
    }
864
 
865
    @Override
866
    public void onConnectionFailed(ConnectionResult connectionResult) {
867
 
868
    }
869
 
870
    @Override
871
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
872
        super.onSaveInstanceState(outState, outPersistentState);
873
    }
874
    @Override
875
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
876
        super.onRestoreInstanceState(savedInstanceState);
16080 manas 877
        Intent i= new Intent(MainActivity.this,MainActivity.class);
14792 manas 878
        i.putExtra("displayView","0");
879
        startActivity(i);
880
    }
881
 
882
    @Override
883
    public boolean onMenuOpened(int featureId, Menu menu)
884
    {
885
        if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
886
            if(menu.getClass().getSimpleName().equals("MenuBuilder")){
887
                try{
888
                    Method m = menu.getClass().getDeclaredMethod(
889
                            "setOptionalIconsVisible", Boolean.TYPE);
890
                    m.setAccessible(true);
891
                    m.invoke(menu, true);
892
 
893
                }
894
                catch(Exception e){
895
                    throw new RuntimeException(e);
896
                }
897
            }
898
        }
899
        return super.onMenuOpened(featureId, menu);
900
    }
901
 
902
    private void displayView(int position) {
903
        titleVisible=0;
16278 manas 904
 
14792 manas 905
        Bundle args = new Bundle();
906
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
907
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
908
        String id = userData.getString("id",null);
909
        Fragment fragment = null;
910
        switch (position) {
911
            case 0:
912
                JSONObject props = new JSONObject();
913
                try {
914
                    mixpanel.getPeople().set( "$last_login",new Date());
915
                    mixpanel.identify(userData.getString("id",null));
916
                    props.put("Screen", "Deals Screen");
917
                    mixpanel.track("Deals", props);
918
                } catch (JSONException e) {
919
                    e.printStackTrace();
920
                }
921
 
922
                t.send(new HitBuilders.EventBuilder()
923
                        .setCategory("Menu")
924
                        .setAction("Deals ")
925
                        .setLabel("Deals Clicked")
926
                        .build());
16278 manas 927
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
928
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Deals","Deals Clicked"),
929
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
930
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
19946 manas 931
                args.putString("key", apiData.getString("mobile.website.url","")+"?user_id="+id+"&version="+UtilityFunctions.getVersionCode());
14792 manas 932
                fragment = new DealsHomeFragment();
933
                fragment.setArguments(args);
934
                break;
935
            case 1:
936
                JSONObject props1 = new JSONObject();
937
                try {
938
                    mixpanel.identify(userData.getString("id",null));
939
                    props1.put("Screen", "Search");
940
                    mixpanel.track("Search", props1);
941
                } catch (JSONException e) {
942
                    e.printStackTrace();
943
                }
944
                t.send(new HitBuilders.EventBuilder()
945
                        .setCategory("Menu")
946
                        .setAction("Search ")
947
                        .setLabel("Search Clicked")
948
                        .build());
16278 manas 949
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
950
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Search","Search Clicked"),
951
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
952
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 953
                args.putString("key", apiData.getString("search.url",null)+"?user_id="+id);
954
                fragment = new DealsHomeFragment();
955
                fragment.setArguments(args);
956
                break;
16310 manas 957
            default:
958
                break;
959
        }
19946 manas 960
/*        if (fragment != null) {
16310 manas 961
            FragmentManager fragmentManager = getFragmentManager();
962
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
963
 
964
        } else {
965
            Log.e("MainActivity", "Error in creating fragment");
19946 manas 966
        }*/
967
 
968
        if (fragment != null) {
969
            FragmentManager fragmentManager = getFragmentManager();
970
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
971
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
972
            System.gc();
973
        } else {
974
            Log.e("MainActivity", "Error in creating fragment");
16310 manas 975
        }
976
    }
977
 
978
 
979
    private void displayChildView(int position) {
980
        titleVisible=0;
981
        Bundle args = new Bundle();
982
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
983
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
984
        String id = userData.getString("id", null);
985
        Fragment fragment = null;
986
        Map<String, String> jsonParams;
987
        switch (position) {
988
            case 0:
14792 manas 989
                JSONObject propsAmazon = new JSONObject();
990
                try {
991
                    mixpanel.identify(userData.getString("id",null));
992
                    propsAmazon.put("Screen", "Amazon");
993
                    mixpanel.track("Amazon", propsAmazon);
994
                } catch (JSONException e) {
995
                    e.printStackTrace();
996
                }
997
                t.send(new HitBuilders.EventBuilder()
998
                        .setCategory("Menu")
999
                        .setAction("Amazon ")
1000
                        .setLabel("Amazon Clicked")
1001
                        .build());
16278 manas 1002
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1003
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Amazon","Amazon Clicked"),
1004
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1005
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16080 manas 1006
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,")),ProfitTillConstants.AMAZON));
14792 manas 1007
                fragment = new DealsHomeFragment();
1008
                fragment.setArguments(args);
1009
                break;
16310 manas 1010
            case 1:
14792 manas 1011
                JSONObject propsFlipkart = new JSONObject();
1012
                try {
1013
                    mixpanel.identify(userData.getString("id",null));
1014
                    propsFlipkart.put("Screen", "Flipkart");
1015
                    mixpanel.track("Flipkart", propsFlipkart);
1016
                } catch (JSONException e) {
1017
                    e.printStackTrace();
1018
                }
1019
                t.send(new HitBuilders.EventBuilder()
1020
                        .setCategory("Menu")
1021
                        .setAction("Flipkart ")
1022
                        .setLabel("Flipkart Clicked")
1023
                        .build());
16278 manas 1024
 
1025
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1026
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Flipkart","Flipkart Clicked"),
1027
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1028
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16080 manas 1029
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,")),ProfitTillConstants.FLIPKART));
14792 manas 1030
                fragment = new DealsHomeFragment();
1031
                fragment.setArguments(args);
1032
                break;
16310 manas 1033
            case 2:
16453 manas 1034
                t.send(new HitBuilders.EventBuilder()
1035
                        .setCategory("Menu")
17092 manas 1036
                        .setAction("HomeShop18 ")
1037
                        .setLabel("HomeShop18 Clicked")
1038
                        .build());
1039
 
1040
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1041
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","HomeShop18","HomeShop18 Clicked"),
1042
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1043
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1044
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,paytm=6,homeshop18=7,")),ProfitTillConstants.HOMESHOP18));
1045
                fragment = new DealsHomeFragment();
1046
                fragment.setArguments(args);
1047
                break;
1048
            case 3:
1049
                t.send(new HitBuilders.EventBuilder()
1050
                        .setCategory("Menu")
16453 manas 1051
                        .setAction("Paytm ")
1052
                        .setLabel("Paytm Clicked")
1053
                        .build());
1054
 
1055
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1056
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Paytm","Paytm Clicked"),
1057
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1058
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1059
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,")),ProfitTillConstants.PAYTM));
1060
                fragment = new DealsHomeFragment();
1061
                fragment.setArguments(args);
1062
                break;
17092 manas 1063
            case 4:
14792 manas 1064
                JSONObject propsSaholic = new JSONObject();
1065
                try {
1066
                    mixpanel.identify(userData.getString("id",null));
1067
                    propsSaholic.put("Screen", "Saholic");
1068
                    mixpanel.track("Saholic", propsSaholic);
1069
                } catch (JSONException e) {
1070
                    e.printStackTrace();
1071
                }
1072
                t.send(new HitBuilders.EventBuilder()
1073
                        .setCategory("Menu")
1074
                        .setAction("Saholic ")
1075
                        .setLabel("Saholic Clicked")
1076
                        .build());
16278 manas 1077
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1078
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Saholic","Saholic Clicked"),
1079
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1080
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 1081
                args.putString("key", apiData.getString("saholic.autologin.url","")+"?user_id="+userData.getString("id",""));
1082
                fragment = new DealsHomeFragment();
1083
                fragment.setArguments(args);
1084
                break;
17092 manas 1085
            case 5:
16080 manas 1086
                JSONObject propsShopclues = new JSONObject();
1087
                try {
1088
                    mixpanel.identify(userData.getString("id",null));
1089
                    propsShopclues.put("Screen", "Shopclues");
1090
                    mixpanel.track("Shopclues", propsShopclues);
1091
                } catch (JSONException e) {
1092
                    e.printStackTrace();
1093
                }
1094
                t.send(new HitBuilders.EventBuilder()
1095
                        .setCategory("Menu")
1096
                        .setAction("Shopclues ")
1097
                        .setLabel("Shopclues Clicked")
1098
                        .build());
16310 manas 1099
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1100
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Shopclues","Shopclues Clicked"),
1101
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1102
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1103
                String url=apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code","amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,")),ProfitTillConstants.SHOPCLUES);
16080 manas 1104
                args.putString("key", url);
16310 manas 1105
                if(Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
1106
                    CookieSyncManager.createInstance(getApplicationContext());
1107
                    CookieManager cookieManager1 = CookieManager.getInstance();
1108
                    cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
1109
                    cookieManager1.setCookie(url, "walletAuthentication=true");
1110
                    cookieManager1.setCookie(url, "shopcluesActive=true");
1111
                }
16080 manas 1112
                fragment = new DealsHomeFragment();
1113
                fragment.setArguments(args);
16310 manas 1114
                break;
17092 manas 1115
            case 6:
14792 manas 1116
                JSONObject propsSnapdeal = new JSONObject();
1117
                try {
1118
                    mixpanel.identify(userData.getString("id",null));
1119
                    propsSnapdeal.put("Screen", "Snapdeal");
1120
                    mixpanel.track("Snapdeal", propsSnapdeal);
1121
                } catch (JSONException e) {
1122
                    e.printStackTrace();
1123
                }
1124
                t.send(new HitBuilders.EventBuilder()
1125
                        .setCategory("Menu")
1126
                        .setAction("Snapdeal ")
1127
                        .setLabel("Snapdeal Clicked")
1128
                        .build());
16278 manas 1129
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1130
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Snapdeal","Snapdeal Clicked"),
1131
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1132
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16310 manas 1133
                args.putString("key", apiData.getString("affiliate.url.redirect", "") + "?user_id=" + userData.getString("id", "") + "&store_id=" + UtilityFunctions.getNewStoreId(UtilityFunctions.generateStoreMap(apiData.getString("stores.code", "amazon=1,flipkart=2,snapdeal=3,spice=4,shopclues=5,")), ProfitTillConstants.SNAPDEAL));
14792 manas 1134
                fragment = new DealsHomeFragment();
1135
                fragment.setArguments(args);
1136
                break;
1137
            default:
1138
                break;
1139
        }
19946 manas 1140
        /*if (fragment != null) {
14792 manas 1141
            FragmentManager fragmentManager = getFragmentManager();
1142
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
16310 manas 1143
 
1144
        } else {
1145
            Log.e("MainActivity", "Error in creating fragment");
19946 manas 1146
        }*/
1147
        if (fragment != null) {
1148
            FragmentManager fragmentManager = getFragmentManager();
1149
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
1150
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
1151
            System.gc();
1152
        } else {
1153
            Log.e("MainActivity", "Error in creating fragment");
14792 manas 1154
        }
1155
    }
1156
 
1157
 
16310 manas 1158
    public void setActionBarTitlte(String parentTitle){
1159
        if (parentTitle.equals("Deals")) {
1160
            getSupportActionBar().setCustomView(R.layout.actionbardeals);
1161
        }
1162
        if (parentTitle.equalsIgnoreCase("Visit Other Stores")) {
1163
            getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
1164
        }
16453 manas 1165
        if (parentTitle.equals("FAQ")) {
16310 manas 1166
            getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
1167
        }
1168
        if (parentTitle.equals("Contact Us")) {
1169
            getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
1170
        }
1171
        if (parentTitle.equals("Search")) {
1172
            getSupportActionBar().setCustomView(R.layout.actionbarsearch);
1173
        }
1174
        if (parentTitle.equals("How it Works")) {
1175
            getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
1176
        }
1177
    }
14792 manas 1178
 
1179
    @Override
1180
    protected void onPostCreate(Bundle savedInstanceState) {
1181
        super.onPostCreate(savedInstanceState);
1182
        mDrawerToggle.syncState();
1183
    }
1184
 
1185
    @Override
1186
    public boolean onPrepareOptionsMenu(Menu menu) {
1187
        boolean drawerOpen = shouldGoInvisible;
1188
        hideMenuItems(menu, !drawerOpen);
1189
        return super.onPrepareOptionsMenu(menu);
1190
    }
1191
    private void hideMenuItems(Menu menu, boolean visible)
1192
    {
1193
       for(int i = 0; i < menu.size(); i++){
1194
        menu.getItem(i).setVisible(visible);
1195
       }
1196
    }
1197
    @Override
1198
    public void onConfigurationChanged(Configuration newConfig) {
1199
        super.onConfigurationChanged(newConfig);
1200
        mDrawerToggle.onConfigurationChanged(newConfig);
1201
    }
1202
    @Override
1203
    public boolean onKeyUp(int keycode, KeyEvent e) {
1204
        switch(keycode) {
1205
            case KeyEvent.KEYCODE_MENU:
1206
 
1207
                if (mainMenu !=null) {
1208
                    mainMenu.performIdentifierAction(R.id.overflowMenu,0);
1209
                }
1210
        }
1211
 
1212
        return super.onKeyUp(keycode, e);
1213
    }
1214
    @Override
1215
    public boolean onKeyDown(int keyCode, KeyEvent event) {
1216
 
1217
        switch(keyCode) {
1218
            case KeyEvent.KEYCODE_MENU:
1219
                  if (mainMenu !=null) {
1220
                  mainMenu.performIdentifierAction(R.id.overflowMenu,0);
1221
                  }
1222
        }
1223
        return super.onKeyUp(keyCode, event);
1224
    }
1225
    private Menu mainMenu;
1226
    public final boolean isInternetOn() {
1227
 
1228
        ConnectivityManager connec =
1229
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
1230
 
1231
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
1232
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
1233
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
1234
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
1235
            return true;
1236
 
1237
        } else if (
1238
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
1239
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
1240
            return false;
1241
        }
1242
        return false;
1243
    }
1244
    class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {
1245
 
1246
        @Override
1247
        protected void onPreExecute() {
1248
            super.onPreExecute();
1249
        }
1250
 
1251
        @Override
1252
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {
1253
 
1254
            try {
1255
                HttpClient httpclient = new DefaultHttpClient();
1256
                HttpPost httppost = new HttpPost(apiData.getString("notification.data.url","http://api.profittill.com/pushnotifications/add"));
1257
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1258
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1259
                HttpResponse response = httpclient.execute(httppost);
1260
                HttpEntity entity = response.getEntity();
1261
                int status = response.getStatusLine().getStatusCode();
1262
 
1263
                nameValuePairsGcm.clear();
1264
            } catch (Exception e) {
17092 manas 1265
                e.printStackTrace();
14792 manas 1266
            }
1267
            return "success";
1268
        }
1269
 
1270
        @Override
1271
        protected void onPostExecute(String result) {
1272
            super.onPostExecute(result);
1273
        }
1274
    }
19653 manas 1275
    @Override
1276
    protected void onResume() {
1277
        super.onResume();
1278
        String userId = userData.getString("id","");
1279
        String androidId=UtilityFunctions.androidId(MainActivity.this);
1280
        if(!userId.isEmpty() && !androidId.isEmpty()) {
1281
            String notificationUrl = apiData.getString("notification.count", "http://45.33.50.227:3001/getNotificationCount") + "?user_id=" + userId + "&android_id=" + androidId;
1282
            new NotificationCount().getCount(MainActivity.this, null, notificationUrl);
1283
        }
1284
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
1285
        Intent i = new Intent(this, PollingService.class);
1286
        PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
1287
        am.cancel(pi);
1288
        am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 1000, 30 * 60 * 1000, pi);
1289
        invalidateOptionsMenu();
1290
    }
14792 manas 1291
}