package com.yidianling.uikit.custom.bridge;

import android.app.Activity;
import android.content.Context;

import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.yidianling.uikit.custom.http.response.RecommendExpertBean;

import org.json.JSONObject;

import java.util.ArrayList;

/**
 * Created by haorui on 2019/5/16.
 * Des:
 */
public interface IP2PCustomActionHandler {

    DocInfo getInfo();

    boolean deleteMessage(IMMessage message); //需要筛选的消息

    void setDoctorStatus(int status); //更新专家登录状态

    void setDoctorBusyNum(int num); //设置专家正在咨询的人数

    void judgeSendRemindMsg(String sessionId); //发送提醒上线的用户消息

    void sendRecommendExpertListMessage(String sessionId, ArrayList<RecommendExpertBean> recommendExpertList, int type, boolean showExpertList);//发送推荐专家列表

    Activity getmActivity();

    void setmActivity(Activity mActivity);

    void clickMoreIcon();

    void showDingdan(String url);

    void showZhuanjPage();//专家H5主页

    void toExpertHome(String doctorId, String name, String cover); //专家h5主页

    void showUserHome();//跳转用户主页

    void jump();

    void h5Video();//跳转h5视频介绍

    //私聊 获取聊天者的订单关系数据(参数cantalk从另一个接口获取)
    //        void getExpert(int toUid,int cantalk);
    void confide();

    void help();

    void makeColections(String toUid); // 发起收款

    void clear(String accid);

    void put(Activity a);

    void showHelp(String url);

    void resumeUm(Activity activity);

    void pauseUm(Activity activity);

    int getUserType();

    /**
     * 判断是否需要发送自定义消息
     */
    void isNeedSendMsg(boolean isCheckFrom);

    void setUserType(int userType);

    //获取自己的用户类型
    int getSelfUserType();

    //发红包
    void sendRedPacket(Activity activity);

    //检查用户是否已经绑定手机号
    boolean isBindPhone(Activity activity, String toUid);

    //消息中有11位数字,提示是否要隐藏中间5位
    boolean HintMessageSend(Activity activity, ReturnCallBack returnCallBack);

    //举报
    void showJubao(Activity activity);

    //埋点统计
    void buryPoint(String eventName, JSONObject properties);

    //发送自定义提醒消息
    void sendCustomMsg();

    //保存聊天未发送的临时内容
    void saveImTempData(String touid, String content);

    //获取聊天未发送的临时内容
    String getImTempData(String touid);

    //判断是否需要弹出 获取群聊历史记录dialog
    void chatTeamHistoryTip(Activity activity);

    //短时间多次私聊  给予警示
    void sendMsgToChatTip();

    void h5ActivityStart(Context mActivity, String url, boolean isFresh);//跳转h5页面 isFresh表示是否需要下拉刷新功能

    void uploadSendMessageError(int code);

    void startHelp(Context context);

    void startFeedback(Context context);

    void popCallDialog(Context context);

    class DocInfo {
        public String toUid;
        public String doctorId;
        public String listenerId;
        public String name = "";
        public String title;
        public int is_online;//专家状态 1.在线 2.离线 3通话中 4-继续拨打 ,
        public int isChatOnline;////专家私聊在线状态 1.在线,2.离线,3.忙碌 4咨询中, 5倾述中  6咨询前准备
        public String cover;
        public String desc;
        public String url_share;
        public String price;
        public String unitTxt;
        public String url;
        public int hasAvailableListenOrder;//是否还有未完成的倾诉订单 1、没有 2、有
        public int listenOrderCommentStatus;//倾诉订单评论状态 1:未评价 9:已评价 ,
        public String listenOrderCommentUrl;//倾诉订单评价页url
        public String listenOrderUrl;//订单详情页面url
        public String listenOrderDesc;//倾诉订单状态描述
        public String listenOrderRemainTime;//未完成倾诉订单剩余时间
        public String urlTitle;
        public String blackStatus;
        public String orderid;
        public int listenerIsOpen;////1 开启 2 关闭
        public int is_first = 1;//是否是第一次私聊
        public int busyTotal = 0; //专家当前在与多少人聊天
        public String tag1 = ""; //用与获取推荐专家列表接口的参数catName

        public double doctorBriefInfoFeedbackRate = 0.000;  //好评率 需要*100
        public int doctorBriefInfoOrderNum = 0; //帮助人数
        public int doctorBriefInfoHelpLong = 0; //服务时长
        public String doctorBriefInfoSmallImage = ""; //小头像
    }

    //消息中有11位数字,提示是否要隐藏中间5位  相关
    public interface ReturnCallBack {
        boolean RetCallback();
    }

}