package com.oraclechain.pocketeos.modules.dapp;


import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.liaoinstan.springview.widget.SpringView;
import com.oraclechain.pocketeos.R;
import com.oraclechain.pocketeos.adapter.AdapterManger;
import com.oraclechain.pocketeos.adapter.baseadapter.CommonAdapter;
import com.oraclechain.pocketeos.adapter.baseadapter.wrapper.EmptyWrapper;
import com.oraclechain.pocketeos.app.ActivityUtils;
import com.oraclechain.pocketeos.app.MyApplication;
import com.oraclechain.pocketeos.base.BaseFragment;
import com.oraclechain.pocketeos.bean.DappBean;
import com.oraclechain.pocketeos.bean.DappCommpanyBean;
import com.oraclechain.pocketeos.modules.dapp.dappcommpany.DappCommpanyDetailsActivity;
import com.oraclechain.pocketeos.modules.dapp.dappdetails.DappDetailsActivity;
import com.oraclechain.pocketeos.modules.dapp.paidanswer.paidanswerhome.activity.PaidAnswerActivity;
import com.oraclechain.pocketeos.utils.Utils;
import com.oraclechain.pocketeos.view.AppDefeatHeadView;
import com.oraclechain.pocketeos.view.RecycleViewDivider;
import com.oraclechain.pocketeos.view.RoundImageView;
import com.oraclechain.pocketeos.view.convenientbanner.ConvenientBanner;
import com.oraclechain.pocketeos.view.convenientbanner.adapter.LocalImageHolderView;
import com.oraclechain.pocketeos.view.convenientbanner.holder.CBViewHolderCreator;
import com.oraclechain.pocketeos.view.convenientbanner.listener.OnItemClickListener;

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

import butterknife.BindView;
import butterknife.OnClick;

/**
 * 应用
 */
public class DappFragment extends BaseFragment<DappView, DappPresenter> implements DappView {


    @BindView(R.id.banner)
    ConvenientBanner mBanner;
    @BindView(R.id.recycle_application)
    RecyclerView mRecycleApplication;
    @BindView(R.id.hot_application_img)
    RoundImageView mHotApplicationImg;
    @BindView(R.id.hot_application_name)
    TextView mHotApplicationName;
    @BindView(R.id.hot_application_desc)
    TextView mHotApplicationDesc;
    @BindView(R.id.recycle_bussiness_application)
    RecyclerView mRecycleBussinessApplication;
    @BindView(R.id.hot_application)
    RelativeLayout mHotApplication;
    @BindView(R.id.spring)
    SpringView mSpring;


    private List<DappCommpanyBean.DataBean> mHeaderList = new ArrayList<>(); //头部四个icon
    private List<DappBean.DataBean> mBussinessDappList = new ArrayList<>(); //企业应用列表
    private DappBean.DataBean hotapplication;
    private List<String> ivLsit = new ArrayList<>();//banner图片地址

    private CommonAdapter mHeaderAdapter;
    private EmptyWrapper mBussinessDappAdapter;

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (!hidden && mImmersionBar != null) {
            if (Utils.getSpUtils().getString("loginmode").equals("phone")) {
                mImmersionBar.statusBarDarkFont(true, 0.2f).fitsSystemWindows(true).statusBarColor(R.color.white).init();
            } else {
                mImmersionBar.statusBarDarkFont(false, 0.2f) .fitsSystemWindows(true).statusBarColor(R.color.black_box_color).init();
            }
        }
    }

    @Override
    public void getDappCommpanyDataHttp(final List<DappCommpanyBean.DataBean> dappCommpanyBean) {

        if (dappCommpanyBean.size() != 0 && dappCommpanyBean.size() > 3) {
            mRecycleApplication.setVisibility(View.VISIBLE);
            for (int i = 0; i < 3; i++) {
                ivLsit.add(dappCommpanyBean.get(i).getPublicImage());
            }
            mBanner.setPages(new CBViewHolderCreator() {
                @Override
                public Object createHolder() {
                    return new LocalImageHolderView();
                }
            }, ivLsit).setPageIndicator(new int[]{
                    R.mipmap.feature_point, R.mipmap.feature_point_cur})//设置小圆点
                    .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL);
            mBanner.startTurning(3000);//设置停留时间
            mBanner.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(int position) {
                    Bundle bundle = new Bundle();
                    bundle.putParcelable("bean", dappCommpanyBean.get(position));
                    ActivityUtils.next(getActivity(), DappCommpanyDetailsActivity.class, bundle);
                }
            });

            for (int i = 3; i < dappCommpanyBean.size(); i++) {
                mHeaderList.add(dappCommpanyBean.get(i));
            }
            mHeaderAdapter.notifyDataSetChanged();

        } else {
            for (int i = 0; i < dappCommpanyBean.size(); i++) {
                ivLsit.add(dappCommpanyBean.get(i).getPublicImage());
            }
            mBanner.setPages(new CBViewHolderCreator() {
                @Override
                public Object createHolder() {
                    return new LocalImageHolderView();
                }
            }, ivLsit).setPageIndicator(new int[]{
                    R.mipmap.feature_point, R.mipmap.feature_point_cur})//设置小圆点
                    .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL);
            mBanner.startTurning(3000);//设置停留时间
            mBanner.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(int position) {
                    Bundle bundle = new Bundle();
                    bundle.putParcelable("bean", dappCommpanyBean.get(position));
                    ActivityUtils.next(getActivity(), DappCommpanyDetailsActivity.class, bundle);
                }
            });
            mRecycleApplication.setVisibility(View.GONE);
        }
    }

    @Override
    public void getDappDataHttp(List<DappBean.DataBean> dappBean) {
        mSpring.onFinishFreshAndLoad();
        if (dappBean.size() != 0) {
            hotapplication = dappBean.get(0);
            mHotApplicationDesc.setText(dappBean.get(0).getApplyDetails());
            mHotApplicationName.setText(dappBean.get(0).getApplyName());
            MyApplication.getInstance().showImage(dappBean.get(0).getApplyIcon(), mHotApplicationImg);
            for (int i = 1; i < dappBean.size(); i++) {
                mBussinessDappList.add(dappBean.get(i));
            }
            mBussinessDappAdapter.notifyDataSetChanged();
        }
    }

    @Override
    public void getDataHttpFail(String msg) {
        mSpring.onFinishFreshAndLoad();
        toast(msg);
    }

    @Override
    public DappPresenter initPresenter() {
        return new DappPresenter(getActivity());
    }

    @Override
    protected void initViews(Bundle savedInstanceState) {
        //系统刷新
        mSpring.setHeader(new AppDefeatHeadView(getContext()));
        mSpring.setGive(SpringView.Give.BOTH);
        mSpring.setType(SpringView.Type.FOLLOW);
        mSpring.setListener(new SpringView.OnFreshListener() {
            @Override
            public void onRefresh() {
                mBussinessDappList.clear();
                mHeaderList.clear();
                ivLsit.clear();
                presenter.getData(); // 获取服务器数据
            }

            @Override
            public void onLoadmore() {
                mSpring.onFinishFreshAndLoad();
            }
        });
        GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 4);
        layoutManager.setOrientation(GridLayoutManager.VERTICAL);
        layoutManager.setSmoothScrollbarEnabled(true);
        mRecycleApplication.setLayoutManager(layoutManager);
        mHeaderAdapter = AdapterManger.getDappHeadAdapter(getActivity(), mHeaderList);
        mRecycleApplication.setAdapter(mHeaderAdapter);

        GridLayoutManager layoutManager1 = new GridLayoutManager(getActivity(), 2);
        layoutManager1.setOrientation(GridLayoutManager.VERTICAL);
        layoutManager1.setSmoothScrollbarEnabled(true);
        if (Utils.getSpUtils().getString("loginmode").equals("phone")) {
            mRecycleBussinessApplication.addItemDecoration(new RecycleViewDivider(getContext(), LinearLayoutManager.HORIZONTAL, 1, getResources().getColor(R.color.line)));
            mRecycleBussinessApplication.addItemDecoration(new RecycleViewDivider(getContext(), LinearLayoutManager.VERTICAL, 1, getResources().getColor(R.color.line)));
        } else {
            mRecycleBussinessApplication.addItemDecoration(new RecycleViewDivider(getContext(), LinearLayoutManager.HORIZONTAL, 1, getResources().getColor(R.color.blackbox_line)));
            mRecycleBussinessApplication.addItemDecoration(new RecycleViewDivider(getContext(), LinearLayoutManager.VERTICAL, 1, getResources().getColor(R.color.blackbox_line)));
        }
        mRecycleBussinessApplication.setLayoutManager(layoutManager1);
        mBussinessDappAdapter = new EmptyWrapper(AdapterManger.getDappBussnessAdapter(getActivity(), mBussinessDappList));
        mBussinessDappAdapter.setEmptyView(R.layout.empty_project);
        mRecycleBussinessApplication.setAdapter(mBussinessDappAdapter);
    }

    @Override
    protected void initData() {
        presenter.getData(); // 获取服务器数据
    }

    @Override
    public void initEvent() {

    }

    @Override
    protected void initImmersionBar() {
        super.initImmersionBar();
        if (Utils.getSpUtils().getString("loginmode").equals("phone")) {
            mImmersionBar.statusBarDarkFont(true, 0.2f).fitsSystemWindows(true).statusBarColor(R.color.white).init();
        } else {
            mImmersionBar.statusBarDarkFont(false, 0.2f) .fitsSystemWindows(true).statusBarColor(R.color.black_box_color).init();
        }
    }

    @Override
    protected int getContentViewLayoutID() {
        return R.layout.fragment_application;
    }

    @OnClick(R.id.hot_application)
    public void onViewClicked() {
        if (mHotApplicationName.getText().toString().equals("有问币答")) {
            ActivityUtils.next(getActivity(), PaidAnswerActivity.class);
        } else {
            if (hotapplication!=null) {
                Bundle bundle = new Bundle();
                bundle.putString("title", hotapplication.getApplyName());
                bundle.putString("url", hotapplication.getUrl());
//                bundle.putString("url", "http://47.74.145.111");
//                bundle.putString("url", "http://www.cheerfifa.com");
                ActivityUtils.next(getActivity(), DappDetailsActivity.class, bundle);
            }
        }
    }

}