Subversion Repositories SmartDukaan

Rev

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