package com.yidianling.course.courseNew.sections;

import android.content.Context;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.yidianling.course.R;
import com.yidianling.course.bean.CourseHomeBodyBean;
import com.yidianling.course.courseNew.LinkUrlRouterProtocol;
import com.yidianling.course.courseNew.viewholder.FooterMoreViewHolder;
import com.yidianling.course.coursePlay.moudle.Course;
import com.yidianling.course.model.QulityCourseBean;
import com.yidianling.ydlcommon.adapter.section.Section;
import com.yidianling.ydlcommon.utils.UMEventUtils;
import com.yidianling.ydlcommon.utils.actionutil.ActionCountUtils;
import com.yidianling.ydlcommon.utils.actionutil.BIConstants;

/**
 * Created by Jim on 2018/6/25 0025.
 */

public class QulityCourseSection extends Section {

    private final int IDENTIFY_TYPE = QULITY_COURSE_SECTION;
    private QulityCourseBean data;
    private int totalNum = 0;

    private static final int FREE = 0;
    private static final int PAY = 1;
    public static int type = PAY;

    public void setType(int type) {
        this.type = type;
        initTotlaNum();
        adapter.notifyDataSetChanged();
    }


    private RecyclerView.Adapter adapter;
    private Context context;

    public QulityCourseSection(Context context, QulityCourseBean data, RecyclerView.Adapter adapter) {
        super(R.layout.item_head_quality_course, R.layout.item_more, R.layout.item_course_list);
        this.context = context;
        this.adapter = adapter;
        this.data = data;
        type = PAY;
        initTotlaNum();
    }

    private void initTotlaNum() {
    }

    @Override
    public void bindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof FooterMoreViewHolder) {
            ((FooterMoreViewHolder) holder).titleView.setText(data.footer.title);
            ((FooterMoreViewHolder) holder).linearLayout.setOnClickListener(v -> {

                LinkUrlRouterProtocol.jump(context, data.footer.linkUrl + "?childId=" + (type + 1));

                ActionCountUtils.Companion.count(BIConstants.CourseHomeEvent.POSITION_COURSE_HOME_EXCELLENT_COURSES_MORE_CLICK);
            });
        } else if (holder instanceof QulityCourseHeaderVH) {
            ((QulityCourseHeaderVH) holder).tv_title.setText(data.head.title);
            ((QulityCourseHeaderVH) holder).tv_tab1.setText(data.head.tab1Name);
            ((QulityCourseHeaderVH) holder).tv_tab2.setText(data.head.tab2Name);
            if (type == PAY) {
                ((QulityCourseHeaderVH) holder).tv_tab2.setTextColor(ContextCompat.getColor(holder.itemView.getContext(), R.color.green_34cd65));
                ((QulityCourseHeaderVH) holder).iv_tab2.setVisibility(View.VISIBLE);
                ((QulityCourseHeaderVH) holder).tv_tab1.setTextColor(ContextCompat.getColor(holder.itemView.getContext(), R.color.grey_909599));
                ((QulityCourseHeaderVH) holder).iv_tab1.setVisibility(View.INVISIBLE);
            } else {
                ((QulityCourseHeaderVH) holder).tv_tab1.setTextColor(ContextCompat.getColor(holder.itemView.getContext(), R.color.green_34cd65));
                ((QulityCourseHeaderVH) holder).iv_tab1.setVisibility(View.VISIBLE);
                ((QulityCourseHeaderVH) holder).tv_tab2.setTextColor(ContextCompat.getColor(holder.itemView.getContext(), R.color.grey_909599));
                ((QulityCourseHeaderVH) holder).iv_tab2.setVisibility(View.INVISIBLE);
            }
        } else if (holder instanceof ClassifiedCourseSection.CourseItemViewHolder) {
            ClassifiedCourseSection.CourseItemViewHolder realHolder = (ClassifiedCourseSection.CourseItemViewHolder) holder;
//            if ((data.head != null && position == 1) || (data.head == null && position == 0)) {
//                realHolder.hideDividerLine();
//            } else {
//                realHolder.tv_line_bottom.setVisibility(View.VISIBLE);
//            }
            CourseHomeBodyBean course = data.body.get(type).get(position - 1);
            Course courseBean = switchData(course);
            realHolder.courseItemNewView.setData(courseBean);

            holder.itemView.setOnClickListener(view -> {

                LinkUrlRouterProtocol.jump(context, courseBean.linkUrl);

                if (type == PAY) {
                    ActionCountUtils.Companion.count(BIConstants.CourseHomeEvent.POSITION_COURSE_HOME_EXCELLENT_COURSES_PAY_XXX_CLICK + courseBean.id + "_click");
                } else {
                    ActionCountUtils.Companion.count(BIConstants.CourseHomeEvent.POSITION_COURSE_HOME_EXCELLENT_COURSES_FREE_XXX_CLICK + courseBean.id + "_click");
                }
            });
        }
    }


    /**
     * 这里是个坑
     *
     * @param bean
     * @return
     */
    private Course switchData(CourseHomeBodyBean bean) {
        Course course = new Course();
        course.id = bean.id;
        course.title = bean.title;
        course.hostListPic = bean.hostListPic;
        course.courseHostInfo = bean.courseHostInfo;
        course.pic = bean.pic;
        course.image = bean.image;
        course.hostInfo = bean.hostInfo;
        course.subCourseNum = bean.subCourseNum;
        course.doctorName = bean.doctorName;
        course.joinNum = bean.joinNum;
        course.isInvite = bean.isInvite;
        course.applyFee = bean.applyFee;
        course.recommend = bean.recommend;
        course.newCourse = bean.newCourse;
        course.demoType = bean.demoType;
        course.originalApplyFee = bean.originalApplyFee;
        course.isBuy = bean.isBuy;
        course.demoFile = bean.demoFile;
        course.promotionApplyFee = bean.promotionApplyFee;
        course.courseType = bean.courseType;
        course.isPromotion = bean.isPromotion;
        course.linkUrl = bean.linkUrl;
        return course;
    }

    @Override
    public int getTotalDataNum() {
        totalNum = 0;
        if (data.head != null) {
            totalNum++;
        }
        if (data.footer != null) {
            totalNum++;
        }
        if (data.body != null) {
            totalNum += data.body.get(type).size();
        }
        return totalNum;
    }

    @Override
    public int getItemViewType(int position) {
        if (isHeadType(position)) {
            return combineType(IDENTIFY_TYPE, TYPE_HEADER);
        } else if (isFooterType(position)) {
            return combineType(IDENTIFY_TYPE, TYPE_FOOTER);
        } else {
            return combineType(IDENTIFY_TYPE, TYPE_BODY);
        }
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == combineType(IDENTIFY_TYPE, TYPE_HEADER)) {
            View view = LayoutInflater.from(parent.getContext()).inflate(headerResourceId, parent, false);
            return new QulityCourseHeaderVH(this, view);
        } else if (viewType == combineType(IDENTIFY_TYPE, TYPE_FOOTER)) {
            View view = LayoutInflater.from(parent.getContext()).inflate(footerResourceId, parent, false);
            return new FooterMoreViewHolder(view);
        } else {
            View view = LayoutInflater.from(parent.getContext()).inflate(itemResourceId, parent, false);
            return new ClassifiedCourseSection.CourseItemViewHolder(view);
        }
    }

    @Override
    public boolean isBelongTo(int viewType) {
        return String.valueOf(viewType).startsWith(String.valueOf(IDENTIFY_TYPE));
    }

    @Override
    public boolean isHeadType(int position) {
        return data.head != null && position == 0;
    }


    @Override
    public boolean isFooterType(int position) {
        return data.footer != null && position == totalNum - 1;
    }

    @Override
    public int getSectionId() {
        return IDENTIFY_TYPE;
    }


    static class QulityCourseHeaderVH extends RecyclerView.ViewHolder {

        public TextView tv_title, tv_tab1, tv_tab2;
        public ImageView iv_tab1, iv_tab2;

        public QulityCourseHeaderVH(QulityCourseSection section, View itemView) {
            super(itemView);
            tv_title = itemView.findViewById(R.id.tv_title);
            tv_tab1 = itemView.findViewById(R.id.tv_tab1);
            iv_tab1 = itemView.findViewById(R.id.iv_tab1);
            tv_tab2 = itemView.findViewById(R.id.tv_tab2);
            iv_tab2 = itemView.findViewById(R.id.iv_tab2);
            itemView.findViewById(R.id.ll_tab1).setOnClickListener(v -> {

                tv_tab1.setTextColor(ContextCompat.getColor(itemView.getContext(), R.color.green_34cd65));
                iv_tab1.setVisibility(View.VISIBLE);
                tv_tab2.setTextColor(ContextCompat.getColor(itemView.getContext(), R.color.grey_909599));
                iv_tab2.setVisibility(View.INVISIBLE);
                section.setType(FREE);
            });
            itemView.findViewById(R.id.ll_tab2).setOnClickListener(v -> {

                tv_tab2.setTextColor(ContextCompat.getColor(itemView.getContext(), R.color.green_34cd65));
                iv_tab2.setVisibility(View.VISIBLE);
                tv_tab1.setTextColor(ContextCompat.getColor(itemView.getContext(), R.color.grey_909599));
                iv_tab1.setVisibility(View.INVISIBLE);
                section.setType(PAY);
            });
        }
    }

}