Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

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