package com.oo.eye.activity;

import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.app.baselibrary.base.common.BaseActivity;
import com.app.baselibrary.commonUtil.CheckUtil;
import com.app.baselibrary.commonUtil.ToastUtil;
import com.oo.eye.EyeConfig;
import com.oo.eye.R;
import com.oo.eye.adapter.MorePeopleAdapter;
import com.oo.eye.adapter.PopuAdapter;
import com.oo.eye.bean.ClassBean;
import com.oo.eye.bean.GradeBean;
import com.oo.eye.bean.PopuBean;
import com.oo.eye.bean.SchoolBean;
import com.oo.eye.bean.SearchParamBean;
import com.oo.eye.bean.StudentBean;
import com.oo.eye.net.EyeDataManager;
import com.oo.eye.utils.EditViewUtils;
import com.oo.seex.netlibrary.net.response.OldResponseImpl;
import com.oo.seex.netlibrary.net.response.RxCallback;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import rx.android.schedulers.AndroidSchedulers;

/**
 * Date : 2018/8/28.
 * Author:  cxh
 */

public class MorePeopleTestActivity extends BaseActivity {
    @BindView(R.id.selete_tv)
    TextView mSeleteTv;
    @BindView(R.id.selete_iv)
    ImageView mSeleteIv;
    @BindView(R.id.selete_lay)
    LinearLayout mSeleteLay;
    @BindView(R.id.selete1_tv)
    TextView mSelete1Tv;
    @BindView(R.id.selete1_iv)
    ImageView mSelete1Iv;
    @BindView(R.id.selete1_lay)
    LinearLayout mSelete1Lay;
    @BindView(R.id.do_search)
    TextView mDoSearch;
    @BindView(R.id.ddd)
    LinearLayout mDdd;
    @BindView(R.id.begin_test)
    TextView mBeginTest;
    @BindView(R.id.recycle_view)
    RecyclerView mRecycleView;
    @BindView(R.id.selete_area_tv)
    TextView mSeleteAreaTv;
    @BindView(R.id.selete_area_iv)
    ImageView mSeleteAreaIv;
    @BindView(R.id.selete_area_lay)
    LinearLayout mSeleteAreaLay;
    @BindView(R.id.key_test)
    EditText mKeyTest;
    @BindView(R.id.progress)
    RelativeLayout mProgress;
    @BindView(R.id.text_empty)
    RelativeLayout mTextEmpty;
    private List<StudentBean> mStudentBeans;
    private MorePeopleAdapter mPeopleAdapter;
    private SearchParamBean mSearchParamBean = new SearchParamBean();
    private SchoolBean mSchoolBean;
    private List<PopuBean> mBeanArrayList = new ArrayList<>();//未测试  已测试
    private int popuPosition;//1学校,2未测试，3小组
    private PopuAdapter mPopuAdapter;
    private List<ClassBean> mClassBeans;//选择学校的所有小组
    private boolean isAll = true;//是否是全部学校
    private List<PopuBean> mAreaList = new ArrayList<>();
    private List<PopuBean> mClassList = new ArrayList<>();

    @Override
    protected int getLayoutId() {
        return R.layout.activity_morepeople;
    }

    @Override
    protected void init() {
        EditViewUtils.setEditTextInhibitInputSpeChat(mKeyTest);
        mRecycleView.setLayoutManager(new LinearLayoutManager(this));
        mStudentBeans = new ArrayList<>();
        mPeopleAdapter = new MorePeopleAdapter(mStudentBeans, this);
        mRecycleView.setAdapter(mPeopleAdapter);
        PopuBean popuBean = new PopuBean();
        popuBean.setName("全部");
        popuBean.setChick(true);
        mBeanArrayList.add(popuBean);
        PopuBean popuBean1 = new PopuBean();
        popuBean1.setName("已测试");
        mBeanArrayList.add(popuBean1);
        PopuBean popuBean2 = new PopuBean();
        popuBean2.setName("未测试");
        mBeanArrayList.add(popuBean2);
        mSearchParamBean.setSchoolId(EyeConfig.TEST_SCHOOL_ID);
        search();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ButterKnife.bind(this);
    }

    @OnClick({R.id.back_iv, R.id.selete_area_lay, R.id.selete_lay, R.id.selete1_lay, R.id.do_search, R.id.begin_test})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.back_iv:
                finish();
                break;
            case R.id.selete_area_lay:
                popuPosition = 1;
                if (!CheckUtil.isEmpty(mAreaList)) {
                    showPopWindow(mAreaList);
                } else if (!CheckUtil.isNull(mSchoolBean)) {
                    setAreaData();
                } else {
                    EyeDataManager.getInstance().getSchoolInfo(EyeConfig.TEST_SCHOOL_ID)
                            .observeOn(AndroidSchedulers.mainThread())
                            .subscribe(new RxCallback<OldResponseImpl<SchoolBean>>() {
                                @Override
                                protected void onSuccess(OldResponseImpl<SchoolBean> schoolBeanOldResponse) {
                                    if (schoolBeanOldResponse.getResultData() != null) {
                                        mSchoolBean = schoolBeanOldResponse.getResultData();
                                        if (!CheckUtil.isNull(mSchoolBean)) {
                                            setAreaData();
                                        } else {
                                            ToastUtil.showMessage("暂无数据");
                                        }
                                    }
                                }

                                @Override
                                protected void onError(int errorCode, String errorMessage) {
                                    ToastUtil.showLongMessage(errorMessage);
                                }
                            });
                }
                break;
            case R.id.selete_lay://未测试 已测试
                popuPosition = 2;
                showPopWindow(mBeanArrayList);
                break;
            case R.id.selete1_lay:
                popuPosition = 3;
                if (!CheckUtil.isEmpty(mClassList)) {
                    showPopWindow(mClassList);
                } else if (!CheckUtil.isNull(mClassBeans)) {
                    setClassData();
                } else {
                    EyeDataManager.getInstance().getSchoolInfo(EyeConfig.TEST_SCHOOL_ID)
                            .observeOn(AndroidSchedulers.mainThread())
                            .subscribe(new RxCallback<OldResponseImpl<SchoolBean>>() {
                                @Override
                                protected void onSuccess(OldResponseImpl<SchoolBean> schoolBeanOldResponse) {
                                    if (schoolBeanOldResponse.getResultData() != null) {
                                        mSchoolBean = schoolBeanOldResponse.getResultData();
                                        if (!CheckUtil.isNull(mSchoolBean)) {
                                            setClassData();
                                        } else {
                                            ToastUtil.showMessage("暂无数据");
                                        }
                                    }
                                }

                                @Override
                                protected void onError(int errorCode, String errorMessage) {
                                    ToastUtil.showLongMessage(errorMessage);
                                }
                            });
                }
                break;
            case R.id.do_search:
                mSearchParamBean.setStudentId(mKeyTest.getText().toString().trim());
                search();
                break;
            case R.id.begin_test:
                List<StudentBean> beanList = new ArrayList<>();
                List<StudentBean> list = mPeopleAdapter.getList();
                for (StudentBean bean : list) {
                    if (bean.isChick()) {
                        beanList.add(bean);
                    }
                }
                if (!CheckUtil.isEmpty(beanList)) {
                    EyeConfig.getInstance().setStudents(beanList);
                    Intent intent = new Intent(this, TestListActivity.class);
                    startActivity(intent);
                } else {
                    ToastUtil.showLongMessage("请选择测试人员");
                }
                break;
        }
    }

    private void setAreaData() {
        List<GradeBean> gradeBeans = mSchoolBean.getGradeList();
        if (!CheckUtil.isEmpty(gradeBeans)) {
            List<PopuBean> popuBeans = new ArrayList<>();
            PopuBean all = new PopuBean();
            all.setName("全部学校");
            all.setChick(true);
            popuBeans.add(all);
            for (GradeBean gradeBean : gradeBeans) {
                PopuBean popuBean = new PopuBean();
                popuBean.setName(gradeBean.getName());
                popuBean.setClassBeans(gradeBean.getClassList());
                popuBeans.add(popuBean);
            }
            mTextEmpty.setVisibility(View.GONE);
            mAreaList = popuBeans;
            showPopWindow(popuBeans);
        } else {
            mTextEmpty.setVisibility(View.VISIBLE);
            ToastUtil.showMessage("暂无数据");
        }
    }

    private void setClassData() {
        if (!CheckUtil.isEmpty(mClassBeans)) {
            List<PopuBean> popuBeans = new ArrayList<>();
            PopuBean all = new PopuBean();
            all.setName("全部小组");
            all.setClassId("");
            all.setChick(true);
            popuBeans.add(all);
            for (ClassBean gradeBean : mClassBeans) {
                PopuBean popuBean = new PopuBean();
                popuBean.setName(gradeBean.getClasses());
                popuBean.setClassId(gradeBean.getId());
                popuBeans.add(popuBean);
            }
            mClassList = popuBeans;
            mTextEmpty.setVisibility(View.GONE);
            showPopWindow(popuBeans);
        } else {
            if (!isAll) {
                ToastUtil.showMessage("暂无数据");
                mTextEmpty.setVisibility(View.VISIBLE);
            }
        }
    }

    private void showPopWindow(List<PopuBean> popuBeans) {
        LinearLayout view = mSeleteLay;
        switch (popuPosition) {
            case 1:
                view = mSeleteAreaLay;
                break;
            case 2:
                view = mSeleteLay;
                break;
            case 3:
                view = mSelete1Lay;
                break;
        }
        try {
            View conview = View.inflate(this, R.layout.popu_list, null);
            PopupWindow popupWindow = new PopupWindow(conview, RelativeLayout.LayoutParams.WRAP_CONTENT,
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
            popupWindow.setFocusable(true);
            popupWindow.setOutsideTouchable(true);
            ColorDrawable cd = new ColorDrawable(0x00ffffff);// 背景颜色全透明
            popupWindow.setBackgroundDrawable(cd);
            ListView listView = (ListView) conview.findViewById(R.id.list_view);
            mPopuAdapter = new PopuAdapter(this, popuBeans);
            listView.setAdapter(mPopuAdapter);
            int[] location = new int[2];
            view.getLocationOnScreen(location);
//            popupWindow.setAnimationStyle(R.style.style_pop_animation);// 动画效果必须放在showAsDropDown()方法上边，否则无效
            conview.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
            int xoff = -(conview.getMeasuredWidth() / 2 - view.getWidth() / 2);
            popupWindow.showAsDropDown(view, xoff, 0);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    itemClick(position);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private void itemClick(int position) {
        List<PopuBean> popuBeans = mPopuAdapter.getBeanList();
        for (PopuBean popuBean : popuBeans) {
            popuBean.setChick(false);
        }
        PopuBean popuBean = popuBeans.get(position);
        popuBean.setChick(true);
        mPopuAdapter.notifyDataSetChanged();
        switch (popuPosition) {
            case 1://学校
                isAll = position == 0 ? true : false;
                mClassBeans = popuBean.getClassBeans();
                mSeleteAreaTv.setText(popuBean.getName());
                if (popuBean.getName().equals("全部学校")) {
                    mSearchParamBean.setGrade("");
                } else {
                    mSearchParamBean.setGrade(popuBean.getName());
                }
                mSearchParamBean.setClassId("");
//                mSearchParamBean.setTestStatus("all");
                mSelete1Tv.setText("全部小组");
//                mSeleteTv.setText("全部");
                break;
            case 2://测试
                mSeleteTv.setText(popuBean.getName());
                String test = "all";
                // 全部：all，已测试：tested，未测试：untested
                switch (position) {
                    case 0:
                        test = "all";
                        break;
                    case 1:
                        test = "tested";
                        break;
                    case 2:
                        test = "untested";
                        break;
                }
                mSearchParamBean.setTestStatus(test);
                break;
            case 3://小组
                mSearchParamBean.setClassId(popuBean.getClassId());
                mSelete1Tv.setText(popuBean.getName());
                break;
        }
        mSearchParamBean.setStudentId("");
        search();
    }

    /**
     * 搜索
     */
    private void search() {
        mProgress.setVisibility(View.VISIBLE);
        EyeDataManager.getInstance().getStudents(mSearchParamBean.getParams())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new RxCallback<OldResponseImpl<List<StudentBean>>>() {
                    @Override
                    protected void onSuccess(OldResponseImpl<List<StudentBean>> listOldResponse) {
                        if (listOldResponse != null && listOldResponse.getData() != null) {
                            mProgress.setVisibility(View.GONE);
                            mPeopleAdapter.clear();
                            mPeopleAdapter.appendToListAndNotify(listOldResponse.getData());
                            mTextEmpty.setVisibility(View.GONE);
                        } else {
                            ToastUtil.showMessage("暂无数据");
                            mTextEmpty.setVisibility(View.VISIBLE);
                        }
                    }

                    @Override
                    protected void onError(int errorCode, String errorMessage) {
                        mProgress.setVisibility(View.GONE);
                        ToastUtil.showMessage(errorMessage);
                    }
                });
    }
}
