Subversion Repositories SmartDukaan

Rev

Rev 21188 | 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
 
857
    @Override
858
    public void onConnected(Bundle bundle) {
859
 
860
    }
861
 
862
    @Override
863
    public void onConnectionSuspended(int i) {
864
 
865
    }
866
 
867
    @Override
868
    public void onConnectionFailed(ConnectionResult connectionResult) {
869
 
870
    }
871
 
872
    @Override
873
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
874
        super.onSaveInstanceState(outState, outPersistentState);
875
    }
876
    @Override
877
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
878
        super.onRestoreInstanceState(savedInstanceState);
16080 manas 879
        Intent i= new Intent(MainActivity.this,MainActivity.class);
14792 manas 880
        i.putExtra("displayView","0");
881
        startActivity(i);
882
    }
883
 
884
    @Override
885
    public boolean onMenuOpened(int featureId, Menu menu)
886
    {
887
        if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
888
            if(menu.getClass().getSimpleName().equals("MenuBuilder")){
889
                try{
890
                    Method m = menu.getClass().getDeclaredMethod(
891
                            "setOptionalIconsVisible", Boolean.TYPE);
892
                    m.setAccessible(true);
893
                    m.invoke(menu, true);
894
 
895
                }
896
                catch(Exception e){
897
                    throw new RuntimeException(e);
898
                }
899
            }
900
        }
901
        return super.onMenuOpened(featureId, menu);
902
    }
903
 
904
    private void displayView(int position) {
905
        titleVisible=0;
16278 manas 906
 
14792 manas 907
        Bundle args = new Bundle();
908
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
909
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
910
        String id = userData.getString("id",null);
911
        Fragment fragment = null;
912
        switch (position) {
913
            case 0:
914
                JSONObject props = new JSONObject();
915
                try {
916
                    mixpanel.getPeople().set( "$last_login",new Date());
917
                    mixpanel.identify(userData.getString("id",null));
918
                    props.put("Screen", "Deals Screen");
919
                    mixpanel.track("Deals", props);
920
                } catch (JSONException e) {
921
                    e.printStackTrace();
922
                }
923
 
924
                t.send(new HitBuilders.EventBuilder()
925
                        .setCategory("Menu")
926
                        .setAction("Deals ")
927
                        .setLabel("Deals Clicked")
928
                        .build());
16278 manas 929
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
930
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Deals","Deals Clicked"),
931
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
932
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
21188 rajender 933
                String dealsUrl= apiData.getString("mobile.website.url","http://api.profittill.com/deals");
934
                Map<String,String> paramsMap =new HashMap<String, String>();
935
                paramsMap.put("user_id",id+"&version="+UtilityFunctions.getVersionCode());
936
                args.putString("key",  UtilityFunctions.addParamsToUrl(dealsUrl,paramsMap));
14792 manas 937
                fragment = new DealsHomeFragment();
938
                fragment.setArguments(args);
939
                break;
940
            case 1:
941
                JSONObject props1 = new JSONObject();
942
                try {
943
                    mixpanel.identify(userData.getString("id",null));
944
                    props1.put("Screen", "Search");
945
                    mixpanel.track("Search", props1);
946
                } catch (JSONException e) {
947
                    e.printStackTrace();
948
                }
949
                t.send(new HitBuilders.EventBuilder()
950
                        .setCategory("Menu")
951
                        .setAction("Search ")
952
                        .setLabel("Search Clicked")
953
                        .build());
16278 manas 954
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
955
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Search","Search Clicked"),
956
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
957
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 958
                args.putString("key", apiData.getString("search.url",null)+"?user_id="+id);
959
                fragment = new DealsHomeFragment();
960
                fragment.setArguments(args);
961
                break;
16310 manas 962
            default:
963
                break;
964
        }
19946 manas 965
/*        if (fragment != null) {
16310 manas 966
            FragmentManager fragmentManager = getFragmentManager();
967
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
968
 
969
        } else {
970
            Log.e("MainActivity", "Error in creating fragment");
19946 manas 971
        }*/
972
 
973
        if (fragment != null) {
974
            FragmentManager fragmentManager = getFragmentManager();
975
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
976
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
977
            System.gc();
978
        } else {
979
            Log.e("MainActivity", "Error in creating fragment");
16310 manas 980
        }
981
    }
982
 
983
 
984
    private void displayChildView(int position) {
985
        titleVisible=0;
986
        Bundle args = new Bundle();
987
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
988
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
989
        String id = userData.getString("id", null);
990
        Fragment fragment = null;
991
        Map<String, String> jsonParams;
992
        switch (position) {
993
            case 0:
14792 manas 994
                JSONObject propsAmazon = new JSONObject();
995
                try {
996
                    mixpanel.identify(userData.getString("id",null));
997
                    propsAmazon.put("Screen", "Amazon");
998
                    mixpanel.track("Amazon", propsAmazon);
999
                } catch (JSONException e) {
1000
                    e.printStackTrace();
1001
                }
1002
                t.send(new HitBuilders.EventBuilder()
1003
                        .setCategory("Menu")
1004
                        .setAction("Amazon ")
1005
                        .setLabel("Amazon Clicked")
1006
                        .build());
16278 manas 1007
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1008
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Amazon","Amazon Clicked"),
1009
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1010
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16080 manas 1011
                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 1012
                fragment = new DealsHomeFragment();
1013
                fragment.setArguments(args);
1014
                break;
16310 manas 1015
            case 1:
14792 manas 1016
                JSONObject propsFlipkart = new JSONObject();
1017
                try {
1018
                    mixpanel.identify(userData.getString("id",null));
1019
                    propsFlipkart.put("Screen", "Flipkart");
1020
                    mixpanel.track("Flipkart", propsFlipkart);
1021
                } catch (JSONException e) {
1022
                    e.printStackTrace();
1023
                }
1024
                t.send(new HitBuilders.EventBuilder()
1025
                        .setCategory("Menu")
1026
                        .setAction("Flipkart ")
1027
                        .setLabel("Flipkart Clicked")
1028
                        .build());
16278 manas 1029
 
1030
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1031
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Flipkart","Flipkart Clicked"),
1032
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1033
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16080 manas 1034
                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 1035
                fragment = new DealsHomeFragment();
1036
                fragment.setArguments(args);
1037
                break;
16310 manas 1038
            case 2:
16453 manas 1039
                t.send(new HitBuilders.EventBuilder()
1040
                        .setCategory("Menu")
17092 manas 1041
                        .setAction("HomeShop18 ")
1042
                        .setLabel("HomeShop18 Clicked")
1043
                        .build());
1044
 
1045
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1046
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","HomeShop18","HomeShop18 Clicked"),
1047
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1048
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1049
                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));
1050
                fragment = new DealsHomeFragment();
1051
                fragment.setArguments(args);
1052
                break;
1053
            case 3:
1054
                t.send(new HitBuilders.EventBuilder()
1055
                        .setCategory("Menu")
16453 manas 1056
                        .setAction("Paytm ")
1057
                        .setLabel("Paytm Clicked")
1058
                        .build());
1059
 
1060
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1061
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Paytm","Paytm Clicked"),
1062
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1063
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1064
                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));
1065
                fragment = new DealsHomeFragment();
1066
                fragment.setArguments(args);
1067
                break;
17092 manas 1068
            case 4:
14792 manas 1069
                JSONObject propsSaholic = new JSONObject();
1070
                try {
1071
                    mixpanel.identify(userData.getString("id",null));
1072
                    propsSaholic.put("Screen", "Saholic");
1073
                    mixpanel.track("Saholic", propsSaholic);
1074
                } catch (JSONException e) {
1075
                    e.printStackTrace();
1076
                }
1077
                t.send(new HitBuilders.EventBuilder()
1078
                        .setCategory("Menu")
1079
                        .setAction("Saholic ")
1080
                        .setLabel("Saholic Clicked")
1081
                        .build());
16278 manas 1082
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1083
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Saholic","Saholic Clicked"),
1084
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1085
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
14792 manas 1086
                args.putString("key", apiData.getString("saholic.autologin.url","")+"?user_id="+userData.getString("id",""));
1087
                fragment = new DealsHomeFragment();
1088
                fragment.setArguments(args);
1089
                break;
17092 manas 1090
            case 5:
16080 manas 1091
                JSONObject propsShopclues = new JSONObject();
1092
                try {
1093
                    mixpanel.identify(userData.getString("id",null));
1094
                    propsShopclues.put("Screen", "Shopclues");
1095
                    mixpanel.track("Shopclues", propsShopclues);
1096
                } catch (JSONException e) {
1097
                    e.printStackTrace();
1098
                }
1099
                t.send(new HitBuilders.EventBuilder()
1100
                        .setCategory("Menu")
1101
                        .setAction("Shopclues ")
1102
                        .setLabel("Shopclues Clicked")
1103
                        .build());
16310 manas 1104
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1105
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Shopclues","Shopclues Clicked"),
1106
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1107
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
1108
                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 1109
                args.putString("key", url);
16310 manas 1110
                if(Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
1111
                    CookieSyncManager.createInstance(getApplicationContext());
1112
                    CookieManager cookieManager1 = CookieManager.getInstance();
1113
                    cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
1114
                    cookieManager1.setCookie(url, "walletAuthentication=true");
1115
                    cookieManager1.setCookie(url, "shopcluesActive=true");
1116
                }
16080 manas 1117
                fragment = new DealsHomeFragment();
1118
                fragment.setArguments(args);
16310 manas 1119
                break;
17092 manas 1120
            case 6:
14792 manas 1121
                JSONObject propsSnapdeal = new JSONObject();
1122
                try {
1123
                    mixpanel.identify(userData.getString("id",null));
1124
                    propsSnapdeal.put("Screen", "Snapdeal");
1125
                    mixpanel.track("Snapdeal", propsSnapdeal);
1126
                } catch (JSONException e) {
1127
                    e.printStackTrace();
1128
                }
1129
                t.send(new HitBuilders.EventBuilder()
1130
                        .setCategory("Menu")
1131
                        .setAction("Snapdeal ")
1132
                        .setLabel("Snapdeal Clicked")
1133
                        .build());
16278 manas 1134
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
1135
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Snapdeal","Snapdeal Clicked"),
1136
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
1137
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
16310 manas 1138
                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 1139
                fragment = new DealsHomeFragment();
1140
                fragment.setArguments(args);
1141
                break;
1142
            default:
1143
                break;
1144
        }
19946 manas 1145
        /*if (fragment != null) {
14792 manas 1146
            FragmentManager fragmentManager = getFragmentManager();
1147
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
16310 manas 1148
 
1149
        } else {
1150
            Log.e("MainActivity", "Error in creating fragment");
19946 manas 1151
        }*/
1152
        if (fragment != null) {
1153
            FragmentManager fragmentManager = getFragmentManager();
1154
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
1155
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
1156
            System.gc();
1157
        } else {
1158
            Log.e("MainActivity", "Error in creating fragment");
14792 manas 1159
        }
1160
    }
1161
 
1162
 
16310 manas 1163
    public void setActionBarTitlte(String parentTitle){
1164
        if (parentTitle.equals("Deals")) {
1165
            getSupportActionBar().setCustomView(R.layout.actionbardeals);
1166
        }
1167
        if (parentTitle.equalsIgnoreCase("Visit Other Stores")) {
1168
            getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
1169
        }
16453 manas 1170
        if (parentTitle.equals("FAQ")) {
16310 manas 1171
            getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
1172
        }
1173
        if (parentTitle.equals("Contact Us")) {
1174
            getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
1175
        }
1176
        if (parentTitle.equals("Search")) {
1177
            getSupportActionBar().setCustomView(R.layout.actionbarsearch);
1178
        }
1179
        if (parentTitle.equals("How it Works")) {
1180
            getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
1181
        }
1182
    }
14792 manas 1183
 
1184
    @Override
1185
    protected void onPostCreate(Bundle savedInstanceState) {
1186
        super.onPostCreate(savedInstanceState);
1187
        mDrawerToggle.syncState();
1188
    }
1189
 
1190
    @Override
1191
    public boolean onPrepareOptionsMenu(Menu menu) {
1192
        boolean drawerOpen = shouldGoInvisible;
1193
        hideMenuItems(menu, !drawerOpen);
1194
        return super.onPrepareOptionsMenu(menu);
1195
    }
1196
    private void hideMenuItems(Menu menu, boolean visible)
1197
    {
1198
       for(int i = 0; i < menu.size(); i++){
1199
        menu.getItem(i).setVisible(visible);
1200
       }
1201
    }
1202
    @Override
1203
    public void onConfigurationChanged(Configuration newConfig) {
1204
        super.onConfigurationChanged(newConfig);
1205
        mDrawerToggle.onConfigurationChanged(newConfig);
1206
    }
1207
    @Override
1208
    public boolean onKeyUp(int keycode, KeyEvent e) {
1209
        switch(keycode) {
1210
            case KeyEvent.KEYCODE_MENU:
1211
 
1212
                if (mainMenu !=null) {
1213
                    mainMenu.performIdentifierAction(R.id.overflowMenu,0);
1214
                }
1215
        }
1216
 
1217
        return super.onKeyUp(keycode, e);
1218
    }
1219
    @Override
1220
    public boolean onKeyDown(int keyCode, KeyEvent event) {
1221
 
1222
        switch(keyCode) {
1223
            case KeyEvent.KEYCODE_MENU:
1224
                  if (mainMenu !=null) {
1225
                  mainMenu.performIdentifierAction(R.id.overflowMenu,0);
1226
                  }
1227
        }
1228
        return super.onKeyUp(keyCode, event);
1229
    }
1230
    private Menu mainMenu;
1231
    public final boolean isInternetOn() {
1232
 
1233
        ConnectivityManager connec =
1234
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
1235
 
1236
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
1237
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
1238
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
1239
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
1240
            return true;
1241
 
1242
        } else if (
1243
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
1244
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
1245
            return false;
1246
        }
1247
        return false;
1248
    }
1249
    class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {
1250
 
1251
        @Override
1252
        protected void onPreExecute() {
1253
            super.onPreExecute();
1254
        }
1255
 
1256
        @Override
1257
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {
1258
 
1259
            try {
1260
                HttpClient httpclient = new DefaultHttpClient();
1261
                HttpPost httppost = new HttpPost(apiData.getString("notification.data.url","http://api.profittill.com/pushnotifications/add"));
1262
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
1263
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
1264
                HttpResponse response = httpclient.execute(httppost);
1265
                HttpEntity entity = response.getEntity();
1266
                int status = response.getStatusLine().getStatusCode();
1267
 
1268
                nameValuePairsGcm.clear();
1269
            } catch (Exception e) {
17092 manas 1270
                e.printStackTrace();
14792 manas 1271
            }
1272
            return "success";
1273
        }
1274
 
1275
        @Override
1276
        protected void onPostExecute(String result) {
1277
            super.onPostExecute(result);
1278
        }
1279
    }
19653 manas 1280
    @Override
1281
    protected void onResume() {
1282
        super.onResume();
1283
        String userId = userData.getString("id","");
1284
        String androidId=UtilityFunctions.androidId(MainActivity.this);
1285
        if(!userId.isEmpty() && !androidId.isEmpty()) {
1286
            String notificationUrl = apiData.getString("notification.count", "http://45.33.50.227:3001/getNotificationCount") + "?user_id=" + userId + "&android_id=" + androidId;
1287
            new NotificationCount().getCount(MainActivity.this, null, notificationUrl);
1288
        }
1289
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
1290
        Intent i = new Intent(this, PollingService.class);
1291
        PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
1292
        am.cancel(pi);
1293
        am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 1000, 30 * 60 * 1000, pi);
1294
        invalidateOptionsMenu();
1295
    }
14792 manas 1296
}