Subversion Repositories SmartDukaan

Rev

Rev 20406 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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