package com.mm.android.deviceaddmodule.p_inputsn;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.mm.android.deviceaddmodule.R;
import com.mm.android.deviceaddmodule.base.BaseDevAddFragment;
import com.mm.android.deviceaddmodule.contract.DispatchContract;
import com.mm.android.deviceaddmodule.helper.DeviceAddHelper;
import com.mm.android.deviceaddmodule.helper.PageNavigationHelper;
import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration;
import com.mm.android.deviceaddmodule.mobilecommon.utils.PreferencesHelper;
import com.mm.android.deviceaddmodule.presenter.DispatchPresenter;
import com.mm.android.deviceaddmodule.views.AddBoxTipDialog;

public class DeviceDispatchFragment extends BaseDevAddFragment implements DispatchContract.View {

    private DispatchContract.Presenter mPresenter;
    private boolean isFirst = true;

    public static DeviceDispatchFragment newInstance() {
        DeviceDispatchFragment fragment = new DeviceDispatchFragment();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    protected void initView(View view) {

    }

    @Override
    protected void initData() {
        mPresenter = new DispatchPresenter(this);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_device_dispatch, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        if (isFirst || DeviceDispatchHelper.isReAdd()) {
            mPresenter.dispatchResult();
            DeviceDispatchHelper.reset();
        } else {
            if (getActivity() != null) getActivity().finish();
        }
        isFirst = false;
    }

    @Override
    public void goTypeChoosePage() {
        PageNavigationHelper.gotoTypeChoosePage(this, false);
    }

    @Override
    public void goNotSupportBindTipPage() {
        PageNavigationHelper.gotoErrorTipPage(this, DeviceAddHelper.ErrorCode.DEVICE_BIND_ERROR_NOT_SUPPORT_TO_BIND, false);
    }

    @Override
    public void goOtherUserBindTipPage() {
        PageNavigationHelper.gotoErrorTipPage(this, DeviceAddHelper.ErrorCode.INPUT_SN_ERROR_BIND_BY_OTHER, false);
    }

    @Override
    public void showAddBoxTip() {
        if (!PreferencesHelper.getInstance(getActivity()).getBoolean(
                LCConfiguration.SHOW_ADD_BOX_TIP)) {
            AddBoxTipDialog a = new AddBoxTipDialog();
            a.setDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    goCloudConnectPage();
                }
            });
            a.show(getActivity().getSupportFragmentManager(), a.getClass().getName());
        } else {
            goCloudConnectPage();
        }
    }

    @Override
    public void goCloudConnectPage() {
        PageNavigationHelper.gotoCloudConnectPage(this, false);
    }

    @Override
    public void goDeviceLoginPage() {
        PageNavigationHelper.gotoDevLoginPage(this, false);
    }

    @Override
    public void goSecCodePage() {
        PageNavigationHelper.gotoDevSecCodePage(this, false);
    }

    @Override
    public void goDeviceBindPage() {
        PageNavigationHelper.gotoDeviceBindPage(this, false);
    }

    @Override
    public void goIMEIInputPage() {
        PageNavigationHelper.gotoIMEIInputPage(this, false);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        DeviceDispatchHelper.reset();
    }
}