package com.smilodontech.newer.ui.league;

import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.viewbinding.ViewBinding;

import com.alibaba.fastjson.JSON;
import com.aopcloud.base.log.Logcat;
import com.bigkoo.pickerview.builder.OptionsPickerBuilder;
import com.bigkoo.pickerview.view.OptionsPickerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import com.smilodontech.iamkicker.R;
import com.smilodontech.iamkicker.common.Constant;
import com.smilodontech.iamkicker.databinding.ActivityMatchRecordDataBinding;
import com.smilodontech.iamkicker.model.HotMatchPersonalData;
import com.smilodontech.iamkicker.ui.HotMatchDataSubmitDetailReplaceActivity;
import com.smilodontech.iamkicker.ui.HotMatchDataSubmitSignatureActivity;
import com.smilodontech.iamkicker.ui.HotMatchKickScoreDialogActivity;
import com.smilodontech.iamkicker.util.LogHelper;
import com.aopcloud.base.toast.ToastUtils;
import com.smilodontech.iamkicker.view.HotMatchChooseCancelPerformanceDialog;
import com.smilodontech.iamkicker.view.HotMatchChooseWaiveTeamDialog;
import com.smilodontech.iamkicker.view.RadioChooserDialog;
import com.smilodontech.iamkicker.view.TipsDialog;
import com.smilodontech.newer.loader.AppImageLoader;
import com.smilodontech.newer.network.api.v3.match.MatchHighlightListRequest;
import com.smilodontech.newer.ui.download.LocalVideoPlayerActivity;
import com.smilodontech.newer.ui.league.adapter.manage.MatchRecordTeamActionAdapter;
import com.smilodontech.newer.ui.league.bean.manage.MatchActionBean;
import com.smilodontech.newer.ui.league.bean.manage.MatchActionHighlightBean;
import com.smilodontech.newer.ui.league.bean.manage.MatchActionInfoBean;
import com.smilodontech.newer.ui.league.bean.manage.MatchAddActionBean;
import com.smilodontech.newer.ui.league.bean.manage.MatchPlayerActionItemBean;
import com.smilodontech.newer.ui.league.bean.manage.MatchRecordDataListBean;
import com.smilodontech.newer.ui.league.constant.MatchActionType;
import com.smilodontech.newer.ui.league.contract.MatchRecordContract;
import com.smilodontech.newer.ui.league.dialog.ChooseDialog;
import com.smilodontech.newer.ui.league.dialog.MatchActionInfoDialog;
import com.smilodontech.newer.ui.league.dialog.MatchCardActionReasonDialog;
import com.smilodontech.newer.ui.league.dialog.SelectMatchActionDialog;
import com.smilodontech.newer.ui.league.presenter.MatchRecordPresenter;
import com.smilodontech.newer.ui.mvp.BaseMvpActivity;
import com.smilodontech.newer.utils.ListUtils;
import com.smilodontech.newer.utils.ViewUtil;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @PackageName : com.smilodontech.newer.ui.match
 * @File : MatchRecordDataActivity.java
 * @Date : 2022/8/24 2022/8/24
 * @Author : K
 * @E-mail : vip@devkit.vip
 * @Version : V 1.0
 * @Describe ：
 */
public class MatchRecordDataActivity extends BaseMvpActivity<MatchRecordContract.IMvpView, MatchRecordContract.Presenter>
        implements MatchRecordContract.IMvpView, OnRefreshListener, BaseQuickAdapter.OnItemClickListener, MatchRecordTeamActionAdapter.OnItemActionClickListener, View.OnClickListener {


    private String leagueId;
    private String matchId;
    private ActivityMatchRecordDataBinding mViewBinding;
    private MatchRecordTeamActionAdapter mAdapter;
    private List<MatchRecordDataListBean> mBeanList = new ArrayList<>();
    private MatchActionBean mMatchActionBean;
    private HotMatchChooseCancelPerformanceDialog cancelActionDialog;
    private SelectMatchActionDialog mSelectMatchActionDialog;
    private MatchActionInfoDialog mMatchActionInfoDialog;
    private MatchActionHighlightBean mSelectMatchActionHighlightBean;
    private OptionsPickerView<MatchActionHighlightBean> mVideoPickerView;
    private List<MatchActionHighlightBean> currentHighlightList = new ArrayList<>();
    private Boolean isMaster = true;
    private MatchAddActionBean mMatchAddActionBean;
    private Integer[] hasVideoType = new Integer[]{1, 3, 4, 24, 35, 36};
    public static final int REQUEST_CODE_KICK = 3;
    public static final int REQUEST_CODE_SIGNATURE = 1;
    public static final int REQUEST_CODE_REPLACE = 2;

    @Override
    protected ViewBinding createViewBinding() {
        return mViewBinding = ActivityMatchRecordDataBinding.inflate(getLayoutInflater());
    }

    @Override
    protected MatchRecordContract.Presenter createPresenter() {
        return new MatchRecordPresenter();
    }

    @Override
    protected int setLayoutId() {
        return R.layout.activity_match_record_data;
    }

    @Override
    protected void initData() {
        super.initData();
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
            leagueId = bundle.getString("leagueId");
            matchId = bundle.getString("matchId");
        }
        Logcat.i("leagueId:" + leagueId + " matchId:" + matchId);
    }

    @Override
    protected void initView() {
        mViewBinding.headerLayout.tvTitle.setText("录入数据");
        mViewBinding.headerLayout.tvRightMenu.setText("弃权");


        mViewBinding.refreshLayout.setEnableLoadMore(false);
        mViewBinding.refreshLayout.setOnRefreshListener(this);
        mViewBinding.headerLayout.llBack.setOnClickListener(this);
        mViewBinding.headerLayout.llRightMenu.setOnClickListener(this);
        mViewBinding.rlMasterTeam.setOnClickListener(this);
        mViewBinding.rlGuestTeam.setOnClickListener(this);
        mViewBinding.btnAction.setOnClickListener(this);
        mViewBinding.btnCommit.setOnClickListener(this);
        mViewBinding.tvMasterTeamName.setText("123");
        mViewBinding.tvGuestTeamName.setText("35");

        mAdapter = new MatchRecordTeamActionAdapter(R.layout.item_hot_match_datasubmit_detail, mBeanList);
        mAdapter.setOnItemClickListener(this::onItemClick);
        mAdapter.setOnItemActionClickListener(this);
        View headView = LayoutInflater.from(this).inflate(R.layout.item_hot_match_datasubmit_headview, null);
        View footView = LayoutInflater.from(this).inflate(R.layout.item_hot_match_datasubmit_footview, null);
        mAdapter.addHeaderView(headView);
        mAdapter.setFooterView(footView);

        mViewBinding.rvList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        mViewBinding.rvList.setAdapter(mAdapter);
        getPresenter().loadMatchActionList(matchId);
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ll_back:
                finish();
                break;
            case R.id.ll_right_menu:
                if (mMatchActionBean == null) {
                    return;
                }
                if (mMatchActionBean.getMatchStatusType() == 3
                        || mMatchActionBean.getMatchStatusType() == 4
                        || mMatchActionBean.getMatchStatusType() == 5) {
                    showCancelAbstainTips();
                } else {
                    Bundle bundle = new Bundle();
                    bundle.putString("masterName", mMatchActionBean.getMasterTeamName());
                    bundle.putString("masterLogo", mMatchActionBean.getMasterTeamLogo());
                    bundle.putString("guestName", mMatchActionBean.getGuestTeamName());
                    bundle.putString("guestLogo", mMatchActionBean.getGuestTeamLogo());
                    showAbstainDialog(bundle);
                }
                break;
            case R.id.rl_master_team:
                switchTeam(true);
                break;
            case R.id.rl_guest_team:
                switchTeam(false);
                break;
            case R.id.btn_action:
                ToastUtils.show("开始比赛");
                Intent intent = new Intent(this, HotMatchKickScoreDialogActivity.class);
                intent.putExtra("matchId", matchId);
                intent.putExtra("masterName", mMatchActionBean.getMasterTeamName());
                intent.putExtra("masterLogo", mMatchActionBean.getMasterTeamLogo());
                intent.putExtra("guestName", mMatchActionBean.getGuestTeamName());
                intent.putExtra("guestLogo", mMatchActionBean.getGuestTeamLogo());
                intent.putExtra("masterPoint", "" + mMatchActionBean.getMasterPoint());
                intent.putExtra("guestPoint", "" + mMatchActionBean.getGuestPoint());
                startActivityForResult(intent, REQUEST_CODE_KICK);
                break;
            case R.id.btn_commit:
                commitDialog();
                break;
        }
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    private void switchTeam(boolean isMaster) {
        this.isMaster = isMaster;
        mViewBinding.ivTeamIndex.setBackgroundResource(isMaster ? R.mipmap.list_line_left : R.mipmap.list_line_right);
        mViewBinding.tvMasterTeamName.setTextColor(isMaster ? Color.RED : getResources().getColor(R.color.input_hint_color));
        mViewBinding.tvGuestTeamName.setTextColor(isMaster ? getResources().getColor(R.color.input_hint_color) : Color.RED);
        if (mMatchActionBean == null) {
            return;
        }
        String json = JSON.toJSONString(isMaster ? mMatchActionBean.getMasterPlayerActionVOList() : mMatchActionBean.getGuestPlayerActionVOList());
        String substitutionJson = JSON.toJSONString(isMaster ? mMatchActionBean.getMasterSubstitutionPlayerVOList() : mMatchActionBean.getGuestSubstitutionPlayerVOList());
        String unselectedJson = JSON.toJSONString(isMaster ? mMatchActionBean.getMasterUnselectedPlayerVOList() : mMatchActionBean.getGuestUnselectedPlayerVOList());

        List<MatchRecordDataListBean> listBeans = JSON.parseArray(json, MatchRecordDataListBean.class);
        List<MatchRecordDataListBean> substitutionList = JSON.parseArray(substitutionJson, MatchRecordDataListBean.class);
        List<MatchRecordDataListBean> unselectedList = JSON.parseArray(unselectedJson, MatchRecordDataListBean.class);

        // listBeans.sort((o1, o2) -> o1.getPlayerNumber()-o2.getPlayerNumber());
        // substitutionList.sort((o1, o2) -> o1.getPlayerNumber()-o2.getPlayerNumber());
        // unselectedList.sort((o1, o2) -> o1.getPlayerNumber()-o2.getPlayerNumber());

        Logcat.i("switchTeam:" + listBeans.size() + "/" + mMatchActionBean.getMasterPlayerActionVOList().size() + "/" + mMatchActionBean.getGuestPlayerActionVOList().size());
        mBeanList.clear();
        mBeanList.addAll(listBeans);
        mBeanList.addAll(substitutionList);
        mBeanList.addAll(unselectedList);
        mAdapter.notifyDataSetChanged();
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    @SuppressLint("SetTextI18n")
    @Override
    public void loadMatchActionListResult(@NotNull MatchActionBean info) {
        hideLoading();
        mViewBinding.refreshLayout.finishRefresh();
        mMatchActionBean = info;
        mViewBinding.headerLayout.tvRightMenu.setText(getMatchStatus(info.getMatchStatusType()));

        AppImageLoader.load(this, info.getMasterTeamLogo(), mViewBinding.ivMasterTeamLogo, 10);
        AppImageLoader.load(this, info.getGuestTeamLogo(), mViewBinding.ivGuestTeamLogo, 10);
        mViewBinding.tvMasterTeamName.setText(info.getMasterTeamName());
        mViewBinding.tvGuestTeamName.setText(info.getGuestTeamName());
        mViewBinding.tvDetailScore.setText(info.getScoreType() == 0 ? "VS" : info.getMasterScore() + "-" + info.getGuestScore());
        if (info.getMasterPoint() > 0 || info.getGuestPoint() > 0) {
            mViewBinding.tvMasterPoint.setText("(" + info.getMasterPoint() + ")");
            mViewBinding.tvGuestPoint.setText("(" + info.getGuestPoint() + ")");
        } else {
            mViewBinding.tvGuestPoint.setText("");
            mViewBinding.tvMasterPoint.setText("");
        }
        switchTeam(isMaster);

    }

    @Override
    public void cancelMatchAbstainResult(boolean success, @Nullable String msg) {
        if (success) {
            getPresenter().loadMatchActionList(matchId);
            mViewBinding.headerLayout.tvRightMenu.setText("弃权");
        } else {
            ToastUtils.show(msg);
        }
    }

    @Override
    public void matchAbstainResult(boolean success, @Nullable String msg) {
        if (success) {
            getPresenter().loadMatchActionList(matchId);
            mViewBinding.headerLayout.tvRightMenu.setText("取消弃权");
        } else {
            ToastUtils.show(msg);
        }
    }

    @Override
    public void deleteActionResult(boolean success, @Nullable String msg) {
        if (success) {
            if (cancelActionDialog != null && cancelActionDialog.isShow()) {
                cancelActionDialog.dismiss();
            }
            getPresenter().loadMatchActionList(matchId);
            ToastUtils.show("删除成功");
        } else {
            ToastUtils.show(msg);
        }
    }

    @Override
    public void loadMatchActionHighlightResult(@NotNull List<? extends MatchActionHighlightBean> list) {
        Logcat.i("loadMatchActionHighlightResult:" + mMatchAddActionBean.getVideoId());
        currentHighlightList = new ArrayList<>();
        mSelectMatchActionHighlightBean = null;
        for (int i = 0; i < list.size(); i++) {
            MatchActionHighlightBean bean = list.get(i);
            if (mMatchAddActionBean != null && mMatchAddActionBean.getVideoId() != null && mMatchAddActionBean.getVideoId().equals(bean.getVideoId())) {
                mSelectMatchActionHighlightBean = bean;
            }
            currentHighlightList.add(bean);
        }
        showActionSetDialog();
    }

    @Override
    public void loadMatchActionInfoResult(@NotNull MatchActionInfoBean info) {
        if (info.getVideoId() != 0) {
            mMatchAddActionBean.setVideoId(info.getVideoId());
        }
        if (!TextUtils.isEmpty(info.getActionContent())) {
            mMatchAddActionBean.setActionContent(info.getActionContent());
        }
        if (info.getToPlayingUserId() != 0) {
            mMatchAddActionBean.setToPlayingUserId(info.getToPlayingUserId());
        }
        getPresenter().loadMatchActionHighlight("" + info.getMatchId(), info.getTeamId(), getHighlightType(info.getActionType()));
    }

    @Override
    public void addOrEditActionResult(@NotNull MatchAddActionBean bean, boolean success, @Nullable String msg) {
        hideLoading();
        if (success) {
            if (mMatchActionInfoDialog != null && mMatchActionInfoDialog.isShowing()) {
                mMatchActionInfoDialog.dismiss();
            }
            mMatchActionBean = null;
            currentHighlightList.clear();
            getPresenter().loadMatchActionList(matchId);
            ToastUtils.show(bean.isEdit() ? "编辑成功" : "添加成功");
        } else {
            ToastUtils.show(msg);
        }
    }

    @Override
    public void recordPointScoreResult() {
        hideLoading();
        getPresenter().loadMatchActionList(matchId);

    }

    @Override
    public void commitMatchDataResult(@NotNull String url) {
        Logcat.d("commitMatchDataResult:" + url);
        Bundle bundle = new Bundle();
        bundle.putString(Constant.PARAM_MATCH_ID, matchId);
        bundle.putString("leagueId", leagueId);
        bundle.putString("url", url);
        gotoActivity(HotMatchDataSubmitSignatureActivity.class, REQUEST_CODE_SIGNATURE, bundle);
    }

    @Override
    public void loadOldMatchDataResult(@NotNull ArrayList<HotMatchPersonalData> beanList) {
        for (int i = 0; i < mBeanList.size(); i++) {
            String userId = "" + mBeanList.get(i).getUserId();
            for (int j = 0; j < beanList.size(); j++) {
                if (userId.equals(beanList.get(j).getUser_id()) && mBeanList.get(i).getIsPlaying() == 1) {
                    beanList.get(j).setPresence("1");
                }
            }
        }

        Intent intent = new Intent(this, HotMatchDataSubmitDetailReplaceActivity.class);
        intent.putExtra("currentUserId", mMatchAddActionBean.getOperationUserId());
        intent.putParcelableArrayListExtra("dataList", beanList);
        startActivityForResult(intent, REQUEST_CODE_REPLACE);
    }


    /**
     * 1已经提交数据,2无弃权,无提交, 3主队弃权，4客队弃权，5双方弃权 ,
     *
     * @param matchStatusType
     * @return
     */
    private String getMatchStatus(Integer matchStatusType) {
        String status = "弃权";
        switch (matchStatusType) {
            case 3:
            case 4:
            case 5:
                status = "取消弃权";
                break;
        }
        return status;
    }

    @Override
    public void onRefresh(@NonNull @NotNull RefreshLayout refreshLayout) {
        getPresenter().loadMatchActionList(matchId);
    }

    @Override
    public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
        if (mMatchActionBean.getMatchStatusType() == 3
                || mMatchActionBean.getMatchStatusType() == 4
                || mMatchActionBean.getMatchStatusType() == 5) {
            ToastUtils.show("无法更改弃权比赛记录");
            return;
        }
        MatchRecordDataListBean adapterItem = mAdapter.getItem(position);
        boolean hasRedCard = false;
        if (null != adapterItem.getPlayerActionItemVOS()) {
            for (MatchPlayerActionItemBean itemBean : adapterItem.getPlayerActionItemVOS()) {
                if (itemBean.getPlayerActionType() == 4 || itemBean.getPlayerActionType() == 36) {
                    hasRedCard = true;
                    break;
                }
            }
        }
        if (mSelectMatchActionDialog == null) {
            mSelectMatchActionDialog = new SelectMatchActionDialog(this);
        }
        mSelectMatchActionDialog.setPlayerNumber(adapterItem.getPlayerNumber());
        mSelectMatchActionDialog.setPlaying(adapterItem.getIsPlaying() == 1);
        mSelectMatchActionDialog.setHasRedCard(hasRedCard);
        mSelectMatchActionDialog.setOnMatchActionSelectListener(actionType -> {
            int teamId = isMaster ? mMatchActionBean.getMasterTeamId() : mMatchActionBean.getGuestTeamId();
            mMatchAddActionBean = new MatchAddActionBean();
            mMatchAddActionBean.setOperationUserId(adapterItem.getUserId());
            mMatchAddActionBean.setEdit(false);
            mMatchAddActionBean.setActionType(actionType.getType());
            mMatchAddActionBean.setTeamId(teamId);
            //换人额外处理
            if (actionType == MatchActionType.ACTION_TYPE_REPLACE) {
                getPresenter().loadOldMatchData(matchId, isMaster);
                return;
            }
            if (Arrays.asList(hasVideoType).contains(actionType.getType())) {
                getPresenter().loadMatchActionHighlight(matchId, teamId, getHighlightType(actionType.getType()));
            } else {
                currentHighlightList.clear();
                showActionSetDialog();
            }
        });
        mSelectMatchActionDialog.show();
    }


    @Override
    public void onItemActionClick(int position, int actionPosition) {
        if (mMatchActionBean.getMatchStatusType() == 3
                || mMatchActionBean.getMatchStatusType() == 4
                || mMatchActionBean.getMatchStatusType() == 5) {
            ToastUtils.show("无法更改弃权比赛记录");
            return;
        }
        MatchPlayerActionItemBean actionItemBean = mAdapter.getItem(position).getPlayerActionItemVOS().get(actionPosition);
        cancelActionDialog = new HotMatchChooseCancelPerformanceDialog(this);
        cancelActionDialog.setTimeVisibility(actionItemBean.getPlayerActionType() == 5 ? View.GONE : View.VISIBLE);
        cancelActionDialog.setOnCancelBtnClickListener(() -> cancelActionDialog.dismiss());
        cancelActionDialog.setOnConfirmBtnClickListener(() -> {
            int choose = cancelActionDialog.getChoose();
            /**
             * 1撤销表现
             * 2修改时间
             */
            int teamId = isMaster ? mMatchActionBean.getMasterTeamId() : mMatchActionBean.getGuestTeamId();
            if (choose == 1) {
                getPresenter().delAction(leagueId, matchId, actionItemBean.getPlayerActionId(), teamId);
            } else {
                mMatchAddActionBean = new MatchAddActionBean();
                mMatchAddActionBean.setEdit(true);
                mMatchAddActionBean.setPlayerActionId(actionItemBean.getPlayerActionId());
                String time = actionItemBean.getPlayerActionTime();
                int actionTime = 0;
                try {
                    actionTime = Integer.parseInt(time);
                } catch (Exception e) {
                    Logcat.e("时间解析异常:" + time);
                    e.printStackTrace();
                }
                mMatchAddActionBean.setActionTime(actionTime);
                mMatchAddActionBean.setActionType(actionItemBean.getPlayerActionType());
                mMatchAddActionBean.setTeamId(teamId);
                mMatchAddActionBean.setOperationUserId(mAdapter.getItem(position).getUserId());
                if (Arrays.asList(hasVideoType).contains(actionItemBean.getPlayerActionType())) {
                    getPresenter().loadMatchActionInfo(leagueId, matchId, actionItemBean.getPlayerActionId(), teamId);
                } else {
                    currentHighlightList.clear();
                    showActionSetDialog();
                }
            }
        });
        cancelActionDialog.show();
    }

    private MatchHighlightListRequest.HighlightType getHighlightType(Integer playerActionType) {
        MatchHighlightListRequest.HighlightType type = null;
        if (playerActionType == 1) {
            type = MatchHighlightListRequest.HighlightType.TYPE_GOA;
        } else if (playerActionType == 3) {
            type = MatchHighlightListRequest.HighlightType.TYPE_YELLOW_CARD;
        } else if (playerActionType == 4) {
            type = MatchHighlightListRequest.HighlightType.TYPE_RED_CARD;
        } else if (playerActionType == 24) {
            type = MatchHighlightListRequest.HighlightType.TYPE_OWN_GOAL;
        } else if (playerActionType == 35) {
            type = MatchHighlightListRequest.HighlightType.TYPE_GOA;
        }
        return type;
    }


    private void showActionSetDialog() {
        if (cancelActionDialog != null && cancelActionDialog.isShow()) {
            cancelActionDialog.dismiss();
        }
        if (mSelectMatchActionDialog != null && mSelectMatchActionDialog.isShowing()) {
            mSelectMatchActionDialog.dismiss();
        }
        if (mMatchActionInfoDialog == null) {
            mMatchActionInfoDialog = new MatchActionInfoDialog(this);
        }
        if (mSelectMatchActionHighlightBean != null) {
            mMatchActionInfoDialog.setHighlightBean(mSelectMatchActionHighlightBean);
        }
        if (mMatchAddActionBean.getActionTime() != null) {
            mMatchActionInfoDialog.setTime(mMatchAddActionBean.getActionTime());
        }
        mMatchActionInfoDialog.setHasVideo(Arrays.asList(hasVideoType).contains(mMatchAddActionBean.getActionType()));
        mMatchActionInfoDialog.setOnMatchActionInfoListener(new MatchActionInfoDialog.OnMatchActionInfoListener() {
            @Override
            public void onMatchActionInfo(int minute, MatchActionHighlightBean highlightBean) {
                mMatchAddActionBean.setActionTime(minute);
                mMatchAddActionBean.setLeagueId(Integer.parseInt(leagueId));
                mMatchAddActionBean.setMatchId(Integer.parseInt(matchId));
                mMatchAddActionBean.setMatchSegmentType(0);
                mMatchAddActionBean.setOfficerOrPlayer(1);
                if (mMatchAddActionBean.getActionType().equals(MatchActionType.ACTION_TYPE_CARD_YELLOW.getType()) ||
                        mMatchAddActionBean.getActionType().equals(MatchActionType.ACTION_TYPE_CARD_RED.getType()) ||
                        mMatchAddActionBean.getActionType().equals(MatchActionType.ACTION_TYPE_CARD_YELLOW_2_RED.getType())
                ) {
                    mMatchActionInfoDialog.dismiss();
                    MatchCardActionReasonDialog reasonDialog = new MatchCardActionReasonDialog(MatchRecordDataActivity.this);
                    reasonDialog.setReason(mMatchAddActionBean.getActionContent());
                    reasonDialog.setActionInputListener(reason -> {
                        if (!TextUtils.isEmpty(reason)) {
                            mMatchAddActionBean.setActionContent(reason);
                        }
                        getPresenter().addOrEditAction(mMatchAddActionBean);
                        reasonDialog.dismiss();
                    });
                    reasonDialog.show();
                } else if (mMatchAddActionBean.getActionType().equals(MatchActionType.ACTION_TYPE_GOAL.getType())) {
                    mMatchActionInfoDialog.dismiss();
                    showGoalTypeDialog();
                } else {
                    getPresenter().addOrEditAction(mMatchAddActionBean);
                }
            }

            @Override
            public void onSelectVideo() {
                if (!ListUtils.isEmpty(currentHighlightList)) {
                    showVideoSelect();
                } else {
                    ToastUtils.show("暂无该类型视频集锦");
                }
            }

            @Override
            public void onPreviewVideo(MatchActionHighlightBean highlightBean) {
                Bundle bundle = new Bundle();
                bundle.putBoolean(LocalVideoPlayerActivity.SCREEN_FULL, false);
                bundle.putString(LocalVideoPlayerActivity.VIDEO_URL, highlightBean.getVideoUrl());
                gotoActivity(LocalVideoPlayerActivity.class, bundle);

            }
        });
        mMatchActionInfoDialog.show();
    }

    public void showVideoSelect() {
        List<MatchActionHighlightBean> itemList = new ArrayList();
        itemList.addAll(currentHighlightList);
        mVideoPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> {
            MatchActionHighlightBean itemBean = itemList.get(options1);
            Logcat.d("select Video ID" + JSON.toJSONString(itemBean));
            mMatchActionInfoDialog.setHighlightBean(itemBean);
            mMatchAddActionBean.setVideoId(itemBean.getVideoId());

        })
                .setOutSideCancelable(false)
                .setContentTextSize(15)
                .setTitleBgColor(Color.WHITE)
                .setTextColorCenter(Color.parseColor("#0C0909"))
                .setCancelColor(Color.parseColor("#0C0909"))
                .setSubmitColor(Color.parseColor("#848484"))
                .setItemVisibleCount(7)
                .setLineSpacingMultiplier(2.5f)
                .isDialog(true)
                .build();
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewUtil.getScreenWidth(this), ViewGroup.LayoutParams.WRAP_CONTENT);
        Dialog dialog = mVideoPickerView.getDialog();
        if (dialog != null) {
            Window window = dialog.getWindow();
            assert window != null;
            window.setWindowAnimations(R.style.dialog_anim_bottom);
            window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            WindowManager.LayoutParams winParams = window.getAttributes();
            winParams.width = ViewUtil.getScreenWidth(this);
            winParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
            winParams.gravity = Gravity.BOTTOM;
            window.setAttributes(winParams);
        }

        mVideoPickerView.getDialogContainerLayout().setLayoutParams(params);
        mVideoPickerView.setPicker(itemList);
        mVideoPickerView.show();
    }

    private void showGoalTypeDialog() {
        List<String> typeList = new ArrayList<>();
        typeList.add("运动战进球");
        typeList.add("点球");
        final RadioChooserDialog goalTypeDialog = new RadioChooserDialog(MatchRecordDataActivity.this, typeList, "进球类型", 0);
        goalTypeDialog.setOnCancelBtnClickListener(() -> goalTypeDialog.dismiss());
        goalTypeDialog.setOnConfirmBtnClickListener(() -> {
            int goalType = goalTypeDialog.getSelectedItem();
            if (goalType == 0) {
                mMatchAddActionBean.setActionType(MatchActionType.ACTION_TYPE_GOAL.getType());
                List<MatchRecordDataListBean> beanList = new ArrayList<>();
                beanList.addAll(mBeanList);
                int playerIndex = 0;
                int lastAsPlayerIndex = 0;
                for (int i = 0; i < beanList.size(); i++) {
                    if (beanList.get(i).getUserId().equals(mMatchAddActionBean.getOperationUserId())) {
                        playerIndex = i;
                    }
                    if (mMatchAddActionBean.getToPlayingUserId() != null && beanList.get(i).getUserId().equals(mMatchAddActionBean.getToPlayingUserId())) {
                        lastAsPlayerIndex = i;
                    }
                }
                beanList.remove(playerIndex);

                ChooseDialog<MatchRecordDataListBean> dialog = new ChooseDialog<>(MatchRecordDataActivity.this);
                dialog.setTitle("选择助攻球员");
                dialog.setConfirmText("确定");
                dialog.setCancelText("暂不录助攻");
                dialog.setList(beanList, lastAsPlayerIndex);
                dialog.setOnDialogChooseListener(new ChooseDialog.OnDialogChooseListener<MatchRecordDataListBean>() {
                    @Override
                    public void onChoose(MatchRecordDataListBean matchRecordDataListBean) {
                        mMatchAddActionBean.setToPlayingUserId(matchRecordDataListBean.getUserId());
                        getPresenter().addOrEditAction(mMatchAddActionBean);
                        dialog.dismiss();
                    }

                    @Override
                    public void onDismiss() {
                        getPresenter().addOrEditAction(mMatchAddActionBean);
                    }
                });
                dialog.show();

            } else {
                mMatchAddActionBean.setActionType(MatchActionType.ACTION_TYPE_GOAL_POINT.getType());
                getPresenter().addOrEditAction(mMatchAddActionBean);
            }
            goalTypeDialog.dismiss();
        });
        goalTypeDialog.show();
    }

    private void commitDialog() {
        final TipsDialog tipsDialog = new TipsDialog(this, "比赛提示", "是 否 提 交 数 据", R.style.dialog_style);
        tipsDialog.setConfirmListener(() -> {
            // getPresenter().commitMatchData(matchId, mMatchActionBean.getMasterPoint(), mMatchActionBean.getGuestPoint());
            int matchSegmentType = mMatchActionBean.getMatchStatusType();

            getPresenter().commit(leagueId, matchId, mMatchActionBean.getMasterTeamId(), mMatchActionBean.getGuestTeamId(), matchSegmentType);
            tipsDialog.dismiss();
        });
        tipsDialog.setCancleListener(() -> tipsDialog.dismiss());
        tipsDialog.setCanceledOnTouchOutside(false);
        tipsDialog.show();
    }

    /**
     * 取消弃权
     */
    private void showCancelAbstainTips() {
        final TipsDialog dialog = new TipsDialog(this, "提示", "请确认是否取消弃权", R.style.dialog_style);
        dialog.setCancleListener(dialog::dismiss);
        dialog.setConfirmListener(() -> {
            getPresenter().cancelMatchAbstain(matchId);
            dialog.dismiss();
        });
        dialog.show();
    }

    /**
     * 弃权
     *
     * @param bundle
     */
    private void showAbstainDialog(Bundle bundle) {
        final HotMatchChooseWaiveTeamDialog dialog = new HotMatchChooseWaiveTeamDialog(this, bundle);
        dialog.setOnCancelBtnClickListener(dialog::dismiss);
        dialog.setOnConfirmBtnClickListener(() -> {
            if (!TextUtils.isEmpty(dialog.getChoose())) {
                LogHelper.e("choose " + dialog.getChoose());
            }
            int abstain = 3;
            if ("master".equals(dialog.getChoose())) {
                abstain = 1;
            } else if ("guest".equals(dialog.getChoose())) {
                abstain = 2;
            }
            getPresenter().matchAbstain(leagueId, matchId, abstain);
            dialog.dismiss();
        });
        dialog.show();

    }
    //添加表现

    @Override
    protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                // 返回赛程
                case REQUEST_CODE_SIGNATURE:
                    setResult(RESULT_OK);
                    finish();
                    break;
                case REQUEST_CODE_REPLACE:
                    showLoading();
                    getPresenter().loadMatchActionList(matchId);
                    break;
                //记录点球大战
                case REQUEST_CODE_KICK:
                    showLoading();
                    int masterPoint = data.getIntExtra("masterPoint", -1);
                    int guestPoint = data.getIntExtra("guestPoint", -1);
                    getPresenter().recordPointScore(leagueId, matchId, mMatchActionBean.getMasterTeamId(), masterPoint, mMatchActionBean.getGuestTeamId(), guestPoint);
                    // mMatchActionBean.setMasterPoint(masterPoint);
                    // mMatchActionBean.setGuestPoint(guestPoint);
                    // if (mMatchActionBean.getMasterPoint() > 0 || mMatchActionBean.getGuestPoint() > 0) {
                    //     mViewBinding.tvMasterPoint.setText("(" + mMatchActionBean.getMasterPoint() + ")");
                    //     mViewBinding.tvGuestPoint.setText("(" + mMatchActionBean.getGuestPoint() + ")");
                    // } else {
                    //     mViewBinding.tvGuestPoint.setText("");
                    //     mViewBinding.tvMasterPoint.setText("");
                    // }
                    break;
            }
        }
    }

    @Override
    public void onPointerCaptureChanged(boolean hasCapture) {

    }

    @Override
    public void commitResult() {

    }

    @Override
    public void onError(@NotNull Throwable msg) {

    }
}
