package com.sheep.gamegroup.util;


import android.content.Context;

import com.sheep.gamegroup.statistics.AppStatistics;
import com.sheep.gamegroup.statistics.AppStatisticsConfig;
import com.sheep.jiuyan.samllsheep.SheepApp;
import com.umeng.analytics.MobclickAgent;

/**
 * Created by zhanghai on 2018/3/30.
 */

public class UMConfigUtils {

    public static final String LOGIN_TYPE = "sheep_login_type";
    public static final String LOGIN_OPENID = "sheep_login_openid";
    //统计点击次数需要的子subtype
    public enum  Event{
        GAME_DOWNLOAD                        ("GameDownload"),//游戏下载次数
        BANNER_CLICK_HORIZONTAL              ("BannerClickHorizontal"),//广告点击次数
        TAB_GAME                             ,//游戏页签
        TAB_CATEGORY                         , //分类页签
        TAB_SHEEP                            ,//小绵羊页签
        TAB_JIEZHEWAN                        ,//借着玩页签
        TAB_CREDITCARD                       ,//信用卡页签,(界面已经没有显示了)
        SHEEP_TASK_TRY                       ,//试玩赚钱
        SHEEP_TASK_INVITE                    ,//邀请赚钱
        SHEEP_TASK_LIE                       ,//躺着赚钱
        SHEEP_TIXIAN                         ,//提现
        TASK_DETAIL                          ,//任务详情
        TASK_DOWNLOAD                        ,//任务详情中->下载游戏
        TASK_UPLOAD_PICTURE                  ,//任务详情中->上传截图
        USER_ACCOUNT_SAFE                    ,//个人中心 -> 账号安全
        USER_TASK_RECORD                     ,//个人中心 -> 任务记录
        USER_TIXIAN_DETAIL                   ,//个人中心 -> 提现明细
        USER_BIND_PHONE                      ,//账号安全 -> 绑定手机号（确定按钮）
        USER_BIND_WEIXIN                     ,//账号安全 -> 绑定微信号（立即绑定按钮）
        USER_AUTHENTICATION                  ,//账号安全 -> 实名认证（提交按钮）
        USER_LOGOUT                          ,//账号安全 -> 退出登录按钮
        GAME_SEARCH                          ,//搜索界面-> 搜索按钮
        GAME_DOWNLOAD_MANAGER                ,//主界面右上角 -> 下载管理按钮
        TASK_ACCEPT                          ,//接取任务
        SHEEP_NEWBIE_TASK_LIST               ,//新手任务列表界面,(界面已经修改为对话框了)
        SHEEP_NEWBIE_TASK_UNDERSTAND_SHEEP   ,//一分钟了解小绵羊界面
        SHEEP_NEWBIE_TASK_REGIST_SUCCESS_DIALOG  ,//注册小绵羊成功对话框
        SHEEP_NEWBIE_TASK_LIST_DIALOG        ,//新手任务列表对话框
        SHEEP_NEWBIE_TASK_ADD_QQ             ,//加入官方QQ群任务
        SHEEP_CREDIT_CARD                    ,//信用卡任务列表界面
        SHEEP_CREDIT_CARD_ACCEPT_LIST        ,//信用卡任务列表界面 -> 信用卡任务接受列表
        SHEEP_CREDIT_CARD_PROGRESS_QUERY_LIST       ,//信用卡任务列表界面 ->信用卡任务进度查询列表
        SHEEP_CREDIT_CARD_DETAIL                    ,//信用卡任务列表界面 -> 信用卡任务接受列表 -> 信用卡任务详情界面
        SHEEP_CREDIT_CARD_DETAIL_WEB                ,//信用卡任务列表界面 -> 信用卡任务接受列表 -> 信用卡任务详情界面 -> 申请信用卡web界面
        SHEEP_CREDIT_CARD_PROGRESS_QUERY            ,//信用卡任务列表界面 ->信用卡任务进度查询列表 -> 信用卡任务进度查询
        TASK_START_APP            ,//打开任务应用或游戏
        TASK_INSTALL_APP            ,//安装应用
        SHEEP_START            ,//启动小绵羊
        SHEEP_RESUME            ,//小绵羊进入前台
        SHEEP_PAUSE            ,//小绵羊进入后台
        SHEEP_STOP            ,//退出小绵羊
        ;
        private String key;
        Event(String key){
            this.key = key;
        }
        Event(){
            this.key = name().toLowerCase();
        }

        public String getKey() {
            return key;
        }

        public void setKey(String key) {
            this.key = key;
        }
        public int getId(){
            return ordinal()+5001;
        }
        public void onEvent(){
            UMConfigUtils.onEvent(this);
        }
    }

    public static class Source{
        public static final String QQ = "QQ";
        public static final String WECHAT = "wechat";
        public static final String SHEEP = "sheep";
    }

    /**
     * 用户信息统计
     * 登录
     */
    public static void onProfileSignIn(){
        String source = PreferenceUtils.getPrefString(SheepApp.mContext,LOGIN_TYPE,Source.SHEEP);
        String openid = PreferenceUtils.getPrefString(SheepApp.mContext,LOGIN_OPENID,"");

        MobclickAgent.onProfileSignIn(source,openid);

        //自己的统计信息
        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU,AppStatisticsConfig.DauSubType.signIn,"");
    }

    /**
     * 登出
     */
    public static void onProfileSignOff(){
        MobclickAgent.onProfileSignOff();

        //自己的统计退出
        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.DAU,AppStatisticsConfig.DauSubType.signOff,"");
    }


    /**
     * Umeng事件统计
     * @param event
     */
    public static void onEvent(Event event){
        try{
            MobclickAgent.onEvent(SheepApp.mContext,event.getKey());

            AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.ONCLICK_EVENT, event.getId(),"");
        }catch (Exception e){
            e.printStackTrace();
        }

    }


    /**
     * 页面开始
     * @param context
     */
    public static void onPageStart(Context context){
        MobclickAgent.onResume(context);

        String tag = context.getClass().getCanonicalName();
        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.PAGE_START,0,tag);
    }

    /**
     * 页面开始
     * @param tag
     */
    public static void onPageStart(String tag){
        MobclickAgent.onPageStart(tag);

        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.PAGE_START,0,tag);
    }

    /**
     * 页面结束
     * @param context
     */
    public static void onPageEnd(Context context){
        MobclickAgent.onPause(context);

        String tag = context.getClass().getCanonicalName();
        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.PAGE_END,0,tag);
    }

    /**
     * 页面结束
     * @param tag
     */
    public static void onPageEnd(String tag){
        MobclickAgent.onPageEnd(tag);

        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.PAGE_END,0,tag);
    }

    /**
     * 任务完成时间统计
     */
    public static void finishTask(){
        AppStatistics.getInstance().sendDataToServer(AppStatisticsConfig.SuperType.TASK_FINISH,0,"");
    }


    /**
     * 当Fragment对用户的可见性发生了改变的时候就会回调此方法
     * @param isVisibleToUser true：用户能看见当前Fragment；false：用户看不见当前Fragment
     * @param isHappenedInSetUserVisibleHintMethod true：本次回调发生在setUserVisibleHintMethod方法里；false：发生在onResume或onPause方法里
     * @param tag fragment 名字
     */
    public static void onVisibilityChangedToUser(boolean isVisibleToUser, boolean isHappenedInSetUserVisibleHintMethod,String tag){
        if(isVisibleToUser){
            if(tag != null){
                //umeng fragment
                UMConfigUtils.onPageStart(tag);
            }
        }else{
            if(tag != null){
                UMConfigUtils.onPageEnd(tag);
            }
        }
    }

}
