Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package com.saholic.profittill.main;

import android.Manifest;
import android.app.AlarmManager;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.os.SystemClock;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.Window;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.plus.Plus;
import com.mixpanel.android.mpmetrics.MixpanelAPI;
import com.saholic.profittill.Constants.ProfitTillConstants;
import com.saholic.profittill.Network.NotificationCount;
import com.saholic.profittill.R;
import com.saholic.profittill.Services.PollingService;
import com.saholic.profittill.Utils.AnalyticsUtility;
import com.saholic.profittill.Utils.DESEncrypter;
import com.saholic.profittill.Utils.UtilityFunctions;
import com.saholic.profittill.Volley.Analytics;
import com.saholic.profittill.Volley.AnalyticsErrorResponse;
import com.saholic.profittill.Volley.AnalyticsJsonResponse;
import com.saholic.profittill.navigationdrawer.ExpandableNavigationAdapter;
import com.saholic.profittill.navigationdrawer.ExpandableNavigationItem;
import com.testin.agent.TestinAgent;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
    public GoogleApiClient mGoogleApiClient;
    SharedPreferences userData;
    SharedPreferences apiData;
    boolean glogout;
    SharedPreferences.Editor userDataEditor;
    SharedPreferences.Editor apiSettingsEditor;
    SharedPreferences.Editor inviteDataEditor;
    SharedPreferences inviteData;
    String type1;
    int flag;
    boolean shouldGoInvisible;
    int titleVisible;
    String redirectUrl;
    MixpanelAPI mixpanel;
    String notificationURL;
    ArrayList<NameValuePair> nameValuePairsGcm;

    private DrawerLayout mDrawerLayout;
    private ExpandableListView mDrawerList;
    private LinearLayout navDrawerView;
    ExpandableNavigationAdapter customAdapter;
    private ActionBarDrawerToggle mDrawerToggle;
    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
    private String[] mPlanetTitles;
    private String[] mHelpTtiles;
    private int selectedPosition;
    List<ExpandableNavigationItem> listParent;
    HashMap<String, List<String>> listDataChild;
    public static final int SMS_RECIEVE_PERMISSION = 100;
    private boolean PermissionIngranted=false;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TestinAgent.init(this);

        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
        userDataEditor = userData.edit();
        apiSettingsEditor = apiData.edit();
        if(userData.getString("registered","").equalsIgnoreCase("false")){
            requestReceivemessag();
        }

        inviteData = getApplicationContext().getSharedPreferences("Invite_Data", Context.MODE_PRIVATE);
        inviteDataEditor = inviteData.edit();
        TestinAgent.setUserInfo(userData.getString("id",""));
        mixpanel = MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
        type1 = userData.getString("type",null);

        if(getIntent().getAction()=="20"){
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
            t.send(new HitBuilders.EventBuilder()
                    .setCategory("Notification")
                    .setAction("Notification Opened ")
                    .setLabel("For User Id " + userData.getString("id","0"))
                    .build());
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
            flag=20;
            notificationURL = String.valueOf(getIntent().getData());
            nameValuePairsGcm = new ArrayList<>();
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp", UtilityFunctions.notificationDate()));
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
            getIntent().getExtras().remove("cid");
            new NotificationOpenedData().execute(nameValuePairsGcm);
        }else if(getIntent().getAction()=="15"){
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
            t.send(new HitBuilders.EventBuilder()
                    .setCategory("Notification")
                    .setAction("Notification Opened ")
                    .setLabel("For User Id " + userData.getString("id","0"))
                    .build());
            flag=15;
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
            nameValuePairsGcm = new ArrayList<>();
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
            getIntent().getExtras().remove("cid");
            new NotificationOpenedData().execute(nameValuePairsGcm);
        }else if(getIntent().getAction()=="7"){
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
            t.send(new HitBuilders.EventBuilder()
                    .setCategory("Notification")
                    .setAction("Notification Opened ")
                    .setLabel("For User Id " + userData.getString("id","0"))
                    .build());
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
            flag=7;
            nameValuePairsGcm = new ArrayList<>();
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
            getIntent().getExtras().remove("cid");
            new NotificationOpenedData().execute(nameValuePairsGcm);
        }else if(getIntent().getAction()=="6"){
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
            t.send(new HitBuilders.EventBuilder()
                    .setCategory("Notification")
                    .setAction("Notification Opened ")
                    .setLabel("For User Id " + userData.getString("id","0"))
                    .build());
            new Analytics(ProfitTillConstants.ANALYTICS_URL,
                    AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Opened",getIntent().getExtras().getString("cid")),
                    AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                    AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
            flag=6;
            nameValuePairsGcm = new ArrayList<>();
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
            getIntent().getExtras().remove("cid");
            new NotificationOpenedData().execute(nameValuePairsGcm);
        }else if(getIntent().getAction()=="31"){
            String emailURL= String.valueOf(getIntent().getData());
            Uri url = Uri.parse(emailURL);
            if(url.getQueryParameter("intent_type").equalsIgnoreCase("url")){
                String campaignId = url.getQueryParameter("campaign");
                DESEncrypter desEncrypter = new DESEncrypter(ProfitTillConstants.AUTH_PASSWORD);
                String urlOpen = desEncrypter.decrypt(url.getQueryParameter("key"));
                String campaignUserId=urlOpen.split("user_id=")[1];
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Message/Email")
                        .setAction("Message/Email Opened For User Id " + UtilityFunctions.campaignUserId(url))
                        .setLabel("Campaign Id " + campaignId)
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,UtilityFunctions.campaignUserId(url),"Message","Message Opened",campaignId),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);

                nameValuePairsGcm = new ArrayList<>();
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",campaignUserId));
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
                new NotificationOpenedData().execute(nameValuePairsGcm);
                flag=20;
                notificationURL=urlOpen.replace("?user_id="+campaignUserId,"?user_id="+userData.getString("id",""));
            }else if (url.getQueryParameter("intent_type").equalsIgnoreCase("native")){
                String campaignId = url.getQueryParameter("campaign");
                DESEncrypter desEncrypter = new DESEncrypter(ProfitTillConstants.AUTH_PASSWORD);
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Message/Email")
                        .setAction("Message/Email Opened For User Id " + userData.getString("id",""))
                        .setLabel("Campaign Id " + campaignId)
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Message","Message Opened",campaignId),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);

                nameValuePairsGcm = new ArrayList<>();
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
                new NotificationOpenedData().execute(nameValuePairsGcm);

                if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("profile")){
                    flag=15;
                }
                else if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("contact")){
                    flag=6;
                }
                else if(desEncrypter.decrypt(url.getQueryParameter("key")).equalsIgnoreCase("tutorial")){
                    flag=7;
                }else{
                    String dealsUrl= ProfitTillConstants.Web_Uri+"entry-point";
                    flag=20;
                    notificationURL =dealsUrl;
                }
            }else if (url.getQueryParameter("intent_type").equalsIgnoreCase("update")){
                String campaignId = url.getQueryParameter("campaign");
                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Message/Email")
                        .setAction("Message/Email Opened For User Id " + userData.getString("id",""))
                        .setLabel("Campaign Id " + campaignId)
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Message","Message Opened",campaignId),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);

                nameValuePairsGcm = new ArrayList<>();
                nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
                nameValuePairsGcm.add(new BasicNameValuePair("cid",campaignId));
                nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
                nameValuePairsGcm.add(new BasicNameValuePair("result","message_opened"));
                new NotificationOpenedData().execute(nameValuePairsGcm);

                Intent intent = null;
                try {
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getApplicationContext().getPackageName()));
                } catch (android.content.ActivityNotFoundException anfe) {
                    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getApplicationContext().getPackageName()));
                }
                startActivity(intent);
            }
            else{
                String dealsUrl= ProfitTillConstants.Web_Uri+"entry-point";
                flag=20;
                notificationURL =dealsUrl;
            }
        }
        else if(getIntent().getAction()=="11"){
            flag=11;
        }else {
            Bundle i = getIntent().getExtras();
            try{
            if (i != null) {
                flag = Integer.parseInt(i.getString("displayView"));
                if (flag == 31) {
                    redirectUrl = i.getString("redirectUrl");
                }
            }}
            catch (Exception e){
                e.printStackTrace();
            }
        }

        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        getSupportActionBar().setIcon(R.drawable.logo_cirlce_1);
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class
                    .getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }
        } catch (Exception ex) {
            Log.d("Exception","Message"+ex);
        }

        if(type1!=null && type1.equalsIgnoreCase("google")) {
            mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .addConnectionCallbacks(this)
                    .addOnConnectionFailedListener(this).addApi(Plus.API)
                    .addScope(Plus.SCOPE_PLUS_LOGIN).build();
            mGoogleApiClient.connect();
        }

        mTitle = mDrawerTitle = getTitle();

        navDrawerView = (LinearLayout) findViewById(R.id.navDrawerView);
        mPlanetTitles = getResources().getStringArray(R.array.stores_array);
        mHelpTtiles= getResources().getStringArray(R.array.help_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ExpandableListView) findViewById(R.id.nav_left_drawer);
       /* if(userData.getString("registered","").equalsIgnoreCase("false")){
            getSupportActionBar().hide();
             mDrawerLayout.setVisibility(View.INVISIBLE);

        }*/
        listParent = new ArrayList<ExpandableNavigationItem>();
        listDataChild = new HashMap<String, List<String>>();
        listParent.add(new ExpandableNavigationItem(getString(R.string.Deals)));
        listParent.add(new ExpandableNavigationItem(getString(R.string.Search)));
        listParent.add(new ExpandableNavigationItem(getString(R.string.Stores)));
        listParent.add(new ExpandableNavigationItem(getString(R.string.Help)));
        listDataChild.put(getString(R.string.Deals), new ArrayList<String>());
        listDataChild.put(getString(R.string.Search), new ArrayList<String>());
        listDataChild.put(getString(R.string.Stores), Arrays.asList(mPlanetTitles));
        listDataChild.put(getString(R.string.Help), Arrays.asList(mHelpTtiles));

        customAdapter = new ExpandableNavigationAdapter(this, listParent, listDataChild);

        mDrawerList.setAdapter(customAdapter);
        mDrawerList.setChoiceMode(ExpandableListView.CHOICE_MODE_SINGLE);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        mDrawerList.setOnChildClickListener(new ExpandableListViewChildClick());
        mDrawerList.setOnGroupExpandListener(new ExpandableGroupExpandListener());

        mDrawerList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
                if(groupPosition==0 || groupPosition ==1) {
                    displayView(groupPosition);
                    mDrawerLayout.closeDrawer(navDrawerView);
                    mDrawerList.collapseGroup(2);
                    mDrawerList.collapseGroup(3);
                    return true;
                }
                return false;
            }
        });
        mDrawerToggle = new ActionBarDrawerToggle(this,
                mDrawerLayout,
                R.drawable.menu_button_2,
                R.string.drawer_open,
                R.string.drawer_close
        ) {
            public void onDrawerClosed(View view) {
                if(titleVisible!=0) {
                    if(titleVisible==1)
                        getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);

                    if(titleVisible==2)
                        getSupportActionBar().setCustomView(R.layout.actionbarprefernces);

                    if(titleVisible==3)
                        getSupportActionBar().setCustomView(R.layout.actionbarmywallet);

                    if(titleVisible==4)
                        getSupportActionBar().setCustomView(R.layout.actionbarmyorders);

                    if(titleVisible==5)
                        getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);

                    if(titleVisible==6)
                        getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
                }
                shouldGoInvisible = false;
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
                shouldGoInvisible = true;
                invalidateOptionsMenu();
            }
        };
        mDrawerLayout.setDrawerListener(mDrawerToggle);


        if (savedInstanceState == null) {

            if (flag == 7) {
                getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
                displayHelpChildView(1);
            } else if (flag == 6) {
                getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
                displayHelpChildView(0);
            } else if (flag == 15) {
                getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
                MyProfile myProfile = new MyProfile();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, myProfile, "Mike")
                        .addToBackStack(null)
                        .commit();
            }else if (flag == 20) {
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
                JSONObject propsNotification = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsNotification.put("Screen", "Notification Url opened");
                    mixpanel.track("Notification Opened", propsNotification);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                Bundle args = new Bundle();
                DealsHomeFragment notifcationFragment = new DealsHomeFragment();
                args.putString("key", notificationURL);
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, notifcationFragment, "Mike")
                        .addToBackStack(null)
                        .commit();
                notifcationFragment.setArguments(args);
            }else if (flag == 31) {
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
                Bundle args = new Bundle();
                DealsHomeFragment redirectUrlFragment = new DealsHomeFragment();
                args.putString("key", redirectUrl);
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, redirectUrlFragment, "Mike")
                        .addToBackStack(null)
                        .commit();
                redirectUrlFragment.setArguments(args);
            }else if (flag == 11) {
                getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
                Bundle args = new Bundle();
                AboutUsFragment redirectUrlFragment = new AboutUsFragment();
                args.putString("key", redirectUrl);
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, redirectUrlFragment, "Mike")
                        .addToBackStack(null)
                        .commit();
                redirectUrlFragment.setArguments(args);
            }else {
                getSupportActionBar().setCustomView(R.layout.actionbardeals);
                displayView(0);
            }
        }
    }
    public void requestReceivemessag(){

        if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.RECEIVE_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                    Manifest.permission.RECEIVE_SMS)) {

            } else {
                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]{Manifest.permission.RECEIVE_SMS},
                        SMS_RECIEVE_PERMISSION);
            }
            return;
        }
    }

    private class ExpandableGroupExpandListener implements ExpandableListView.OnGroupExpandListener {
        @Override
        public void onGroupExpand(int groupPosition) {
            int len = customAdapter.getGroupCount();
            int index = mDrawerList.getFlatListPosition(ExpandableListView.getPackedPositionForGroup(groupPosition));
            mDrawerList.setItemChecked(index, true);
            String parentTitle = customAdapter.getGroup(groupPosition).getTitle();
            if (groupPosition == 3) {
                if (mDrawerList.isGroupExpanded(2)) {
                    mDrawerList.collapseGroup(2);
                }
            } else if (groupPosition == 2) {
                if (mDrawerList.isGroupExpanded(3)) {
                    mDrawerList.collapseGroup(3);
                }
            }
            setActionBarTitlte(parentTitle);
        }

    }

    private class ExpandableListViewChildClick implements ExpandableListView.OnChildClickListener {
        @Override
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
            int index = parent.getFlatListPosition(ExpandableListView.getPackedPositionForChild(groupPosition, childPosition));
            parent.setItemChecked(index, true);
            mDrawerLayout.closeDrawer(navDrawerView);
            if(groupPosition==2) {
                displayChildView(childPosition);
            }else if(groupPosition==3){
                if (childPosition==0) {
                    getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
                }
                else if (childPosition==1) {
                    getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
                }
                else if (childPosition==2) {
                    getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
                }
                displayHelpChildView(childPosition);
            }
            return false;
        }

    }

    private void displayHelpChildView(int position) {
        titleVisible=0;
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
        Fragment fragment = null;
        Map<String, String> jsonParams;
        switch (position) {
            case 0:
                JSONObject propsContactUs = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsContactUs.put("Screen", "Contact Us");
                    mixpanel.track("Contact Us", propsContactUs);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Contact Us ")
                        .setLabel("Contact us Clicked")
                        .build());
                fragment = new ContactUsFragment();
                break;
            case 1:
                JSONObject propsHowItWorks = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsHowItWorks.put("Screen", "How it Works");
                    mixpanel.track("How it Works", propsHowItWorks);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Tutorials ")
                        .setLabel("Tutorials Clicked")
                        .build());
                fragment = new HowItWorksFragment();
                break;
            case 2:
                JSONObject propsAboutUs = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsAboutUs.put("Screen", "About Us");
                    mixpanel.track("About Us", propsAboutUs);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("About Us ")
                        .setLabel("About us Clicked")
                        .build());
                fragment = new AboutUsFragment();
                break;
            default:
                break;
        }
        /*if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }*/
        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
            System.gc();
        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        mainMenu=menu;
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu_main, menu);
        RelativeLayout badgeLayout = (RelativeLayout) mainMenu.findItem(R.id.action_notifications).getActionView();
        ImageView k = (ImageView) badgeLayout.findViewById(R.id.inAppNotificationImage);
        TextView notifciationCount = (TextView) badgeLayout.findViewById(R.id.inAppNotificationText);
        k.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bundle args = new Bundle();
                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));
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Notification","Notification Icon","Notification Icon Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);

                Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                        GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Search ")
                        .setLabel("Search Clicked")
                        .build());
                DealsHomeFragment notificationFragment = new DealsHomeFragment();
                getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, notificationFragment, "Mike")
                        .addToBackStack(null)
                        .commit();
                notificationFragment.setArguments(args);
            }
        });

        if(userData.getInt("notification_count",0)!=0) {
            notifciationCount.setVisibility(View.VISIBLE);
            notifciationCount.setText(userData.getInt("notification_count",0)+"");
        }else{
            notifciationCount.setVisibility(View.GONE);
        }
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Fragment menuFragment= null;
        JSONObject props = new JSONObject();
        Bundle args = new Bundle();
        String id = userData.getString("id",null);
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        getSupportActionBar().setDisplayShowCustomEnabled(true);
        switch (item.getItemId()) {
            case R.id.action_settings:
                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
                Intent i = new Intent(this, PollingService.class);
                PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
                am.cancel(pi);
                userDataEditor.putString("alarm_set","false").commit();
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
                android.webkit.CookieSyncManager.createInstance(this);
                cookieManager.removeAllCookie();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "Signing Out");
                    mixpanel.track("Signing Out", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Sign Out","Sign Out Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                try{
                    if (mGoogleApiClient.isConnected()) {
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
                        mGoogleApiClient.disconnect();
                        mGoogleApiClient.connect();
                        userDataEditor.clear().commit();
                        inviteDataEditor.clear().commit();
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
                    }
                    else{
                        if(!mGoogleApiClient.isConnected()){
                            userDataEditor.clear().commit();
                            inviteDataEditor.clear().commit();
                            startActivity(new Intent(MainActivity.this, LoginActivity.class));
                        }


                    }
                }catch (Exception e){
                    userDataEditor.clear().commit();
                    startActivity(new Intent(MainActivity.this, LoginActivity.class));
                }
                return true;

            case R.id.my_wallet:
                titleVisible=3;
                getSupportActionBar().setCustomView(R.layout.actionbarmywallet);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "My Wallet");
                    mixpanel.track("My Wallet", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Wallet","My Wallet Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                MyWallet myWallet= new MyWallet();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, myWallet,"Mike")
                        .addToBackStack(null)
                        .commit();
                return true;
            case R.id.pending_cashback:
                titleVisible=5;
                getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "Cashback Status");
                    mixpanel.track("Cashback Status", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Cashback Status","Cashback Status Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                args.putString("key", apiData.getString("pendingcashback.url",null)+"?user_id="+id);
                DealsHomeFragment orderFragment= new DealsHomeFragment();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, orderFragment,"Mike")
                        .addToBackStack(null)
                        .commit();
                orderFragment.setArguments(args);

                return true;
            case R.id.my_favorites:
                titleVisible=1;
                getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "My Favorites");
                    mixpanel.track("My Favorites", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Favorites","My Favorites Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                args.putString("key", apiData.getString("myfavourite.url",null)+"?user_id="+id);
                DealsHomeFragment favoritesFragment= new DealsHomeFragment();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, favoritesFragment,"Mike")
                        .addToBackStack(null)
                        .commit();
                favoritesFragment.setArguments(args);
                return true;
            case R.id.my_profile:
                titleVisible=6;
                getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "My Profile");
                    mixpanel.track("My profile", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Profile","My Profile Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                MyProfile myProfile= new MyProfile();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, myProfile,"Mike")
                        .addToBackStack(null)
                        .commit();
                return true;
            case R.id.my_order:
                titleVisible=4;
                getSupportActionBar().setCustomView(R.layout.actionbarmyorders);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "My Orders");
                    mixpanel.track("My Orders", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Orders","My Orders Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                args.putString("key", apiData.getString("myorders.url",null)+"?user_id="+id);
                DealsHomeFragment preferenceFragment= new DealsHomeFragment();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, preferenceFragment,"Mike")
                        .addToBackStack(null)
                        .commit();
                preferenceFragment.setArguments(args);

                return true;
            case R.id.my_preferences:
                titleVisible=2;
                getSupportActionBar().setCustomView(R.layout.actionbarprefernces);
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "My Preferences");
                    mixpanel.track("My Preferences", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                userDataEditor.remove("preferences").commit();
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","My Preferences","My Preferences Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                PreferencesFragment my_preferences = new PreferencesFragment();
                this.getFragmentManager().beginTransaction()
                        .replace(R.id.frame_container, my_preferences,"Mike")
                        .addToBackStack(null)
                        .commit();

                return true;
           default:
                return super.onOptionsItemSelected(item);
        }


    }

    @Override
    public void onConnected(Bundle bundle) {

    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {

    }

    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
    }
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Intent i= new Intent(MainActivity.this,MainActivity.class);
        i.putExtra("displayView","0");
        startActivity(i);
    }

    @Override
    public boolean onMenuOpened(int featureId, Menu menu)
    {
        if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
            if(menu.getClass().getSimpleName().equals("MenuBuilder")){
                try{
                    Method m = menu.getClass().getDeclaredMethod(
                            "setOptionalIconsVisible", Boolean.TYPE);
                    m.setAccessible(true);
                    m.invoke(menu, true);

                }
                catch(Exception e){
                    throw new RuntimeException(e);
                }
            }
        }
        return super.onMenuOpened(featureId, menu);
    }

    private void displayView(int position) {
        titleVisible=0;

        Bundle args = new Bundle();
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
        String id = userData.getString("id",null);
        Fragment fragment = null;
        switch (position) {
            case 0:
                JSONObject props = new JSONObject();
                try {
                    mixpanel.getPeople().set( "$last_login",new Date());
                    mixpanel.identify(userData.getString("id",null));
                    props.put("Screen", "Deals Screen");
                    mixpanel.track("Deals", props);
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Deals ")
                        .setLabel("Deals Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Deals","Deals Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                //String dealsUrl= "http://api.profittill.com/deals"+"?user_id=30916"+"&email="+userData.getString("email","")+"&registered="+userData.getString("registered","");
                String dealsUrl= ProfitTillConstants.Web_Uri+"entry-point";
                args.putString("key",dealsUrl);
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 1:
                JSONObject props1 = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    props1.put("Screen", "Search");
                    mixpanel.track("Search", props1);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Search ")
                        .setLabel("Search Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Search","Search Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                args.putString("key", apiData.getString("search.url",null)+"?user_id="+id);
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            default:
                break;
        }
/*        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }*/

        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
            System.gc();
        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }
    }


    private void displayChildView(int position) {
        titleVisible=0;
        Bundle args = new Bundle();
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
        String id = userData.getString("id", null);
        Fragment fragment = null;
        Map<String, String> jsonParams;
        switch (position) {
            case 0:
                JSONObject propsAmazon = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsAmazon.put("Screen", "Amazon");
                    mixpanel.track("Amazon", propsAmazon);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Amazon ")
                        .setLabel("Amazon Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Amazon","Amazon Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 1:
                JSONObject propsFlipkart = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsFlipkart.put("Screen", "Flipkart");
                    mixpanel.track("Flipkart", propsFlipkart);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Flipkart ")
                        .setLabel("Flipkart Clicked")
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Flipkart","Flipkart Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 2:
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("HomeShop18 ")
                        .setLabel("HomeShop18 Clicked")
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","HomeShop18","HomeShop18 Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 3:
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Paytm ")
                        .setLabel("Paytm Clicked")
                        .build());

                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Paytm","Paytm Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 4:
                JSONObject propsSaholic = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsSaholic.put("Screen", "Saholic");
                    mixpanel.track("Saholic", propsSaholic);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Saholic ")
                        .setLabel("Saholic Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Saholic","Saholic Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                args.putString("key", apiData.getString("saholic.autologin.url","")+"?user_id="+userData.getString("id",""));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 5:
                JSONObject propsShopclues = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsShopclues.put("Screen", "Shopclues");
                    mixpanel.track("Shopclues", propsShopclues);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Shopclues ")
                        .setLabel("Shopclues Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Shopclues","Shopclues Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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);
                args.putString("key", url);
                if(Uri.parse(url).getHost().equalsIgnoreCase(ProfitTillConstants.DOMAIN)) {
                    CookieSyncManager.createInstance(getApplicationContext());
                    CookieManager cookieManager1 = CookieManager.getInstance();
                    cookieManager1.setCookie(url, "token=" + userData.getString("token", ""));
                    cookieManager1.setCookie(url, "walletAuthentication=true");
                    cookieManager1.setCookie(url, "shopcluesActive=true");
                }
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            case 6:
                JSONObject propsSnapdeal = new JSONObject();
                try {
                    mixpanel.identify(userData.getString("id",null));
                    propsSnapdeal.put("Screen", "Snapdeal");
                    mixpanel.track("Snapdeal", propsSnapdeal);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                t.send(new HitBuilders.EventBuilder()
                        .setCategory("Menu")
                        .setAction("Snapdeal ")
                        .setLabel("Snapdeal Clicked")
                        .build());
                new Analytics(ProfitTillConstants.ANALYTICS_URL,
                        AnalyticsUtility.getAnalyticsRequest(MainActivity.this,userData.getString("id",""),"Menu","Snapdeal","Snapdeal Clicked"),
                        AnalyticsJsonResponse.getAnalyticsRequestInstance(),
                        AnalyticsErrorResponse.getAnalyitcsResponseInstance()).anlyticsRequest(MainActivity.this);
                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));
                fragment = new DealsHomeFragment();
                fragment.setArguments(args);
                break;
            default:
                break;
        }
        /*if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();

        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }*/
        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.popBackStack(fragment.toString(),FragmentManager.POP_BACK_STACK_INCLUSIVE);
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).addToBackStack(fragment.toString()).commit();
            System.gc();
        } else {
            Log.e("MainActivity", "Error in creating fragment");
        }
    }


    public void setActionBarTitlte(String parentTitle){
        if (parentTitle.equals("Deals")) {
            getSupportActionBar().setCustomView(R.layout.actionbardeals);
        }
        if (parentTitle.equalsIgnoreCase("Visit Other Stores")) {
            getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
        }
        if (parentTitle.equals("FAQ")) {
            getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
        }
        if (parentTitle.equals("Contact Us")) {
            getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
        }
        if (parentTitle.equals("Search")) {
            getSupportActionBar().setCustomView(R.layout.actionbarsearch);
        }
        if (parentTitle.equals("How it Works")) {
            getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
        }
    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        mDrawerToggle.syncState();
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        boolean drawerOpen = shouldGoInvisible;
        hideMenuItems(menu, !drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
    private void hideMenuItems(Menu menu, boolean visible)
    {
       for(int i = 0; i < menu.size(); i++){
        menu.getItem(i).setVisible(visible);
       }
    }
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
    @Override
    public boolean onKeyUp(int keycode, KeyEvent e) {
        switch(keycode) {
            case KeyEvent.KEYCODE_MENU:

                if (mainMenu !=null) {
                    mainMenu.performIdentifierAction(R.id.overflowMenu,0);
                }
        }

        return super.onKeyUp(keycode, e);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        switch(keyCode) {
            case KeyEvent.KEYCODE_MENU:
                  if (mainMenu !=null) {
                  mainMenu.performIdentifierAction(R.id.overflowMenu,0);
                  }
        }
        return super.onKeyUp(keyCode, event);
    }
    private Menu mainMenu;
    public final boolean isInternetOn() {

        ConnectivityManager connec =
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);

        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
            return true;

        } else if (
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
            return false;
        }
        return false;
    }
    class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {

            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(apiData.getString("notification.data.url","http://api.profittill.com/pushnotifications/add"));
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                int status = response.getStatusLine().getStatusCode();

                nameValuePairsGcm.clear();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "success";
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        String userId = userData.getString("id","");
        String androidId=UtilityFunctions.androidId(MainActivity.this);
        if(!userId.isEmpty() && !androidId.isEmpty()) {
            String notificationUrl = apiData.getString("notification.count", "http://45.33.50.227:3001/getNotificationCount") + "?user_id=" + userId + "&android_id=" + androidId;
            new NotificationCount().getCount(MainActivity.this, null, notificationUrl);
        }
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        Intent i = new Intent(this, PollingService.class);
        PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
        am.cancel(pi);
        am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 1000, 30 * 60 * 1000, pi);
        invalidateOptionsMenu();
    }
}