package com.isdzulqor.booklook;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.isdzulqor.booklook.constant.Constanta;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import im.delight.android.ddp.Meteor;
import im.delight.android.ddp.MeteorCallback;
import im.delight.android.ddp.ResultListener;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;

public class SignUpActivity extends AppCompatActivity implements MeteorCallback {
    private Meteor mMeteor;
    public static final String TAG = "Meteor";
    Button signUp;
    private EditText etUsername, etPassword, etRepassword, etEmail;
    private String userName, email, password, rePassword;

    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);

        etUsername = (EditText) findViewById(R.id.etUsername);
        etEmail = (EditText) findViewById(R.id.etEmail);
        etPassword = (EditText) findViewById(R.id.etPassword);
        etRepassword = (EditText) findViewById(R.id.etRePassword);
        signUp = (Button) findViewById(R.id.sign_up_button_to_main);

        // enable logging of internal events for the library
        Meteor.setLoggingEnabled(true);

        // create a new instance (protocol version in second parameter is optional)
        mMeteor = new Meteor(getApplicationContext(), "ws://192.168.56.1:3000");

        // register the callback that will handle events and receive messages
        mMeteor.setCallback(this);
    }


    @Override
    public void onConnect(boolean b) {
        Log.d(TAG, "onConnect");

        userName = etUsername.getText().toString();
        email = etEmail.getText().toString();
        password = etPassword.getText().toString();
        rePassword = etRepassword.getText().toString();

        signUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(userName.isEmpty() || email.isEmpty() || password.isEmpty() || !rePassword.equals(password))
                    Toast.makeText(getApplicationContext(),"Maaf Inputan salah",Toast.LENGTH_SHORT);
                else{
                    // insert data into a collection
                    Map<String, Object> signUpValues = new HashMap<String, Object>();
                    signUpValues.put("username", userName);
                    signUpValues.put("email", email);
                    signUpValues.put("password", password);
                    signUpValues.put("timestamp", new Date());
                    mMeteor.insert("UsersBookLook", signUpValues, new ResultListener() {
                        @Override
                        public void onSuccess(String s) {
                            Toast.makeText(getApplicationContext(), "Success Sign Up", Toast.LENGTH_SHORT);
                            Intent toMainActivity = new Intent(getApplicationContext(), MainActivity.class);
                        }

                        @Override
                        public void onError(String s, String s1, String s2) {
                            Toast.makeText(getApplicationContext(), "Error Cok", Toast.LENGTH_SHORT);
                        }
                    });
                }
            }
        });
    }

    @Override
    public void onDisconnect(int i, String s) {
        Log.d(TAG, "onDisconnect");
    }

    @Override
    public void onDataAdded(String s, String s1, String s2) {
        Log.d(TAG, "onDataAdded");
    }

    @Override
    public void onDataChanged(String s, String s1, String s2, String s3) {
        Log.d(TAG, "onDataChanged");
    }

    @Override
    public void onDataRemoved(String s, String s1) {
        Log.d(TAG, "onDataRemoved");
    }

    @Override
    public void onException(Exception e) {
        Log.d(TAG, "Exception");
        e.printStackTrace();
    }
}
