Subversion Repositories SmartDukaan

Rev

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