package com.socks.jiandan.ui.activity;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.internal.MDButton;
import com.socks.jiandan.JDApplication;
import com.socks.jiandan.R;
import com.socks.jiandan.base.BaseActivity;
import com.socks.jiandan.base.ConstantString;
import com.socks.jiandan.net.JDApi;
import com.socks.jiandan.net.parser.Push4FreshCommentParser;
import com.socks.jiandan.net.parser.PushCommentParser;
import com.socks.jiandan.utils.EditTextShakeHelper;
import com.socks.jiandan.utils.SPHelper;
import com.socks.jiandan.utils.TextUtil;
import com.socks.jiandan.utils.ToastHelper;
import com.socks.jiandan.view.InputWatcher;

import java.util.HashMap;

import butterknife.Bind;
import butterknife.ButterKnife;

public class PushCommentActivity extends BaseActivity {

    @Bind(R.id.tv_title)
    TextView tv_title;
    @Bind(R.id.et_content)
    EditText et_content;
    @Bind(R.id.toolbar)
    Toolbar mToolbar;

    private String thread_id;
    private String parent_id;
    private String parent_name;
    private String author_name;
    private String author_email;
    private String message;

    private EditText et_name;
    private EditText et_email;

    private MaterialDialog dialog;

    @Override
    protected void initView(@Nullable Bundle savedInstanceState) {
        setContentView(R.layout.activity_push_comment);
        ButterKnife.bind(this);
        mToolbar.setTitleTextColor(Color.WHITE);
        setSupportActionBar(mToolbar);
        mToolbar.setTitle(R.string.reply);
        mToolbar.setNavigationIcon(R.drawable.ic_actionbar_back);
    }

    @Override
    protected void loadData() {
        parent_name = getIntent().getStringExtra("parent_name");
        tv_title.setText(TextUtil.isNull(parent_name) ? getString(R.string.reply_colon) : getString(R.string.reply_colon) + parent_name);
        //新鲜事中 文章id=当前的thread_id=接口参数中的post_id
        thread_id = getIntent().getStringExtra("thread_id");
        parent_id = getIntent().getStringExtra("parent_id");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_push_comment, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            case R.id.action_push:

                message = et_content.getText().toString();

                if (TextUtil.isNull(message)) {
                    ToastHelper.Short(ConstantString.INPUT_TOO_SHORT);
                    new EditTextShakeHelper(this).shake(et_content);
                    return true;
                }


                dialog = new MaterialDialog.Builder(this)
                        .title(R.string.reply_as_guess)
                        .backgroundColor(getResources().getColor(JDApplication.COLOR_OF_DIALOG))
                        .contentColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
                        .positiveColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
                        .negativeColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
                        .titleColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
                        .customView(R.layout.dialog_commentotar_info, true)
                        .positiveText(R.string.confirm)
                        .negativeText(android.R.string.cancel)
                        .onPositive((dialog1, which) -> {
                            author_name = et_name.getText().toString();
                            author_email = et_email.getText().toString();

                            SPHelper.setString("author_name", author_name);
                            SPHelper.setString("author_email", author_email);

                            //新鲜事评论get
                            if (thread_id.length() == 5) {
                                String url;
                                //回复别人 和首次评论
                                if (!TextUtil.isNull(parent_id) && !TextUtil.isNull
                                        (parent_name)) {
                                    url = Push4FreshCommentParser.getRequestURL(thread_id, parent_id, parent_name, author_name, author_email, message);
                                } else {
                                    url = Push4FreshCommentParser.getRequestURLNoParent(thread_id, author_name, author_email, message);
                                }

                                JDApi.pushComment4FreshNews(url).subscribe(aBoolean -> {
                                    dialog1.dismiss();
                                    if (aBoolean) {
                                        setResult(RESULT_OK);
                                        finish();
                                    } else {
                                        ToastHelper.Short(ConstantString.COMMENT_FAILED);
                                    }
                                }, e -> {
                                    ToastHelper.Short(ConstantString.COMMENT_FAILED);
                                    dialog1.dismiss();
                                });
                            } else {
                                //多说的评论post
                                HashMap<String, String> requestParams;
                                //回复别人 和首次评论
                                if (!TextUtil.isNull(parent_id)) {
                                    requestParams = PushCommentParser.getRequestParams(thread_id, parent_id,
                                            author_name, author_email, message);
                                } else {
                                    requestParams = PushCommentParser.getRequestParamsNoParent(thread_id, author_name, author_email, message);
                                }

                                JDApi.pushComment4DuoShuo(requestParams).subscribe(aBoolean -> {
                                    dialog1.dismiss();
                                    if (aBoolean) {
                                        setResult(RESULT_OK);
                                        finish();
                                    } else {
                                        ToastHelper.Short(ConstantString.COMMENT_FAILED);
                                    }
                                }, e -> {
                                    ToastHelper.Short(ConstantString.COMMENT_FAILED);
                                    dialog1.dismiss();
                                });
                            }
                        }).build();

                View customView = dialog.getCustomView();

                assert customView != null;
                et_name = (EditText) customView.findViewById(R.id.et_name);
                et_email = (EditText) customView.findViewById(R.id.et_email);

                MDButton positiveAction = dialog.getActionButton(DialogAction.POSITIVE);
                InputWatcher watcher = new InputWatcher(et_name, et_email, positiveAction);
                et_name.addTextChangedListener(watcher);
                et_email.addTextChangedListener(watcher);

                et_name.setText(SPHelper.getString("author_name"));
                et_email.setText(SPHelper.getString("author_email"));
                dialog.show();
                return true;
        }

        return super.onOptionsItemSelected(item);
    }

}